aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Android.bp180
-rw-r--r--CHANGES3055
-rw-r--r--METADATA8
-rw-r--r--Makefile.am4
-rw-r--r--RELEASE-NOTES401
-rw-r--r--acinclude.m444
-rwxr-xr-xandroidconfigure4
-rwxr-xr-xconfig.guess487
-rwxr-xr-xconfig.sub203
-rwxr-xr-xconfigure564
-rwxr-xr-xconfigure.ac198
-rw-r--r--docs/ALTSVC.md59
-rw-r--r--docs/CIPHERS.md1
-rw-r--r--docs/FAQ31
-rw-r--r--docs/GOVERNANCE.md4
-rw-r--r--docs/HTTP-COOKIES.md11
-rw-r--r--docs/INSTALL.md6
-rw-r--r--docs/INTERNALS.md3
-rw-r--r--docs/KNOWN_BUGS25
-rw-r--r--docs/MANUAL1058
-rw-r--r--docs/Makefile.am4
-rw-r--r--docs/ROADMAP.md60
-rw-r--r--docs/THANKS25
-rw-r--r--docs/TODO44
-rw-r--r--docs/cmdline-opts/Makefile.inc1
-rw-r--r--docs/cmdline-opts/alt-svc.d17
-rw-r--r--docs/cmdline-opts/cookie.d2
-rw-r--r--docs/cmdline-opts/max-redirs.d5
-rw-r--r--docs/cmdline-opts/proxy-user.d6
-rw-r--r--docs/cmdline-opts/proxytunnel.d9
-rw-r--r--docs/cmdline-opts/user.d6
-rw-r--r--docs/curl-config.12
-rw-r--r--docs/curl.144
-rw-r--r--docs/examples/10-at-a-time.c99
-rw-r--r--docs/examples/Makefile.am9
-rw-r--r--docs/examples/cacertinmem.c148
-rw-r--r--docs/examples/crawler.c2
-rw-r--r--docs/examples/ephiperfifo.c24
-rw-r--r--docs/examples/evhiperfifo.c7
-rw-r--r--docs/examples/externalsocket.c10
-rw-r--r--docs/examples/ftpget.c4
-rw-r--r--docs/examples/ftpsget.c4
-rw-r--r--docs/examples/ghiper.c14
-rw-r--r--docs/examples/hiperfifo.c20
-rw-r--r--docs/examples/http2-download.c73
-rw-r--r--docs/examples/http2-serverpush.c19
-rw-r--r--docs/examples/http2-upload.c76
-rw-r--r--docs/examples/httpcustomheader.c4
-rw-r--r--docs/examples/postinmemory.c6
-rw-r--r--docs/examples/sftpget.c4
-rw-r--r--docs/examples/sftpuploadresume.c4
-rw-r--r--docs/libcurl/curl_easy_cleanup.32
-rw-r--r--docs/libcurl/curl_easy_duphandle.312
-rw-r--r--docs/libcurl/curl_easy_escape.32
-rw-r--r--docs/libcurl/curl_easy_getinfo.32
-rw-r--r--docs/libcurl/curl_easy_init.32
-rw-r--r--docs/libcurl/curl_easy_pause.32
-rw-r--r--docs/libcurl/curl_easy_perform.32
-rw-r--r--docs/libcurl/curl_easy_recv.32
-rw-r--r--docs/libcurl/curl_easy_reset.32
-rw-r--r--docs/libcurl/curl_easy_send.32
-rw-r--r--docs/libcurl/curl_easy_setopt.38
-rw-r--r--docs/libcurl/curl_easy_strerror.32
-rw-r--r--docs/libcurl/curl_easy_unescape.32
-rw-r--r--docs/libcurl/curl_escape.32
-rw-r--r--docs/libcurl/curl_formadd.32
-rw-r--r--docs/libcurl/curl_formfree.32
-rw-r--r--docs/libcurl/curl_formget.32
-rw-r--r--docs/libcurl/curl_free.32
-rw-r--r--docs/libcurl/curl_getdate.32
-rw-r--r--docs/libcurl/curl_getenv.32
-rw-r--r--docs/libcurl/curl_global_cleanup.32
-rw-r--r--docs/libcurl/curl_global_init.32
-rw-r--r--docs/libcurl/curl_global_init_mem.32
-rw-r--r--docs/libcurl/curl_global_sslset.32
-rw-r--r--docs/libcurl/curl_mime_addpart.32
-rw-r--r--docs/libcurl/curl_mime_data.32
-rw-r--r--docs/libcurl/curl_mime_data_cb.32
-rw-r--r--docs/libcurl/curl_mime_encoder.32
-rw-r--r--docs/libcurl/curl_mime_filedata.32
-rw-r--r--docs/libcurl/curl_mime_filename.32
-rw-r--r--docs/libcurl/curl_mime_free.32
-rw-r--r--docs/libcurl/curl_mime_headers.32
-rw-r--r--docs/libcurl/curl_mime_init.32
-rw-r--r--docs/libcurl/curl_mime_name.32
-rw-r--r--docs/libcurl/curl_mime_subparts.32
-rw-r--r--docs/libcurl/curl_mime_type.32
-rw-r--r--docs/libcurl/curl_mprintf.32
-rw-r--r--docs/libcurl/curl_multi_add_handle.32
-rw-r--r--docs/libcurl/curl_multi_assign.32
-rw-r--r--docs/libcurl/curl_multi_cleanup.32
-rw-r--r--docs/libcurl/curl_multi_fdset.32
-rw-r--r--docs/libcurl/curl_multi_info_read.32
-rw-r--r--docs/libcurl/curl_multi_init.32
-rw-r--r--docs/libcurl/curl_multi_perform.32
-rw-r--r--docs/libcurl/curl_multi_remove_handle.37
-rw-r--r--docs/libcurl/curl_multi_setopt.32
-rw-r--r--docs/libcurl/curl_multi_socket.32
-rw-r--r--docs/libcurl/curl_multi_socket_action.32
-rw-r--r--docs/libcurl/curl_multi_strerror.32
-rw-r--r--docs/libcurl/curl_multi_timeout.32
-rw-r--r--docs/libcurl/curl_multi_wait.32
-rw-r--r--docs/libcurl/curl_share_cleanup.32
-rw-r--r--docs/libcurl/curl_share_init.32
-rw-r--r--docs/libcurl/curl_share_setopt.32
-rw-r--r--docs/libcurl/curl_share_strerror.32
-rw-r--r--docs/libcurl/curl_slist_append.32
-rw-r--r--docs/libcurl/curl_slist_free_all.32
-rw-r--r--docs/libcurl/curl_strequal.32
-rw-r--r--docs/libcurl/curl_unescape.32
-rw-r--r--docs/libcurl/curl_url.312
-rw-r--r--docs/libcurl/curl_url_cleanup.32
-rw-r--r--docs/libcurl/curl_url_dup.32
-rw-r--r--docs/libcurl/curl_url_get.32
-rw-r--r--docs/libcurl/curl_url_set.32
-rw-r--r--docs/libcurl/curl_version.32
-rw-r--r--docs/libcurl/curl_version_info.32
-rw-r--r--docs/libcurl/libcurl-easy.32
-rw-r--r--docs/libcurl/libcurl-env.32
-rw-r--r--docs/libcurl/libcurl-errors.32
-rw-r--r--docs/libcurl/libcurl-multi.32
-rw-r--r--docs/libcurl/libcurl-security.32
-rw-r--r--docs/libcurl/libcurl-share.32
-rw-r--r--docs/libcurl/libcurl-symbols.339
-rw-r--r--docs/libcurl/libcurl-thread.32
-rw-r--r--docs/libcurl/libcurl-tutorial.32
-rw-r--r--docs/libcurl/libcurl-url.32
-rw-r--r--docs/libcurl/libcurl.32
-rw-r--r--docs/libcurl/opts/CURLINFO_ACTIVESOCKET.32
-rw-r--r--docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.32
-rw-r--r--docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_CERTINFO.32
-rw-r--r--docs/libcurl/opts/CURLINFO_CONDITION_UNMET.32
-rw-r--r--docs/libcurl/opts/CURLINFO_CONNECT_TIME.32
-rw-r--r--docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.32
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.32
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_TYPE.32
-rw-r--r--docs/libcurl/opts/CURLINFO_COOKIELIST.32
-rw-r--r--docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.32
-rw-r--r--docs/libcurl/opts/CURLINFO_FILETIME.32
-rw-r--r--docs/libcurl/opts/CURLINFO_FILETIME_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.32
-rw-r--r--docs/libcurl/opts/CURLINFO_HEADER_SIZE.32
-rw-r--r--docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.32
-rw-r--r--docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.32
-rw-r--r--docs/libcurl/opts/CURLINFO_HTTP_VERSION.32
-rw-r--r--docs/libcurl/opts/CURLINFO_LASTSOCKET.32
-rw-r--r--docs/libcurl/opts/CURLINFO_LOCAL_IP.32
-rw-r--r--docs/libcurl/opts/CURLINFO_LOCAL_PORT.32
-rw-r--r--docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.32
-rw-r--r--docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_NUM_CONNECTS.32
-rw-r--r--docs/libcurl/opts/CURLINFO_OS_ERRNO.32
-rw-r--r--docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.32
-rw-r--r--docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_PRIMARY_IP.32
-rw-r--r--docs/libcurl/opts/CURLINFO_PRIMARY_PORT.32
-rw-r--r--docs/libcurl/opts/CURLINFO_PRIVATE.32
-rw-r--r--docs/libcurl/opts/CURLINFO_PROTOCOL.32
-rw-r--r--docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.32
-rw-r--r--docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.32
-rw-r--r--docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.32
-rw-r--r--docs/libcurl/opts/CURLINFO_REDIRECT_TIME.32
-rw-r--r--docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_REDIRECT_URL.32
-rw-r--r--docs/libcurl/opts/CURLINFO_REQUEST_SIZE.32
-rw-r--r--docs/libcurl/opts/CURLINFO_RESPONSE_CODE.32
-rw-r--r--docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.32
-rw-r--r--docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.32
-rw-r--r--docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.32
-rw-r--r--docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SCHEME.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SSL_ENGINES.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.32
-rw-r--r--docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.32
-rw-r--r--docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_TLS_SESSION.32
-rw-r--r--docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.32
-rw-r--r--docs/libcurl/opts/CURLINFO_TOTAL_TIME.32
-rw-r--r--docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAXCONNECTS.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING.34
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PUSHDATA.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_SOCKETDATA.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_TIMERDATA.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.318
-rw-r--r--docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.32
-rw-r--r--docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.32
-rw-r--r--docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_ALTSVC.362
-rw-r--r--docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.393
-rw-r--r--docs/libcurl/opts/CURLOPT_APPEND.32
-rw-r--r--docs/libcurl/opts/CURLOPT_AUTOREFERER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_BUFFERSIZE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CAINFO.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CAPATH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CERTINFO.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_DATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECT_ONLY.37
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECT_TO.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIEFILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIEJAR.32
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIELIST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIESESSION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CRLF.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CRLFILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CURLU.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DEBUGDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DIRLISTONLY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_INTERFACE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_SERVERS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DOH_URL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_EGDSOCKET.32
-rw-r--r--docs/libcurl/opts/CURLOPT_ERRORBUFFER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FAILONERROR.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FILETIME.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FNMATCH_DATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FORBID_REUSE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FRESH_CONNECT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTPPORT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTPSSLAUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_PRET.32
-rw-r--r--docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADERDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADERFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADEROPT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP200ALIASES.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPAUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPGET.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPHEADER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPPOST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_VERSION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_INFILESIZE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERFACE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_IOCTLDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_IPRESOLVE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_ISSUERCERT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.32
-rw-r--r--docs/libcurl/opts/CURLOPT_KEYPASSWD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_KRBLEVEL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_LOCALPORT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_AUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_FROM.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_RCPT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXCONNECTS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXFILESIZE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXREDIRS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MIMEPOST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NETRC.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NETRC_FILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NOBODY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NOPROGRESS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NOPROXY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NOSIGNAL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PASSWORD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PATH_AS_IS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PIPEWAIT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PORT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTQUOTE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTREDIR.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PREQUOTE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PRE_PROXY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PRIVATE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROGRESSDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROTOCOLS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYAUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYHEADER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYPASSWORD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYPORT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYTYPE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYUSERNAME.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYUSERPWD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_CAINFO.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_CAPATH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PUT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_QUOTE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RANDOM_FILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RANGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_READDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_READFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_REFERER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_REQUEST_TARGET.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RESOLVE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RESUME_FROM.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_REQUEST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SASL_IR.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SEEKDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SEEKFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SERVICE_NAME.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SHARE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKOPTDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KEYDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLCERT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLCERTTYPE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLENGINE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLKEY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLKEYTYPE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLVERSION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_FALSESTART.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_OPTIONS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_STDERR.32
-rw-r--r--docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.32
-rw-r--r--docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_NODELAY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TELNETOPTIONS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMECONDITION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEOUT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEOUT_MS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEVALUE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TRAILERDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TRANSFERTEXT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.32
-rw-r--r--docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_UPLOAD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_URL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_USERAGENT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_USERNAME.32
-rw-r--r--docs/libcurl/opts/CURLOPT_USERPWD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_USE_SSL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_VERBOSE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_WILDCARDMATCH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_WRITEDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_WRITEFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_XFERINFODATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.32
-rw-r--r--docs/libcurl/opts/Makefile.inc2
-rw-r--r--docs/libcurl/symbols-in-versions20
-rw-r--r--include/curl/Makefile.am9
-rw-r--r--include/curl/curl.h31
-rw-r--r--include/curl/curlver.h12
-rw-r--r--include/curl/typecheck-gcc.h3
-rw-r--r--lib/Makefile.am9
-rw-r--r--lib/Makefile.inc11
-rw-r--r--lib/altsvc.c571
-rw-r--r--lib/altsvc.h77
-rw-r--r--lib/amigaos.c32
-rw-r--r--lib/amigaos.h10
-rw-r--r--lib/asyn-thread.c68
-rw-r--r--lib/config-os400.h5
-rw-r--r--lib/config-vxworks.h5
-rw-r--r--lib/conncache.c13
-rw-r--r--lib/connect.c72
-rw-r--r--lib/connect.h9
-rw-r--r--lib/cookie.c59
-rw-r--r--lib/cookie.h11
-rw-r--r--lib/curl_addrinfo.c32
-rw-r--r--lib/curl_addrinfo.h13
-rw-r--r--lib/curl_config.h24
-rw-r--r--lib/curl_config.h.in24
-rw-r--r--lib/curl_endian.c10
-rw-r--r--lib/curl_fnmatch.c6
-rw-r--r--lib/curl_gssapi.h16
-rw-r--r--lib/curl_ntlm_core.c31
-rw-r--r--lib/curl_ntlm_wb.c15
-rw-r--r--lib/curl_path.c6
-rw-r--r--lib/curl_rtmp.c9
-rw-r--r--lib/curl_setup.h23
-rw-r--r--lib/dict.c11
-rw-r--r--lib/doh.c71
-rw-r--r--lib/easy.c81
-rw-r--r--lib/file.c4
-rw-r--r--lib/ftp.c58
-rw-r--r--lib/ftp.h3
-rw-r--r--lib/getinfo.c4
-rw-r--r--lib/gopher.c12
-rw-r--r--lib/hostasyn.c8
-rw-r--r--lib/hostip.c103
-rw-r--r--lib/hostip.h12
-rw-r--r--lib/hostip6.c9
-rw-r--r--lib/http.c246
-rw-r--r--lib/http.h6
-rw-r--r--lib/http2.c48
-rw-r--r--lib/http2.h3
-rw-r--r--lib/http_negotiate.c109
-rw-r--r--lib/http_negotiate.h4
-rw-r--r--lib/imap.c8
-rw-r--r--lib/ldap.c4
-rw-r--r--lib/libcurl.plist6
-rw-r--r--lib/md5.c4
-rw-r--r--lib/memdebug.c145
-rw-r--r--lib/memdebug.h123
-rw-r--r--lib/mime.c14
-rw-r--r--lib/mime.h7
-rw-r--r--lib/multi.c155
-rw-r--r--lib/non-ascii.c4
-rw-r--r--lib/openldap.c4
-rw-r--r--lib/pop3.c2
-rw-r--r--lib/rand.h7
-rw-r--r--lib/rtsp.c22
-rw-r--r--lib/security.c4
-rw-r--r--lib/sendf.c8
-rw-r--r--lib/setopt.c46
-rw-r--r--lib/smtp.c4
-rw-r--r--lib/socks.c4
-rw-r--r--lib/socks_sspi.c5
-rw-r--r--lib/ssh-libssh.c25
-rw-r--r--lib/ssh.c35
-rw-r--r--lib/strerror.c20
-rw-r--r--lib/strerror.h11
-rw-r--r--lib/system_win32.c82
-rw-r--r--lib/system_win32.h6
-rw-r--r--lib/telnet.c4
-rw-r--r--lib/tftp.c30
-rw-r--r--lib/timeval.c24
-rw-r--r--lib/transfer.c51
-rw-r--r--lib/transfer.h20
-rw-r--r--lib/url.c136
-rw-r--r--lib/urlapi.c38
-rw-r--r--lib/urldata.h530
-rw-r--r--lib/vauth/spnego_gssapi.c7
-rw-r--r--lib/vauth/spnego_sspi.c8
-rw-r--r--lib/version.c9
-rw-r--r--lib/vtls/cyassl.c21
-rw-r--r--lib/vtls/gtls.c7
-rw-r--r--lib/vtls/mbedtls.c8
-rw-r--r--lib/vtls/openssl.c23
-rw-r--r--lib/vtls/schannel.c196
-rw-r--r--lib/vtls/schannel_verify.c45
-rw-r--r--lib/vtls/sectransp.c (renamed from lib/vtls/darwinssl.c)158
-rw-r--r--lib/vtls/sectransp.h (renamed from lib/vtls/darwinssl.h)14
-rw-r--r--lib/vtls/vtls.c20
-rw-r--r--lib/vtls/vtls.h8
-rw-r--r--lib/warnless.c40
-rw-r--r--lib/warnless.h6
-rw-r--r--lib/x509asn1.c250
-rw-r--r--local-configure.patch10
-rw-r--r--m4/curl-functions.m4136
-rw-r--r--packages/OS400/README.OS4001
-rw-r--r--packages/OS400/ccsidcurl.c8
-rw-r--r--packages/OS400/curl.inc.in23
-rw-r--r--projects/Windows/VC10/lib/libcurl.vcxproj6
-rw-r--r--projects/Windows/VC11/lib/libcurl.vcxproj6
-rw-r--r--projects/Windows/VC12/lib/libcurl.vcxproj6
-rw-r--r--projects/Windows/VC14/lib/libcurl.vcxproj6
-rw-r--r--projects/Windows/VC15/lib/libcurl.vcxproj6
-rw-r--r--projects/Windows/VC6/lib/libcurl.dsp24
-rw-r--r--projects/Windows/VC7.1/lib/libcurl.vcproj18
-rw-r--r--projects/Windows/VC7/lib/libcurl.vcproj18
-rw-r--r--projects/Windows/VC8/lib/libcurl.vcproj24
-rw-r--r--projects/Windows/VC9/lib/libcurl.vcproj24
-rw-r--r--scripts/Makefile.am22
-rwxr-xr-xscripts/completion.pl134
-rwxr-xr-xscripts/zsh.pl89
-rw-r--r--src/CMakeLists.txt7
-rw-r--r--src/Makefile.am41
-rwxr-xr-xsrc/mkhelp.pl23
-rw-r--r--src/tool_cb_wrt.c7
-rw-r--r--src/tool_cfgable.c11
-rw-r--r--src/tool_cfgable.h8
-rw-r--r--src/tool_convert.c12
-rw-r--r--src/tool_formparse.c719
-rw-r--r--src/tool_formparse.h46
-rw-r--r--src/tool_getparam.c29
-rw-r--r--src/tool_getpass.c6
-rw-r--r--src/tool_help.c31
-rw-r--r--src/tool_hugehelp.c11009
-rw-r--r--src/tool_main.c6
-rw-r--r--src/tool_operate.c22
-rw-r--r--src/tool_setopt.c300
-rw-r--r--src/tool_setopt.h4
-rw-r--r--src/tool_urlglob.c4
-rw-r--r--src/tool_version.h2
-rw-r--r--src/tool_xattr.c12
-rw-r--r--tests/FILEFORMAT1
-rw-r--r--tests/data/Makefile.inc12
-rw-r--r--tests/data/test10262
-rw-r--r--tests/data/test10341
-rw-r--r--tests/data/test10462
-rw-r--r--tests/data/test10482
-rw-r--r--tests/data/test10502
-rw-r--r--tests/data/test10822
-rw-r--r--tests/data/test10832
-rw-r--r--tests/data/test10975
-rw-r--r--tests/data/test11332
-rw-r--r--tests/data/test11492
-rw-r--r--tests/data/test11561
-rw-r--r--tests/data/test11601
-rw-r--r--tests/data/test12622
-rw-r--r--tests/data/test12632
-rw-r--r--tests/data/test12913
-rw-r--r--tests/data/test13071
-rw-r--r--tests/data/test14042
-rw-r--r--tests/data/test1425bin1726 -> 1726 bytes
-rw-r--r--tests/data/test1426bin1663 -> 1663 bytes
-rw-r--r--tests/data/test14492
-rw-r--r--tests/data/test14552
-rw-r--r--tests/data/test14564
-rw-r--r--tests/data/test14573
-rw-r--r--tests/data/test15064
-rw-r--r--tests/data/test154134
-rw-r--r--tests/data/test156120
-rw-r--r--tests/data/test165458
-rw-r--r--tests/data/test190560
-rw-r--r--tests/data/test205622
-rw-r--r--tests/data/test205724
-rw-r--r--tests/data/test3272
-rw-r--r--tests/data/test33165
-rw-r--r--tests/data/test35557
-rw-r--r--tests/data/test35670
-rw-r--r--tests/data/test5063
-rw-r--r--tests/data/test5782
-rw-r--r--tests/data/test5971
-rw-r--r--tests/data/test6584
-rw-r--r--tests/data/test65954
-rw-r--r--tests/data/test81
-rw-r--r--tests/libtest/Makefile.am9
-rw-r--r--tests/libtest/Makefile.inc17
-rw-r--r--tests/libtest/first.c6
-rw-r--r--tests/libtest/lib1537.c4
-rw-r--r--tests/libtest/lib1541.c151
-rw-r--r--tests/libtest/lib1555.c8
-rw-r--r--tests/libtest/lib1900.c4
-rw-r--r--tests/libtest/lib1905.c93
-rw-r--r--tests/libtest/lib556.c4
-rw-r--r--tests/libtest/lib597.c104
-rw-r--r--tests/libtest/lib659.c75
-rw-r--r--tests/libtest/stub_gssapi.c18
-rw-r--r--tests/runtests.12
-rwxr-xr-xtests/runtests.pl82
-rw-r--r--tests/server/Makefile.am9
-rw-r--r--tests/testcurl.12
-rw-r--r--tests/unit/Makefile.am9
-rw-r--r--tests/unit/Makefile.inc5
-rw-r--r--tests/unit/unit1307.c31
-rw-r--r--tests/unit/unit1607.c10
-rw-r--r--tests/unit/unit1608.c5
-rw-r--r--tests/unit/unit1609.c10
-rw-r--r--tests/unit/unit1650.c4
-rw-r--r--tests/unit/unit1651.c4
-rw-r--r--tests/unit/unit1654.c124
678 files changed, 13128 insertions, 13683 deletions
diff --git a/Android.bp b/Android.bp
index 01d14635..52f45908 100644
--- a/Android.bp
+++ b/Android.bp
@@ -59,137 +59,17 @@ cc_library {
cflags: [
"-DBUILDING_LIBCURL",
],
+ exclude_srcs: [
+ "curl_path.c",
+ "nwlib.c",
+ "psl.c",
+ "ssh-libssh.c",
+ "vtls/mesalink.c",
+ "vtls/schannel_verify.c",
+ "vtls/sectransp.c",
+ ],
srcs:[
- "lib/amigaos.c",
- "lib/asyn-ares.c",
- "lib/asyn-thread.c",
- "lib/base64.c",
- "lib/conncache.c",
- "lib/connect.c",
- "lib/content_encoding.c",
- "lib/cookie.c",
- "lib/curl_addrinfo.c",
- "lib/curl_ctype.c",
- "lib/curl_des.c",
- "lib/curl_endian.c",
- "lib/curl_fnmatch.c",
- "lib/curl_gethostname.c",
- "lib/curl_gssapi.c",
- "lib/curl_memrchr.c",
- "lib/curl_multibyte.c",
- "lib/curl_ntlm_core.c",
- "lib/curl_ntlm_wb.c",
- "lib/curl_range.c",
- "lib/curl_rtmp.c",
- "lib/curl_sasl.c",
- "lib/curl_sspi.c",
- "lib/curl_threads.c",
- "lib/dict.c",
- "lib/doh.c",
- "lib/dotdot.c",
- "lib/easy.c",
- "lib/escape.c",
- "lib/file.c",
- "lib/fileinfo.c",
- "lib/formdata.c",
- "lib/ftp.c",
- "lib/ftplistparser.c",
- "lib/getenv.c",
- "lib/getinfo.c",
- "lib/gopher.c",
- "lib/hash.c",
- "lib/hmac.c",
- "lib/hostasyn.c",
- "lib/hostcheck.c",
- "lib/hostip.c",
- "lib/hostip4.c",
- "lib/hostip6.c",
- "lib/hostsyn.c",
- "lib/http.c",
- "lib/http2.c",
- "lib/http_chunks.c",
- "lib/http_digest.c",
- "lib/http_negotiate.c",
- "lib/http_ntlm.c",
- "lib/http_proxy.c",
- "lib/idn_win32.c",
- "lib/if2ip.c",
- "lib/imap.c",
- "lib/inet_ntop.c",
- "lib/inet_pton.c",
- "lib/krb5.c",
- "lib/ldap.c",
- "lib/llist.c",
- "lib/md4.c",
- "lib/md5.c",
- "lib/memdebug.c",
- "lib/mime.c",
- "lib/mprintf.c",
- "lib/multi.c",
- "lib/netrc.c",
- "lib/non-ascii.c",
- "lib/nonblock.c",
- "lib/openldap.c",
- "lib/parsedate.c",
- "lib/pingpong.c",
- "lib/pipeline.c",
- "lib/pop3.c",
- "lib/progress.c",
- "lib/rand.c",
- "lib/rtsp.c",
- "lib/security.c",
- "lib/select.c",
- "lib/sendf.c",
- "lib/setopt.c",
- "lib/sha256.c",
- "lib/share.c",
- "lib/slist.c",
- "lib/smb.c",
- "lib/smtp.c",
- "lib/socks.c",
- "lib/socks_gssapi.c",
- "lib/socks_sspi.c",
- "lib/speedcheck.c",
- "lib/splay.c",
- "lib/ssh.c",
- "lib/strcase.c",
- "lib/strdup.c",
- "lib/strerror.c",
- "lib/strtok.c",
- "lib/strtoofft.c",
- "lib/system_win32.c",
- "lib/telnet.c",
- "lib/tftp.c",
- "lib/timeval.c",
- "lib/transfer.c",
- "lib/url.c",
- "lib/urlapi.c",
- "lib/vauth/cleartext.c",
- "lib/vauth/cram.c",
- "lib/vauth/digest.c",
- "lib/vauth/digest_sspi.c",
- "lib/vauth/krb5_gssapi.c",
- "lib/vauth/krb5_sspi.c",
- "lib/vauth/ntlm.c",
- "lib/vauth/ntlm_sspi.c",
- "lib/vauth/oauth2.c",
- "lib/vauth/spnego_gssapi.c",
- "lib/vauth/spnego_sspi.c",
- "lib/vauth/vauth.c",
- "lib/version.c",
- "lib/vtls/cyassl.c",
- "lib/vtls/gskit.c",
- "lib/vtls/gtls.c",
- "lib/vtls/mbedtls.c",
- "lib/vtls/nss.c",
- "lib/vtls/openssl.c",
- "lib/vtls/polarssl.c",
- "lib/vtls/polarssl_threadlock.c",
- "lib/vtls/schannel.c",
- "lib/vtls/vtls.c",
- "lib/warnless.c",
- "lib/wildcard.c",
- "lib/x509asn1.c",
+ "lib/**/*.c",
],
shared_libs: [
"libcrypto",
@@ -211,45 +91,7 @@ cc_binary {
name: "curl",
defaults: ["curl_common_defaults"],
srcs: [
- "src/slist_wc.c",
- "src/tool_binmode.c",
- "src/tool_bname.c",
- "src/tool_cb_dbg.c",
- "src/tool_cb_hdr.c",
- "src/tool_cb_prg.c",
- "src/tool_cb_rea.c",
- "src/tool_cb_see.c",
- "src/tool_cb_wrt.c",
- "src/tool_cfgable.c",
- "src/tool_convert.c",
- "src/tool_dirhie.c",
- "src/tool_doswin.c",
- "src/tool_easysrc.c",
- "src/tool_filetime.c",
- "src/tool_formparse.c",
- "src/tool_getparam.c",
- "src/tool_getpass.c",
- "src/tool_help.c",
- "src/tool_helpers.c",
- "src/tool_homedir.c",
- "src/tool_hugehelp.c",
- "src/tool_libinfo.c",
- "src/tool_main.c",
- "src/tool_metalink.c",
- "src/tool_msgs.c",
- "src/tool_operate.c",
- "src/tool_operhlp.c",
- "src/tool_panykey.c",
- "src/tool_paramhlp.c",
- "src/tool_parsecfg.c",
- "src/tool_setopt.c",
- "src/tool_sleep.c",
- "src/tool_strdup.c",
- "src/tool_urlglob.c",
- "src/tool_util.c",
- "src/tool_vms.c",
- "src/tool_writeout.c",
- "src/tool_xattr.c",
+ "src/*.c",
],
shared_libs: [
"libcrypto",
diff --git a/CHANGES b/CHANGES
index b03c6666..b924571d 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,1665 @@
Changelog
+Version 7.64.1 (27 Mar 2019)
+
+Daniel Stenberg (27 Mar 2019)
+- RELEASE: 7.64.1
+
+- Revert "ntlm: remove USE_WIN32_CRYPTO check to get USE_NTLM2SESSION set"
+
+ This reverts commit 9130ead9fcabdb6b8fbdb37c0b38be2d326adb00.
+
+ Fixes #3708
+
+- [Christian Schmitz brought this change]
+
+ ntlm: remove USE_WIN32_CRYPTO check to get USE_NTLM2SESSION set
+
+ Closes #3704
+
+Jay Satiro (26 Mar 2019)
+- tool_cb_wrt: fix writing to Windows null device NUL
+
+ - Improve console detection.
+
+ Prior to this change WriteConsole could be called to write to a handle
+ that may not be a console, which would cause an error. This issue is
+ limited to character devices that are not also consoles such as the null
+ device NUL.
+
+ Bug: https://github.com/curl/curl/issues/3175#issuecomment-439068724
+ Reported-by: Gisle Vanem
+
+- CURLMOPT_PIPELINING.3: fix typo
+
+Daniel Stenberg (25 Mar 2019)
+- TODO: config file parsing
+
+ Closes #3698
+
+Jay Satiro (24 Mar 2019)
+- os400: Disable Alt-Svc by default since it's experimental
+
+ Follow-up to 520f0b4 which added Alt-Svc support and enabled it by
+ default for OS400. Since the feature is experimental, it should be
+ disabled by default.
+
+ Ref: https://github.com/curl/curl/commit/520f0b4#commitcomment-32792332
+ Ref: https://curl.haxx.se/mail/lib-2019-02/0008.html
+
+ Closes https://github.com/curl/curl/pull/3688
+
+Dan Fandrich (24 Mar 2019)
+- tests: Fixed XML validation errors in some test files.
+
+- tests: Fix some incorrect precheck error messages.
+
+ [ci skip]
+
+Daniel Stenberg (22 Mar 2019)
+- curl_url.3: this is not experimental anymore
+
+- travis: bump the used wolfSSL version to 4.0.0
+
+ Test 311 is now fine, leaving only 313 (CRL) disabled.
+
+ Test 313 details can be found here:
+ https://github.com/wolfSSL/wolfssl/issues/1546
+
+ Closes #3697
+
+Daniel Gustafsson (22 Mar 2019)
+- lib: Fix typos in comments
+
+David Woodhouse (20 Mar 2019)
+- openssl: if cert type is ENG and no key specified, key is ENG too
+
+ Fixes #3692
+ Closes #3692
+
+Daniel Stenberg (20 Mar 2019)
+- sectransp: tvOS 11 is required for ALPN support
+
+ Reported-by: nianxuejie on github
+ Assisted-by: Nick Zitzmann
+ Assisted-by: Jay Satiro
+ Fixes #3689
+ Closes #3690
+
+- test1541: threaded connection sharing
+
+ The threaded-shared-conn.c example turned into test case. Only works if
+ pthread was detected.
+
+ An attempt to detect future regressions such as e3a53e3efb942a5
+
+ Closes #3687
+
+Patrick Monnerat (17 Mar 2019)
+- os400: alt-svc support.
+
+ Although experimental, enable it in the platform config file.
+ Upgrade ILE/RPG binding.
+
+Daniel Stenberg (17 Mar 2019)
+- conncache: use conn->data to know if a transfer owns it
+
+ - make sure an already "owned" connection isn't returned unless
+ multiplexed.
+
+ - clear ->data when returning the connection to the cache again
+
+ Regression since 7.62.0 (probably in commit 1b76c38904f0)
+
+ Bug: https://curl.haxx.se/mail/lib-2019-03/0064.html
+
+ Closes #3686
+
+- RELEASE-NOTES: synced
+
+- [Chris Young brought this change]
+
+ configure: add --with-amissl
+
+ AmiSSL is an Amiga native library which provides a wrapper over OpenSSL.
+ It also requires all programs using it to use bsdsocket.library
+ directly, rather than accessing socket functions through clib, which
+ libcurl was not necessarily doing previously. Configure will now check
+ for the headers and ensure they are included if found.
+
+ Closes #3677
+
+- [Chris Young brought this change]
+
+ vtls: rename some of the SSL functions
+
+ ... in the SSL structure as AmiSSL is using macros for the socket API
+ functions.
+
+- [Chris Young brought this change]
+
+ tool_getpass: termios.h is present on AmigaOS 3, but no tcgetattr/tcsetattr
+
+- [Chris Young brought this change]
+
+ tool_operate: build on AmigaOS
+
+- makefile: make checksrc and hugefile commands "silent"
+
+ ... to match the style already used for compiling, linking
+ etc. Acknowledges 'make V=1' to enable verbose.
+
+ Closes #3681
+
+- curl.1: --user and --proxy-user are hidden from ps output
+
+ Suggested-by: Eric Curtin
+ Improved-by: Dan Fandrich
+ Ref: #3680
+
+ Closes #3683
+
+- curl.1: mark the argument to --cookie as <data|filename>
+
+ From a discussion in #3676
+
+ Suggested-by: Tim Rühsen
+
+ Closes #3682
+
+Dan Fandrich (14 Mar 2019)
+- fuzzer: Only clone the latest fuzzer code, for speed.
+
+Daniel Stenberg (14 Mar 2019)
+- [Dominik Hölzl brought this change]
+
+ Negotiate: fix for HTTP POST with Negotiate
+
+ * Adjusted unit tests 2056, 2057
+ * do not generally close connections with CURLAUTH_NEGOTIATE after every request
+ * moved negotiatedata from UrlState to connectdata
+ * Added stream rewind logic for CURLAUTH_NEGOTIATE
+ * introduced negotiatedata::GSS_AUTHDONE and negotiatedata::GSS_AUTHSUCC
+ * Consider authproblem state for CURLAUTH_NEGOTIATE
+ * Consider reuse_forbid for CURLAUTH_NEGOTIATE
+ * moved and adjusted negotiate authentication state handling from
+ output_auth_headers into Curl_output_negotiate
+ * Curl_output_negotiate: ensure auth done is always set
+ * Curl_output_negotiate: Set auth done also if result code is
+ GSS_S_CONTINUE_NEEDED/SEC_I_CONTINUE_NEEDED as this result code may
+ also indicate the last challenge request (only works with disabled
+ Expect: 100-continue and CURLOPT_KEEP_SENDING_ON_ERROR -> 1)
+ * Consider "Persistent-Auth" header, detect if not present;
+ Reset/Cleanup negotiate after authentication if no persistent
+ authentication
+ * apply changes introduced with #2546 for negotiate rewind logic
+
+ Fixes #1261
+ Closes #1975
+
+- [Marc Schlatter brought this change]
+
+ http: send payload when (proxy) authentication is done
+
+ The check that prevents payload from sending in case of authentication
+ doesn't check properly if the authentication is done or not.
+
+ They're cases where the proxy respond "200 OK" before sending
+ authentication challenge. This change takes care of that.
+
+ Fixes #2431
+ Closes #3669
+
+- file: fix "Checking if unsigned variable 'readcount' is less than zero."
+
+ Pointed out by codacy
+
+ Closes #3672
+
+- memdebug: log pointer before freeing its data
+
+ Coverity warned for two potentional "Use after free" cases. Both are false
+ positives because the memory wasn't used, it was only the actual pointer
+ value that was logged.
+
+ The fix still changes the order of execution to avoid the warnings.
+
+ Coverity CID 1443033 and 1443034
+
+ Closes #3671
+
+- RELEASE-NOTES: synced
+
+Marcel Raad (12 Mar 2019)
+- travis: actually use updated compiler versions
+
+ For the Linux builds, GCC 8 and 7 and clang 7 were installed, but the
+ new GCC versions were only used for the coverage build and for building
+ nghttp2, while the new clang version was not used at all.
+
+ BoringSSL needs to use the default GCC as it respects CC, but not CXX,
+ so it would otherwise pass gcc 8 options to g++ 4.8 and fail.
+
+ Also remove GCC 7, it's not needed anymore.
+
+ Ref: https://docs.travis-ci.com/user/languages/c/#c11c11-and-beyond-and-toolchain-versioning
+
+ Closes https://github.com/curl/curl/pull/3670
+
+- travis: update clang to version 7
+
+ Closes https://github.com/curl/curl/pull/3670
+
+Jay Satiro (11 Mar 2019)
+- [Andre Guibert de Bruet brought this change]
+
+ examples/externalsocket: add missing close socket calls
+
+ .. and for Windows also call WSACleanup since we call WSAStartup.
+
+ The example is to demonstrate handling the socket independently of
+ libcurl. In this case libcurl is not responsible for creating, opening
+ or closing the socket, it is handled by the application (our example).
+
+ Fixes https://github.com/curl/curl/pull/3663
+
+Daniel Stenberg (11 Mar 2019)
+- multi: removed unused code for request retries
+
+ This code was once used for the non multi-interface using code path, but
+ ever since easy_perform was turned into a wrapper around the multi
+ interface, this code path never runs.
+
+ Closes #3666
+
+Jay Satiro (11 Mar 2019)
+- doh: inherit some SSL options from user's easy handle
+
+ - Inherit SSL options for the doh handle but not SSL client certs,
+ SSL ALPN/NPN, SSL engine, SSL version, SSL issuer cert,
+ SSL pinned public key, SSL ciphers, SSL id cache setting,
+ SSL kerberos or SSL gss-api settings.
+
+ - Fix inheritance of verbose setting.
+
+ - Inherit NOSIGNAL.
+
+ There is no way for the user to set options for the doh (DNS-over-HTTPS)
+ handles and instead we inherit some options from the user's easy handle.
+
+ My thinking for the SSL options not inherited is they are most likely
+ not intended by the user for the DOH transfer. I did inherit insecure
+ because I think that should still be in control of the user.
+
+ Prior to this change doh did not work for me because CAINFO was not
+ inherited. Also verbose was set always which AFAICT was a bug (#3660).
+
+ Fixes https://github.com/curl/curl/issues/3660
+ Closes https://github.com/curl/curl/pull/3661
+
+Daniel Stenberg (9 Mar 2019)
+- test331: verify set-cookie for dotless host name
+
+ Reproduced bug #3649
+ Closes #3659
+
+- Revert "cookies: extend domain checks to non psl builds"
+
+ This reverts commit 3773de378d48b06c09931e44dca4d274d0bfdce0.
+
+ Regression shipped in 7.64.0
+ Fixes #3649
+
+- memdebug: make debug-specific functions use curl_dbg_ prefix
+
+ To not "collide" or use up the regular curl_ name space. Also makes them
+ easier to detect in helper scripts.
+
+ Closes #3656
+
+- cmdline-opts/proxytunnel.d: the option tunnnels all protocols
+
+ Clarify the language and simplify.
+
+ Reported-by: Daniel Lublin
+ Closes #3658
+
+- KNOWN_BUGS: Client cert (MTLS) issues with Schannel
+
+ Closes #3145
+
+- ROADMAP: updated to some more current things to work on
+
+- tests: fix multiple may be used uninitialized warnings
+
+- RELEASE-NOTES: synced
+
+- source: fix two 'nread' may be used uninitialized warnings
+
+ Both seem to be false positives but we don't like warnings.
+
+ Closes #3646
+
+- gopher: remove check for path == NULL
+
+ Since it can't be NULL and it makes Coverity believe we lack proper NULL
+ checks. Verified by test 659, landed in commit 15401fa886b.
+
+ Pointed out by Coverity CID 1442746.
+
+ Assisted-by: Dan Fandrich
+ Fixes #3617
+ Closes #3642
+
+- examples: only include <curl/curl.h>
+
+ That's the only public curl header we should encourage use of.
+
+ Reviewed-by: Marcel Raad
+ Closes #3645
+
+- ssh: loop the state machine if not done and not blocking
+
+ If the state machine isn't complete, didn't fail and it didn't return
+ due to blocking it can just as well loop again.
+
+ This addresses the problem with SFTP directory listings where we would
+ otherwise return back to the parent and as the multi state machine
+ doesn't have any code for using CURLM_CALL_MULTI_PERFORM for as long the
+ doing phase isn't complete, it would return out when in reality there
+ was more data to deal with.
+
+ Fixes #3506
+ Closes #3644
+
+Jay Satiro (5 Mar 2019)
+- multi: support verbose conncache closure handle
+
+ - Change closure handle to receive verbose setting from the easy handle
+ most recently added via curl_multi_add_handle.
+
+ The closure handle is a special easy handle used for closing cached
+ connections. It receives limited settings from the easy handle most
+ recently added to the multi handle. Prior to this change that did not
+ include verbose which was a problem because on connection shutdown
+ verbose mode was not acknowledged.
+
+ Ref: https://github.com/curl/curl/pull/3598
+
+ Co-authored-by: Daniel Stenberg
+
+ Closes https://github.com/curl/curl/pull/3618
+
+Daniel Stenberg (4 Mar 2019)
+- CURLU: fix NULL dereference when used over proxy
+
+ Test 659 verifies
+
+ Also fixed the test 658 name
+
+ Closes #3641
+
+- altsvc_out: check the return code from Curl_gmtime
+
+ Pointed out by Coverity, CID 1442956.
+
+ Closes #3640
+
+- docs/ALTSVC.md: docs describing the approach
+
+ Closes #3498
+
+- alt-svc: add a travis build
+
+- alt-svc: add test 355 and 356 to verify with command line curl
+
+- alt-svc: the curl command line bits
+
+- alt-svc: the libcurl bits
+
+- travis: add build using gnutls
+
+ Closes #3637
+
+- RELEASE-NOTES: synced
+
+- [Simon Legner brought this change]
+
+ scripts/completion.pl: also generate fish completion file
+
+ This is the renamed script formerly known as zsh.pl
+
+ Closes #3545
+
+- gnutls: remove call to deprecated gnutls_compression_get_name
+
+ It has been deprecated by GnuTLS since a year ago and now causes build
+ warnings.
+
+ Ref: https://gitlab.com/gnutls/gnutls/commit/b0041897d2846737f5fb0f
+ Docs: https://www.gnutls.org/manual/html_node/Compatibility-API.html
+
+ Closes #3636
+
+Jay Satiro (2 Mar 2019)
+- system_win32: move win32_init here from easy.c
+
+ .. since system_win32 is a more appropriate location for the functions
+ and to extern the globals.
+
+ Ref: https://github.com/curl/curl/commit/ca597ad#r32446578
+ Reported-by: Gisle Vanem
+
+ Closes https://github.com/curl/curl/pull/3625
+
+Daniel Stenberg (1 Mar 2019)
+- curl_easy_duphandle.3: clarify that a duped handle has no shares
+
+ Reported-by: Sara Golemon
+
+ Fixes #3592
+ Closes #3634
+
+- 10-at-a-time.c: fix too long line
+
+- [Arnaud Rebillout brought this change]
+
+ examples: various fixes in ephiperfifo.c
+
+ The main change here is the timer value that was wrong, it was given in
+ usecs (ms * 1000), while the itimerspec struct wants nsecs (ms * 1000 *
+ 1000). This resulted in the callback being invoked WAY TOO OFTEN.
+
+ As a quick check you can run this command before and after applying this
+ commit:
+
+ # shell 1
+ ./ephiperfifo 2>&1 | tee ephiperfifo.log
+ # shell 2
+ echo http://hacking.elboulangero.com > hiper.fifo
+
+ Then just compare the size of the logs files.
+
+ Closes #3633
+ Fixes #3632
+ Signed-off-by: Arnaud Rebillout <arnaud.rebillout@collabora.com>
+
+- urldata: simplify bytecounters
+
+ - no need to have them protocol specific
+
+ - no need to set pointers to them with the Curl_setup_transfer() call
+
+ - make Curl_setup_transfer() operate on a transfer pointer, not
+ connection
+
+ - switch some counters from long to the more proper curl_off_t type
+
+ Closes #3627
+
+- examples/10-at-a-time.c: improve readability and simplify
+
+ - use better variable names to explain their purposes
+ - convert logic to curl_multi_wait()
+
+- threaded-resolver: shutdown the resolver thread without error message
+
+ When a transfer is done, the resolver thread will be brought down. That
+ could accidentally generate an error message in the error buffer even
+ though this is not an error situationand the transfer would still return
+ OK. An application that still reads the error buffer could find a
+ "Could not resolve host: [host name]" message there and get confused.
+
+ Reported-by: Michael Schmid
+ Fixes #3629
+ Closes #3630
+
+- [Ԝеѕ brought this change]
+
+ docs: update max-redirs.d phrasing
+
+ clarify redir - "in absurdum" doesn't seem to make sense in this context
+
+ Closes #3631
+
+- ssh: fix Condition '!status' is always true
+
+ in the same sftp_done function in both SSH backends. Simplify them
+ somewhat.
+
+ Pointed out by Codacy.
+
+ Closes #3628
+
+- test578: make it read data from the correct test
+
+- Curl_easy: remove req.maxfd - never used!
+
+ Introduced in 8b6314ccfb, but not used anymore in current code. Unclear
+ since when.
+
+ Closes #3626
+
+- http: set state.infilesize when sending formposts
+
+ Without it set, we would unwillingly triger the "HTTP error before end
+ of send, stop sending" condition even if the entire POST body had been
+ sent (since it wouldn't know the expected size) which would
+ unnecessarily log that message and close the connection when it didn't
+ have to.
+
+ Reported-by: Matt McClure
+ Bug: https://curl.haxx.se/mail/archive-2019-02/0023.html
+ Closes #3624
+
+- INSTALL: refer to the current TLS library names and configure options
+
+- FAQ: minor updates and spelling fixes
+
+- GOVERNANCE.md: minor spelling fixes
+
+- Secure Transport: no more "darwinssl"
+
+ Everyone calls it Secure Transport, now we do too.
+
+ Reviewed-by: Nick Zitzmann
+
+ Closes #3619
+
+Marcel Raad (27 Feb 2019)
+- AppVeyor: add classic MinGW build
+
+ But use the MSYS2 shell rather than the default MSYS shell because of
+ POSIX path conversion issues. Classic MinGW is only available on the
+ Visual Studio 2015 image.
+
+ Closes https://github.com/curl/curl/pull/3623
+
+- AppVeyor: add MinGW-w64 build
+
+ Add a MinGW-w64 build using CMake's MSYS Makefiles generator.
+ Use the Visual Studio 2015 image as it has GCC 8, while the
+ Visual Studio 2017 image only has GCC 7.2.
+
+ Closes https://github.com/curl/curl/pull/3623
+
+Daniel Stenberg (27 Feb 2019)
+- cookies: only save the cookie file if the engine is enabled
+
+ Follow-up to 8eddb8f4259.
+
+ If the cookieinfo pointer is NULL there really is nothing to save.
+
+ Without this fix, we got a problem when a handle was using shared object
+ with cookies and is told to "FLUSH" it to file (which worked) and then
+ the share object was removed and when the easy handle was closed just
+ afterwards it has no cookieinfo and no cookies so it decided to save an
+ empty jar (overwriting the file just flushed).
+
+ Test 1905 now verifies that this works.
+
+ Assisted-by: Michael Wallner
+ Assisted-by: Marcel Raad
+
+ Closes #3621
+
+- [DaVieS brought this change]
+
+ cacertinmem.c: use multiple certificates for loading CA-chain
+
+ Closes #3421
+
+- urldata: convert bools to bitfields and move to end
+
+ This allows the compiler to pack and align the structs better in
+ memory. For a rather feature-complete build on x86_64 Linux, gcc 8.1.2
+ makes the Curl_easy struct 4.9% smaller. From 6312 bytes to 6000.
+
+ Removed an unused struct field.
+
+ No functionality changes.
+
+ Closes #3610
+
+- [Don J Olmstead brought this change]
+
+ curl.h: use __has_declspec_attribute for shared builds
+
+ Closes #3616
+
+- curl: display --version features sorted alphabetically
+
+ Closes #3611
+
+- runtests: detect "schannel" as an alias for "winssl"
+
+ Follow-up to 180501cb02
+
+ Reported-by: Marcel Raad
+ Fixes #3609
+ Closes #3620
+
+Marcel Raad (26 Feb 2019)
+- AppVeyor: update to Visual Studio 2017
+
+ Switch all Visual Studio 2015 builds to Visual Studio 2017. It's not a
+ moving target anymore as the last update, Update 9, has been released.
+
+ Closes https://github.com/curl/curl/pull/3606
+
+- AppVeyor: switch VS 2015 builds to VS 2017 image
+
+ The Visual Studio 2017 image has Visual Studio 2015 and 2017 installed.
+
+ Closes https://github.com/curl/curl/pull/3606
+
+- AppVeyor: explicitly select worker image
+
+ Currently, we're using the default Visual Studio 2015 image for
+ everything.
+
+ Closes https://github.com/curl/curl/pull/3606
+
+Daniel Stenberg (26 Feb 2019)
+- strerror: make the strerror function use local buffers
+
+ Instead of using a fixed 256 byte buffer in the connectdata struct.
+
+ In my build, this reduces the size of the connectdata struct by 11.8%,
+ from 2160 to 1904 bytes with no functionality or performance loss.
+
+ This also fixes a bug in schannel's Curl_verify_certificate where it
+ called Curl_sspi_strerror when it should have called Curl_strerror for
+ string from GetLastError. the only effect would have been no text or the
+ wrong text being shown for the error.
+
+ Co-authored-by: Jay Satiro
+
+ Closes #3612
+
+- [Michael Wallner brought this change]
+
+ cookies: fix NULL dereference if flushing cookies with no CookieInfo set
+
+ Regression brought by a52e46f3900fb0 (shipped in 7.63.0)
+
+ Closes #3613
+
+Marcel Raad (26 Feb 2019)
+- AppVeyor: re-enable test 500
+
+ It's passing now.
+
+ Closes https://github.com/curl/curl/pull/3615
+
+- AppVeyor: remove redundant builds
+
+ Remove the Visual Studio 2012 and 2013 builds as they add little value.
+
+ Ref: https://github.com/curl/curl/pull/3606
+ Closes https://github.com/curl/curl/pull/3614
+
+Daniel Stenberg (25 Feb 2019)
+- RELEASE-NOTES: synced
+
+- [Bernd Mueller brought this change]
+
+ OpenSSL: add support for TLS ASYNC state
+
+ Closes #3591
+
+Jay Satiro (25 Feb 2019)
+- [Michael Felt brought this change]
+
+ acinclude: add additional libraries to check for LDAP support
+
+ - Add an additional check for LDAP that also checks for OpenSSL since
+ on AIX those libraries may be required to link LDAP properly.
+
+ Fixes https://github.com/curl/curl/issues/3595
+ Closes https://github.com/curl/curl/pull/3596
+
+- [georgeok brought this change]
+
+ schannel: support CALG_ECDH_EPHEM algorithm
+
+ Add support for Ephemeral elliptic curve Diffie-Hellman key exchange
+ algorithm option when selecting ciphers. This became available on the
+ Win10 SDK.
+
+ Closes https://github.com/curl/curl/pull/3608
+
+Daniel Stenberg (24 Feb 2019)
+- multi: call multi_done on connect timeouts
+
+ Failing to do so would make the CURLINFO_TOTAL_TIME timeout to not get
+ updated correctly and could end up getting reported to the application
+ completely wrong (way too small).
+
+ Reported-by: accountantM on github
+ Fixes #3602
+ Closes #3605
+
+- examples: remove recursive calls to curl_multi_socket_action
+
+ From within the timer callbacks. Recursive is problematic for several
+ reasons. They should still work, but this way the examples and the
+ documentation becomes simpler. I don't think we need to encourage
+ recursive calls.
+
+ Discussed in #3537
+ Closes #3601
+
+Marcel Raad (23 Feb 2019)
+- configure: remove CURL_CHECK_FUNC_FDOPEN call
+
+ The macro itself has been removed in commit
+ 11974ac859c5d82def59e837e0db56fef7f6794e.
+
+ Closes https://github.com/curl/curl/pull/3604
+
+Daniel Stenberg (23 Feb 2019)
+- wolfssl: stop custom-adding curves
+
+ since wolfSSL PR https://github.com/wolfSSL/wolfssl/pull/717 (shipped in
+ wolfSSL 3.10.2 and later) it sends these curves by default already.
+
+ Pointed-out-by: David Garske
+
+ Closes #3599
+
+- configure: remove the unused fdopen macro
+
+ and the two remaining #ifdefs for it
+
+ Closes #3600
+
+Jay Satiro (22 Feb 2019)
+- url: change conn shutdown order to unlink data as last step
+
+ - Split off connection shutdown procedure from Curl_disconnect into new
+ function conn_shutdown.
+
+ - Change the shutdown procedure to close the sockets before
+ disassociating the transfer.
+
+ Prior to this change the sockets were closed after disassociating the
+ transfer so SOCKETFUNCTION wasn't called since the transfer was already
+ disassociated. That likely came about from recent work started in
+ Jan 2019 (#3442) to separate transfers from connections.
+
+ Bug: https://curl.haxx.se/mail/lib-2019-02/0101.html
+ Reported-by: Pavel Löbl
+
+ Closes https://github.com/curl/curl/issues/3597
+ Closes https://github.com/curl/curl/pull/3598
+
+Marcel Raad (22 Feb 2019)
+- Fix strict-prototypes GCC warning
+
+ As seen in the MinGW autobuilds. Caused by commit
+ f26bc29cfec0be84c67cf74065cf8e5e78fd68b7.
+
+Dan Fandrich (21 Feb 2019)
+- tests: Fixed XML validation errors in some test files.
+
+Daniel Stenberg (20 Feb 2019)
+- TODO: Allow SAN names in HTTP/2 server push
+
+ Suggested-by: Nicolas Grekas
+
+- RELEASE-NOTES: synced
+
+- curl: remove MANUAL from -M output
+
+ ... and remove it from the dist tarball. It has served its time, it
+ barely gets updated anymore and "everything curl" is now convering all
+ this document once tried to include, and does it more and better.
+
+ In the compressed scenario, this removes ~15K data from the binary,
+ which is 25% of the -M output.
+
+ It remains in the git repo for now for as long as the web site builds a
+ page using that as source. It renders poorly on the site (especially for
+ mobile users) so its not even good there.
+
+ Closes #3587
+
+- http2: verify :athority in push promise requests
+
+ RFC 7540 says we should verify that the push is for an "authoritative"
+ server. We make sure of this by only allowing push with an :athority
+ header that matches the host that was asked for in the URL.
+
+ Fixes #3577
+ Reported-by: Nicolas Grekas
+ Bug: https://curl.haxx.se/mail/lib-2019-02/0057.html
+ Closes #3581
+
+- singlesocket: fix the 'sincebefore' placement
+
+ The variable wasn't properly reset within the loop and thus could remain
+ set for sockets that hadn't been set before and miss notifying the app.
+
+ This is a follow-up to 4c35574 (shipped in curl 7.64.0)
+
+ Reported-by: buzo-ffm on github
+ Detected-by: Jan Alexander Steffens
+ Fixes #3585
+ Closes #3589
+
+- connection: never reuse CONNECT_ONLY conections
+
+ and make CONNECT_ONLY conections never reuse any existing ones either.
+
+ Reported-by: Pavel Löbl
+ Bug: https://curl.haxx.se/mail/lib-2019-02/0064.html
+ Closes #3586
+
+Patrick Monnerat (19 Feb 2019)
+- cli tool: fix mime post with --disable-libcurl-option configure option
+
+ Reported-by: Marcel Raad
+ Fixes #3576
+ Closes #3583
+
+Daniel Stenberg (19 Feb 2019)
+- x509asn1: cleanup and unify code layout
+
+ - rename 'n' to buflen in functions, and use size_t for them. Don't pass
+ in negative buffer lengths.
+
+ - move most function comments to above the function starts like we use
+ to
+
+ - remove several unnecessary typecasts (especially of NULL)
+
+ Reviewed-by: Patrick Monnerat
+ Closes #3582
+
+- curl_multi_remove_handle.3: use at any time, just not from within callbacks
+
+ [ci skip]
+
+- http: make adding a blank header thread-safe
+
+ Previously the function would edit the provided header in-place when a
+ semicolon is used to signify an empty header. This made it impossible to
+ use the same set of custom headers in multiple threads simultaneously.
+
+ This approach now makes a local copy when it needs to edit the string.
+
+ Reported-by: d912e3 on github
+ Fixes #3578
+ Closes #3579
+
+- unit1651: survive curl_easy_init() fails
+
+- [Frank Gevaerts brought this change]
+
+ rand: Fix a mismatch between comments in source and header.
+
+ Reported-by: Björn Stenberg <bjorn@haxx.se>
+ Closes #3584
+
+Patrick Monnerat (18 Feb 2019)
+- x509asn1: replace single char with an array
+
+ Although safe in this context, using a single char as an array may
+ cause invalid accesses to adjacent memory locations.
+
+ Detected by Coverity.
+
+Daniel Stenberg (18 Feb 2019)
+- examples/http2-serverpush: add some sensible error checks
+
+ To avoid NULL pointer dereferences etc in the case of problems.
+
+ Closes #3580
+
+Jay Satiro (18 Feb 2019)
+- easy: fix win32 init to work without CURL_GLOBAL_WIN32
+
+ - Change the behavior of win32_init so that the required initialization
+ procedures are not affected by CURL_GLOBAL_WIN32 flag.
+
+ libcurl via curl_global_init supports initializing for win32 with an
+ optional flag CURL_GLOBAL_WIN32, which if omitted was meant to stop
+ Winsock initialization. It did so internally by skipping win32_init()
+ when that flag was set. Since then win32_init() has been expanded to
+ include required initialization routines that are separate from
+ Winsock and therefore must be called in all cases. This commit fixes
+ it so that CURL_GLOBAL_WIN32 only controls the optional win32
+ initialization (which is Winsock initialization, according to our doc).
+
+ The only users affected by this change are those that don't pass
+ CURL_GLOBAL_WIN32 to curl_global_init. For them this commit removes the
+ risk of a potential crash.
+
+ Ref: https://github.com/curl/curl/pull/3573
+
+ Fixes https://github.com/curl/curl/issues/3313
+ Closes https://github.com/curl/curl/pull/3575
+
+Daniel Gustafsson (17 Feb 2019)
+- cookie: Add support for cookie prefixes
+
+ The draft-ietf-httpbis-rfc6265bis-02 draft, specify a set of prefixes
+ and how they should affect cookie initialization, which has been
+ adopted by the major browsers. This adds support for the two prefixes
+ defined, __Host- and __Secure, and updates the testcase with the
+ supplied examples from the draft.
+
+ Closes #3554
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+- mbedtls: release sessionid resources on error
+
+ If mbedtls_ssl_get_session() fails, it may still have allocated
+ memory that needs to be freed to avoid leaking. Call the library
+ API function to release session resources on this errorpath as
+ well as on Curl_ssl_addsessionid() errors.
+
+ Closes: #3574
+ Reported-by: Michał Antoniak <M.Antoniak@posnet.com>
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Patrick Monnerat (16 Feb 2019)
+- cli tool: refactor encoding conversion sequence for switch case fallthrough.
+
+- version.c: silent scan-build even when librtmp is not enabled
+
+Daniel Stenberg (15 Feb 2019)
+- RELEASE-NOTES: synced
+
+- Curl_now: figure out windows version in win32_init
+
+ ... and avoid use of static variables that aren't thread safe.
+
+ Fixes regression from e9ababd4f5a (present in the 7.64.0 release)
+
+ Reported-by: Paul Groke
+ Fixes #3572
+ Closes #3573
+
+Marcel Raad (15 Feb 2019)
+- unit1307: just fail without FTP support
+
+ I missed to check this in with commit
+ 71786c0505926aaf7e9b2477b2fb7ee16a915ec6, which only disabled the test.
+ This fixes the actual linker error.
+
+ Closes https://github.com/curl/curl/pull/3568
+
+Daniel Stenberg (15 Feb 2019)
+- travis: enable valgrind for the iconv tests too
+
+ Closes #3571
+
+- travis: add scan-build
+
+ Closes #3564
+
+- examples/sftpuploadresume: Value stored to 'result' is never read
+
+ Detected by scan-build
+
+- examples/http2-upload: cleaned up
+
+ Fix scan-build warnings, no globals, no silly handle scan. Also remove
+ handles from the multi before cleaning up.
+
+- examples/http2-download: cleaned up
+
+ To avoid scan-build warnings and global variables.
+
+- examples/postinmemory: Potential leak of memory pointed to by 'chunk.memory'
+
+ Detected by scan-build
+
+- examples/httpcustomheader: Value stored to 'res' is never read
+
+ Detected by scan-build
+
+- examples: remove superfluous null-pointer checks
+
+ in ftpget, ftpsget and sftpget, so that scan-build stops warning for
+ potential NULL pointer dereference below!
+
+ Detected by scan-build
+
+- strip_trailing_dot: make sure NULL is never used for strlen
+
+ scan-build warning: Null pointer passed as an argument to a 'nonnull'
+ parameter
+
+- [Jay Satiro brought this change]
+
+ connection_check: restore original conn->data after the check
+
+ - Save the original conn->data before it's changed to the specified
+ data transfer for the connection check and then restore it afterwards.
+
+ This is a follow-up to 38d8e1b 2019-02-11.
+
+ History:
+
+ It was discovered a month ago that before checking whether to extract a
+ dead connection that that connection should be associated with a "live"
+ transfer for the check (ie original conn->data ignored and set to the
+ passed in data). A fix was landed in 54b201b which did that and also
+ cleared conn->data after the check. The original conn->data was not
+ restored, so presumably it was thought that a valid conn->data was no
+ longer needed.
+
+ Several days later it was discovered that a valid conn->data was needed
+ after the check and follow-up fix was landed in bbae24c which partially
+ reverted the original fix and attempted to limit the scope of when
+ conn->data was changed to only when pruning dead connections. In that
+ case conn->data was not cleared and the original conn->data not
+ restored.
+
+ A month later it was discovered that the original fix was somewhat
+ correct; a "live" transfer is needed for the check in all cases
+ because original conn->data could be null which could cause a bad deref
+ at arbitrary points in the check. A fix was landed in 38d8e1b which
+ expanded the scope to all cases. conn->data was not cleared and the
+ original conn->data not restored.
+
+ A day later it was discovered that not restoring the original conn->data
+ may lead to busy loops in applications that use the event interface, and
+ given this observation it's a pretty safe assumption that there is some
+ code path that still needs the original conn->data. This commit is the
+ follow-up fix for that, it restores the original conn->data after the
+ connection check.
+
+ Assisted-by: tholin@users.noreply.github.com
+ Reported-by: tholin@users.noreply.github.com
+
+ Fixes https://github.com/curl/curl/issues/3542
+ Closes #3559
+
+- memdebug: bring back curl_mark_sclose
+
+ Used by debug builds with NSS.
+
+ Reverted from 05b100aee247bb
+
+Patrick Monnerat (14 Feb 2019)
+- transfer.c: do not compute length of undefined hex buffer.
+
+ On non-ascii platforms, the chunked hex header was measured for char code
+ conversion length, even for chunked trailers that do not have an hex header.
+ In addition, the efective length is already known: use it.
+ Since the hex length can be zero, only convert if needed.
+
+ Reported by valgrind.
+
+Daniel Stenberg (14 Feb 2019)
+- KNOWN_BUGS: Cannot compile against a static build of OpenLDAP
+
+ Closes #2367
+
+Patrick Monnerat (14 Feb 2019)
+- x509asn1: "Dereference of null pointer"
+
+ Detected by scan-build (false positive).
+
+Daniel Stenberg (14 Feb 2019)
+- configure: show features as well in the final summary
+
+ Closes #3569
+
+- KNOWN_BUGS: curl compiled on OSX 10.13 failed to run on OSX 10.10
+
+ Closes #2905
+
+- KNOWN_BUGS: Deflate error after all content was received
+
+ Closes #2719
+
+- gssapi: fix deprecated header warnings
+
+ Heimdal includes on FreeBSD spewed out lots of them. Less so now.
+
+ Closes #3566
+
+- TODO: Upgrade to websockets
+
+ Closes #3523
+
+- TODO: cmake test suite improvements
+
+ Closes #3109
+
+Patrick Monnerat (13 Feb 2019)
+- curl: "Dereference of null pointer"
+
+ Rephrase to satisfy scan-build.
+
+Marcel Raad (13 Feb 2019)
+- unit1307: require FTP support
+
+ This test doesn't link without FTP support after
+ fc7ab4835b5fd09d0a6f57000633bb6bb6edfda1, which made Curl_fnmatch
+ unavailable without FTP support.
+
+ Closes https://github.com/curl/curl/pull/3565
+
+Daniel Stenberg (13 Feb 2019)
+- TODO: TFO support on Windows
+
+ Nobody works on this now.
+
+ Closes #3378
+
+- multi: Dereference of null pointer
+
+ Mostly a false positive, but this makes the code easier to read anyway.
+
+ Detected by scan-build.
+
+ Closes #3563
+
+- urlglob: Argument with 'nonnull' attribute passed null
+
+ Detected by scan-build.
+
+Jay Satiro (12 Feb 2019)
+- schannel: restore some debug output but only for debug builds
+
+ Follow-up to 84c10dc from earlier today which wrapped a lot of the noisy
+ debug output in DEBUGF but omitted a few lines.
+
+ Ref: https://github.com/curl/curl/commit/84c10dc#r32292900
+
+- examples/crawler: Fix the Accept-Encoding setting
+
+ - Pass an empty string to CURLOPT_ACCEPT_ENCODING to use the default
+ supported encodings.
+
+ Prior to this change the specific encodings of gzip and deflate were set
+ but there's no guarantee they'd be supported by the user's libcurl.
+
+Daniel Stenberg (12 Feb 2019)
+- mime: put the boundary buffer into the curl_mime struct
+
+ ... instead of allocating it separately and point to it. It is
+ fixed-size and always used for each part.
+
+ Closes #3561
+
+- schannel: be quiet
+
+ Convert numerous infof() calls into debug-build only messages since they
+ are annoyingly verbose for regular applications. Removed a few.
+
+ Bug: https://curl.haxx.se/mail/lib-2019-02/0027.html
+ Reported-by: Volker Schmid
+ Closes #3552
+
+- [Romain Geissler brought this change]
+
+ Curl_resolv: fix a gcc -Werror=maybe-uninitialized warning
+
+ Closes #3562
+
+- http2: multi_connchanged() moved from multi.c, only used for h2
+
+ Closes #3557
+
+- curl: "Function call argument is an uninitialized value"
+
+ Follow-up to cac0e4a6ad14b42471eb
+
+ Detected by scan-build
+ Closes #3560
+
+- pretransfer: don't strlen() POSTFIELDS set for GET requests
+
+ ... since that data won't be used in the request anyway.
+
+ Fixes #3548
+ Reported-by: Renaud Allard
+ Close #3549
+
+- multi: remove verbose "Expire in" ... messages
+
+ Reported-by: James Brown
+ Bug: https://curl.haxx.se/mail/archive-2019-02/0013.html
+ Closes #3558
+
+- mbedtls: make it build even if MBEDTLS_VERSION_C isn't set
+
+ Reported-by: MAntoniak on github
+ Fixes #3553
+ Closes #3556
+
+Daniel Gustafsson (12 Feb 2019)
+- non-ascii.c: fix typos in comments
+
+ Fix two occurrences of s/convers/converts/ spotted while reading code.
+
+Daniel Stenberg (12 Feb 2019)
+- fnmatch: disable if FTP is disabled
+
+ Closes #3551
+
+- curl_path: only enabled for SSH builds
+
+- [Frank Gevaerts brought this change]
+
+ tests: add stderr comparison to the test suite
+
+ The code is more or less copied from the stdout comparison code, maybe
+ some better reuse is possible.
+
+ test 1457 is adjusted to make the output actually match (by using --silent)
+ test 506 used <stderr> without actually needing it, so that <stderr> block is removed
+
+ Closes #3536
+
+Patrick Monnerat (11 Feb 2019)
+- cli tool: do not use mime.h private structures.
+
+ Option -F generates an intermediate representation of the mime structure
+ that is used later to create the libcurl mime structure and generate
+ the --libcurl statements.
+
+ Reported-by: Daniel Stenberg
+ Fixes #3532
+ Closes #3546
+
+Daniel Stenberg (11 Feb 2019)
+- curlver: bump to 7.64.1-dev
+
+- RELEASE-NOTES: synced
+
+ and bump the version in progress to 7.64.1. If we merge any "change"
+ before the cut-off date, we update again.
+
+Daniel Gustafsson (11 Feb 2019)
+- curl: follow-up to 3f16990ec84
+
+ Commit 3f16990ec84cc4b followed-up a bug in b49652ac66cc0 but was
+ inadvertently introducing a new bug in the ternary expression.
+
+ Close #3555
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+- dns: release sharelock as soon as possible
+
+ There is no benefit to holding the data sharelock when freeing the
+ addrinfo in case it fails, so ensure releaseing it as soon as we can
+ rather than holding on to it. This also aligns the code with other
+ consumers of sharelocks.
+
+ Closes #3516
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Daniel Stenberg (11 Feb 2019)
+- curl: follow-up to b49652ac66cc0
+
+ On FreeBSD, return non-zero on error otherwise zero.
+
+ Reported-by: Marcel Raad
+
+- multi: (void)-prefix when ignoring return values
+
+ ... and added braces to two function calls which fixes warnings if they
+ are replace by empty macros at build-time.
+
+- curl: fix FreeBSD compiler warning in the --xattr code
+
+ Closes #3550
+
+- connection_check: set ->data to the transfer doing the check
+
+ The http2 code for connection checking needs a transfer to use. Make
+ sure a working one is set before handler->connection_check() is called.
+
+ Reported-by: jnbr on github
+ Fixes #3541
+ Closes #3547
+
+- hostip: make create_hostcache_id avoid alloc + free
+
+ Closes #3544
+
+- scripts/singleuse: script to use to track single-use functions
+
+ That is functions that are declared global but are not used from outside
+ of the file in which it is declared. Such functions should be made
+ static or even at times be removed.
+
+ It also verifies that all used curl_ prefixed functions are "blessed"
+
+ Closes #3538
+
+- cleanup: make local functions static
+
+ urlapi: turn three local-only functions into statics
+
+ conncache: make conncache_find_first_connection static
+
+ multi: make detach_connnection static
+
+ connect: make getaddressinfo static
+
+ curl_ntlm_core: make hmac_md5 static
+
+ http2: make two functions static
+
+ http: make http_setup_conn static
+
+ connect: make tcpnodelay static
+
+ tests: make UNITTEST a thing to mark functions with, so they can be static for
+ normal builds and non-static for unit test builds
+
+ ... and mark Curl_shuffle_addr accordingly.
+
+ url: make up_free static
+
+ setopt: make vsetopt static
+
+ curl_endian: make write32_le static
+
+ rtsp: make rtsp_connisdead static
+
+ warnless: remove unused functions
+
+ memdebug: remove one unused function, made another static
+
+Dan Fandrich (10 Feb 2019)
+- cirrus: Added FreeBSD builds using Cirrus CI.
+
+ The build logs will be at https://cirrus-ci.com/github/curl/curl
+
+ Some tests are currently failing and so disabled for now. The SSH server
+ isn't starting for the SSH tests due to unsupported options used in its
+ config file. The DICT server also is failing on startup.
+
+Daniel Stenberg (9 Feb 2019)
+- url/idnconvert: remove scan for <= 32 ascii values
+
+ The check was added back in fa939220df before the URL parser would catch
+ these problems and therefore these will never trigger now.
+
+ Closes #3539
+
+- urlapi: reduce variable scope, remove unreachable 'break'
+
+ Both nits pointed out by codacy.com
+
+ Closes #3540
+
+Alessandro Ghedini (7 Feb 2019)
+- zsh.pl: escape ':' character
+
+ ':' is interpreted as separator by zsh, so if used as part of the argument
+ or option's description it needs to be escaped.
+
+ The problem can be reproduced as follows:
+
+ % curl --reso<TAB>
+ % curl -E <TAB>
+
+ Bug: https://bugs.debian.org/921452
+
+- zsh.pl: update regex to better match curl -h output
+
+ The current regex fails to match '<...>' arguments properly (e.g. those
+ with spaces in them), which causes an completion script with wrong
+ descriptions for some options.
+
+ Here's a diff of the generated completion script, comparing the previous
+ version to the one with this fix:
+
+ --- /usr/share/zsh/vendor-completions/_curl 2019-01-15 20:47:40.000000000 +0000
+ +++ _curl 2019-02-05 20:57:29.453349040 +0000
+ @@ -9,48 +9,48 @@
+
+ _arguments -C -S \
+ --happy-eyeballs-timeout-ms'[How long to wait in milliseconds for IPv6 before trying IPv4]':'<milliseconds>' \
+ + --resolve'[Resolve the host+port to this address]':'<host:port:address[,address]...>' \
+ {-c,--cookie-jar}'[Write cookies to <filename> after operation]':'<filename>':_files \
+ {-D,--dump-header}'[Write the received headers to <filename>]':'<filename>':_files \
+ {-y,--speed-time}'[Trigger '\''speed-limit'\'' abort after this time]':'<seconds>' \
+ --proxy-cacert'[CA certificate to verify peer against for proxy]':'<file>':_files \
+ - --tls13-ciphers'[of TLS 1.3 ciphersuites> TLS 1.3 cipher suites to use]':'<list' \
+ + --tls13-ciphers'[TLS 1.3 cipher suites to use]':'<list of TLS 1.3 ciphersuites>' \
+ {-E,--cert}'[Client certificate file and password]':'<certificate[:password]>' \
+ --libcurl'[Dump libcurl equivalent code of this command line]':'<file>':_files \
+ --proxy-capath'[CA directory to verify peer against for proxy]':'<dir>':_files \
+ - --proxy-negotiate'[HTTP Negotiate (SPNEGO) authentication on the proxy]':'Use' \
+ --proxy-pinnedpubkey'[FILE/HASHES public key to verify proxy with]':'<hashes>' \
+ --crlfile'[Get a CRL list in PEM format from the given file]':'<file>':_files \
+ - --proxy-insecure'[HTTPS proxy connections without verifying the proxy]':'Do' \
+ - --proxy-ssl-allow-beast'[security flaw for interop for HTTPS proxy]':'Allow' \
+ + --proxy-negotiate'[Use HTTP Negotiate (SPNEGO) authentication on the proxy]' \
+ --abstract-unix-socket'[Connect via abstract Unix domain socket]':'<path>' \
+ --pinnedpubkey'[FILE/HASHES Public key to verify peer against]':'<hashes>' \
+ + --proxy-insecure'[Do HTTPS proxy connections without verifying the proxy]' \
+ --proxy-pass'[Pass phrase for the private key for HTTPS proxy]':'<phrase>' \
+ + --proxy-ssl-allow-beast'[Allow security flaw for interop for HTTPS proxy]' \
+ {-p,--proxytunnel}'[Operate through an HTTP proxy tunnel (using CONNECT)]' \
+ --socks5-hostname'[SOCKS5 proxy, pass host name to proxy]':'<host[:port]>' \
+ --proto-default'[Use PROTOCOL for any URL missing a scheme]':'<protocol>' \
+ - --proxy-tls13-ciphers'[list> TLS 1.3 proxy cipher suites]':'<ciphersuite' \
+ + --proxy-tls13-ciphers'[TLS 1.3 proxy cipher suites]':'<ciphersuite list>' \
+ --socks5-gssapi-service'[SOCKS5 proxy service name for GSS-API]':'<name>' \
+ --ftp-alternative-to-user'[String to replace USER \[name\]]':'<command>' \
+ - --ftp-ssl-control'[SSL/TLS for FTP login, clear for transfer]':'Require' \
+ {-T,--upload-file}'[Transfer local FILE to destination]':'<file>':_files \
+ --local-port'[Force use of RANGE for local port numbers]':'<num/range>' \
+ --proxy-tlsauthtype'[TLS authentication type for HTTPS proxy]':'<type>' \
+ {-R,--remote-time}'[Set the remote file'\''s time on the local output]' \
+ - --retry-connrefused'[on connection refused (use with --retry)]':'Retry' \
+ - --suppress-connect-headers'[proxy CONNECT response headers]':'Suppress' \
+ - {-j,--junk-session-cookies}'[session cookies read from file]':'Ignore' \
+ - --location-trusted'[--location, and send auth to other hosts]':'Like' \
+ + --ftp-ssl-control'[Require SSL/TLS for FTP login, clear for transfer]' \
+ --proxy-cert-type'[Client certificate type for HTTPS proxy]':'<type>' \
+ {-O,--remote-name}'[Write output to a file named as the remote file]' \
+ + --retry-connrefused'[Retry on connection refused (use with --retry)]' \
+ + --suppress-connect-headers'[Suppress proxy CONNECT response headers]' \
+ --trace-ascii'[Like --trace, but without hex output]':'<file>':_files \
+ --connect-timeout'[Maximum time allowed for connection]':'<seconds>' \
+ --expect100-timeout'[How long to wait for 100-continue]':'<seconds>' \
+ {-g,--globoff}'[Disable URL sequences and ranges using {} and \[\]]' \
+ + {-j,--junk-session-cookies}'[Ignore session cookies read from file]' \
+ {-m,--max-time}'[Maximum time allowed for the transfer]':'<seconds>' \
+ --dns-ipv4-addr'[IPv4 address to use for DNS requests]':'<address>' \
+ --dns-ipv6-addr'[IPv6 address to use for DNS requests]':'<address>' \
+ - --ignore-content-length'[the size of the remote resource]':'Ignore' \
+ {-k,--insecure}'[Allow insecure server connections when using SSL]' \
+ + --location-trusted'[Like --location, and send auth to other hosts]' \
+ --mail-auth'[Originator address of the original email]':'<address>' \
+ --noproxy'[List of hosts which do not use proxy]':'<no-proxy-list>' \
+ --proto-redir'[Enable/disable PROTOCOLS on redirect]':'<protocols>' \
+ @@ -62,18 +62,19 @@
+ --socks5-basic'[Enable username/password auth for SOCKS5 proxies]' \
+ --cacert'[CA certificate to verify peer against]':'<file>':_files \
+ {-H,--header}'[Pass custom header(s) to server]':'<header/@file>' \
+ + --ignore-content-length'[Ignore the size of the remote resource]' \
+ {-i,--include}'[Include protocol response headers in the output]' \
+ --proxy-header'[Pass custom header(s) to proxy]':'<header/@file>' \
+ --unix-socket'[Connect through this Unix domain socket]':'<path>' \
+ {-w,--write-out}'[Use output FORMAT after completion]':'<format>' \
+ - --http2-prior-knowledge'[HTTP 2 without HTTP/1.1 Upgrade]':'Use' \
+ {-o,--output}'[Write to file instead of stdout]':'<file>':_files \
+ - {-J,--remote-header-name}'[the header-provided filename]':'Use' \
+ + --preproxy'[\[protocol://\]host\[:port\] Use this proxy first]' \
+ --socks4a'[SOCKS4a proxy on given host + port]':'<host[:port]>' \
+ {-Y,--speed-limit}'[Stop transfers slower than this]':'<speed>' \
+ {-z,--time-cond}'[Transfer based on a time condition]':'<time>' \
+ --capath'[CA directory to verify peer against]':'<dir>':_files \
+ {-f,--fail}'[Fail silently (no output at all) on HTTP errors]' \
+ + --http2-prior-knowledge'[Use HTTP 2 without HTTP/1.1 Upgrade]' \
+ --proxy-tlspassword'[TLS password for HTTPS proxy]':'<string>' \
+ {-U,--proxy-user}'[Proxy user and password]':'<user:password>' \
+ --proxy1.0'[Use HTTP/1.0 proxy on given port]':'<host[:port]>' \
+ @@ -81,52 +82,49 @@
+ {-A,--user-agent}'[Send User-Agent <name> to server]':'<name>' \
+ --egd-file'[EGD socket path for random data]':'<file>':_files \
+ --fail-early'[Fail on first transfer error, do not continue]' \
+ - --haproxy-protocol'[HAProxy PROXY protocol v1 header]':'Send' \
+ - --preproxy'[Use this proxy first]':'[protocol://]host[:port]' \
+ + {-J,--remote-header-name}'[Use the header-provided filename]' \
+ --retry-max-time'[Retry only within this period]':'<seconds>' \
+ --socks4'[SOCKS4 proxy on given host + port]':'<host[:port]>' \
+ --socks5'[SOCKS5 proxy on given host + port]':'<host[:port]>' \
+ - --socks5-gssapi-nec'[with NEC SOCKS5 server]':'Compatibility' \
+ - --ssl-allow-beast'[security flaw to improve interop]':'Allow' \
+ --cert-status'[Verify the status of the server certificate]' \
+ - --ftp-create-dirs'[the remote dirs if not present]':'Create' \
+ {-:,--next}'[Make next URL use its separate set of options]' \
+ --proxy-key-type'[Private key file type for proxy]':'<type>' \
+ - --remote-name-all'[the remote file name for all URLs]':'Use' \
+ {-X,--request}'[Specify request command to use]':'<command>' \
+ --retry'[Retry request if transient problems occur]':'<num>' \
+ - --ssl-no-revoke'[cert revocation checks (WinSSL)]':'Disable' \
+ --cert-type'[Certificate file type (DER/PEM/ENG)]':'<type>' \
+ --connect-to'[Connect to host]':'<HOST1:PORT1:HOST2:PORT2>' \
+ --create-dirs'[Create necessary local directory hierarchy]' \
+ + --haproxy-protocol'[Send HAProxy PROXY protocol v1 header]' \
+ --max-redirs'[Maximum number of redirects allowed]':'<num>' \
+ {-n,--netrc}'[Must read .netrc for user name and password]' \
+ + {-x,--proxy}'[\[protocol://\]host\[:port\] Use this proxy]' \
+ --proxy-crlfile'[Set a CRL list for proxy]':'<file>':_files \
+ --sasl-ir'[Enable initial response in SASL authentication]' \
+ - --socks5-gssapi'[GSS-API auth for SOCKS5 proxies]':'Enable' \
+ + --socks5-gssapi-nec'[Compatibility with NEC SOCKS5 server]' \
+ + --ssl-allow-beast'[Allow security flaw to improve interop]' \
+ + --ftp-create-dirs'[Create the remote dirs if not present]' \
+ --interface'[Use network INTERFACE (or address)]':'<name>' \
+ --key-type'[Private key file type (DER/PEM/ENG)]':'<type>' \
+ --netrc-file'[Specify FILE for netrc]':'<filename>':_files \
+ {-N,--no-buffer}'[Disable buffering of the output stream]' \
+ --proxy-service-name'[SPNEGO proxy service name]':'<name>' \
+ - --styled-output'[styled output for HTTP headers]':'Enable' \
+ + --remote-name-all'[Use the remote file name for all URLs]' \
+ + --ssl-no-revoke'[Disable cert revocation checks (WinSSL)]' \
+ --max-filesize'[Maximum file size to download]':'<bytes>' \
+ --negotiate'[Use HTTP Negotiate (SPNEGO) authentication]' \
+ --no-keepalive'[Disable TCP keepalive on the connection]' \
+ {-#,--progress-bar}'[Display transfer progress as a bar]' \
+ - {-x,--proxy}'[Use this proxy]':'[protocol://]host[:port]' \
+ - --proxy-anyauth'[any proxy authentication method]':'Pick' \
+ {-Q,--quote}'[Send command(s) to server before transfer]' \
+ - --request-target'[the target for this request]':'Specify' \
+ + --socks5-gssapi'[Enable GSS-API auth for SOCKS5 proxies]' \
+ {-u,--user}'[Server user and password]':'<user:password>' \
+ {-K,--config}'[Read config from a file]':'<file>':_files \
+ {-C,--continue-at}'[Resumed transfer offset]':'<offset>' \
+ --data-raw'[HTTP POST data, '\''@'\'' allowed]':'<data>' \
+ - --disallow-username-in-url'[username in url]':'Disallow' \
+ --krb'[Enable Kerberos with security <level>]':'<level>' \
+ --proxy-ciphers'[SSL ciphers to use for proxy]':'<list>' \
+ --proxy-digest'[Use Digest authentication on the proxy]' \
+ --proxy-tlsuser'[TLS username for HTTPS proxy]':'<name>' \
+ + --styled-output'[Enable styled output for HTTP headers]' \
+ {-b,--cookie}'[Send cookies from string/file]':'<data>' \
+ --data-urlencode'[HTTP POST data url encoded]':'<data>' \
+ --delegation'[GSS-API delegation permission]':'<LEVEL>' \
+ @@ -134,7 +132,10 @@
+ --post301'[Do not switch to GET after following a 301]' \
+ --post302'[Do not switch to GET after following a 302]' \
+ --post303'[Do not switch to GET after following a 303]' \
+ + --proxy-anyauth'[Pick any proxy authentication method]' \
+ + --request-target'[Specify the target for this request]' \
+ --trace-time'[Add time stamps to trace/verbose output]' \
+ + --disallow-username-in-url'[Disallow username in url]' \
+ --dns-servers'[DNS server addrs to use]':'<addresses>' \
+ {-G,--get}'[Put the post data in the URL and use GET]' \
+ --limit-rate'[Limit transfer speed to RATE]':'<speed>' \
+ @@ -148,21 +149,21 @@
+ --metalink'[Process given URLs as metalink XML file]' \
+ --tr-encoding'[Request compressed transfer encoding]' \
+ --xattr'[Store metadata in extended file attributes]' \
+ - --ftp-skip-pasv-ip'[the IP address for PASV]':'Skip' \
+ --pass'[Pass phrase for the private key]':'<phrase>' \
+ --proxy-ntlm'[Use NTLM authentication on the proxy]' \
+ {-S,--show-error}'[Show error even when -s is used]' \
+ - --ciphers'[of ciphers> SSL ciphers to use]':'<list' \
+ + --ciphers'[SSL ciphers to use]':'<list of ciphers>' \
+ --form-string'[Specify multipart MIME data]':'<name=string>' \
+ --login-options'[Server login options]':'<options>' \
+ --tftp-blksize'[Set TFTP BLKSIZE option]':'<value>' \
+ - --tftp-no-options'[not send any TFTP options]':'Do' \
+ {-v,--verbose}'[Make the operation more talkative]' \
+ + --ftp-skip-pasv-ip'[Skip the IP address for PASV]' \
+ --proxy-key'[Private key for HTTPS proxy]':'<key>' \
+ {-F,--form}'[Specify multipart MIME data]':'<name=content>' \
+ --mail-from'[Mail from this address]':'<address>' \
+ --oauth2-bearer'[OAuth 2 Bearer Token]':'<token>' \
+ --proto'[Enable/disable PROTOCOLS]':'<protocols>' \
+ + --tftp-no-options'[Do not send any TFTP options]' \
+ --tlsauthtype'[TLS authentication type]':'<type>' \
+ --doh-url'[Resolve host names over DOH]':'<URL>' \
+ --no-sessionid'[Disable SSL session-ID reusing]' \
+ @@ -173,14 +174,13 @@
+ --ftp-ssl-ccc'[Send CCC after authenticating]' \
+ {-4,--ipv4}'[Resolve names to IPv4 addresses]' \
+ {-6,--ipv6}'[Resolve names to IPv6 addresses]' \
+ - --netrc-optional'[either .netrc or URL]':'Use' \
+ --service-name'[SPNEGO service name]':'<name>' \
+ {-V,--version}'[Show version number and quit]' \
+ --data-ascii'[HTTP POST ASCII data]':'<data>' \
+ --ftp-account'[Account data string]':'<data>' \
+ - --compressed-ssh'[SSH compression]':'Enable' \
+ --disable-eprt'[Inhibit using EPRT or LPRT]' \
+ --ftp-method'[Control CWD usage]':'<method>' \
+ + --netrc-optional'[Use either .netrc or URL]' \
+ --pubkey'[SSH Public key file name]':'<key>' \
+ --raw'[Do HTTP "raw"; no transfer decoding]' \
+ --anyauth'[Pick any authentication method]' \
+ @@ -189,6 +189,7 @@
+ --no-alpn'[Disable the ALPN TLS extension]' \
+ --tcp-nodelay'[Use the TCP_NODELAY option]' \
+ {-B,--use-ascii}'[Use ASCII/text transfer]' \
+ + --compressed-ssh'[Enable SSH compression]' \
+ --digest'[Use HTTP Digest Authentication]' \
+ --proxy-tlsv1'[Use TLSv1 for HTTPS proxy]' \
+ --engine'[Crypto engine to use]':'<name>' \
+
+Marcel Raad (7 Feb 2019)
+- tool_operate: fix typecheck warning
+
+ Use long for CURLOPT_HTTP09_ALLOWED to fix the following warning:
+ tool_operate.c: In function 'operate_do':
+ ../include/curl/typecheck-gcc.h:47:9: error: call to
+ '_curl_easy_setopt_err_long' declared with attribute warning:
+ curl_easy_setopt expects a long argument for this option [-Werror]
+
+ Closes https://github.com/curl/curl/pull/3534
+
+Jay Satiro (6 Feb 2019)
+- [Chris Araman brought this change]
+
+ url: close TLS before removing conn from cache
+
+ - Fix potential crashes in schannel shutdown.
+
+ Ensure any TLS shutdown messages are sent before removing the
+ association between the connection and the easy handle. Reverts
+ @bagder's previous partial fix for #3412.
+
+ Fixes https://github.com/curl/curl/issues/3412
+ Fixes https://github.com/curl/curl/issues/3505
+ Closes https://github.com/curl/curl/pull/3531
+
+Daniel Gustafsson (6 Feb 2019)
+- INTERNALS.md: fix subsection depth and link
+
+ The Kerberos subsection was mistakenly a subsubsection under FTP, and
+ the curlx subsection was missing an anchor for the TOC link.
+
+ Closes #3529
+ Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
Version 7.64.0 (6 Feb 2019)
Daniel Stenberg (6 Feb 2019)
@@ -6351,1399 +8010,3 @@ Daniel Stenberg (12 May 2018)
Detected by OSS-Fuzz
Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8245
-
-- setup_transfer: deal with both sockets being -1
-
- Detected by Coverity; CID 1435559. Follow-up to f8d608f38d00. It would
- index the array with -1 if neither index was a socket.
-
-- travis: add build using NSS
-
- Closes #2558
-
-- [Sunny Purushe brought this change]
-
- openssl: change FILE ops to BIO ops
-
- To make builds with VS2015 work. Recent changes in VS2015 _IOB_ENTRIES
- handling is causing problems. This fix changes the OpenSSL backend code
- to use BIO functions instead of FILE I/O functions to circumvent those
- problems.
-
- Closes #2512
-
-- travis: add a build using WolfSSL
-
- Assisted-by: Dan Fandrich
-
- Closes #2528
-
-- RELEASE-NOTES: typo
-
-- RELEASE-NOTES: synced
-
-- [Daniel Gustafsson brought this change]
-
- URLs: fix one more http url
-
- This file wasn't included in commit 4af40b3646d3b09 which updated all
- haxx.se http urls to https. The file was committed prior to that update,
- but may have been merged after it and hence didn't get updated.
-
- Closes #2550
-
-- github/lock: auto-lock closed issues after 90 days of inactivity
-
-- vtls: fix missing commas
-
- follow-up to e66cca046cef
-
-- vtls: use unified "supports" bitfield member in backends
-
- ... instead of previous separate struct fields, to make it easier to
- extend and change individual backends without having to modify them all.
-
- closes #2547
-
-- transfer: don't unset writesockfd on setup of multiplexed conns
-
- Curl_setup_transfer() can be called to setup a new individual transfer
- over a multiplexed connection so it shouldn't unset writesockfd.
-
- Bug: #2520
- Closes #2549
-
-- [Frank Gevaerts brought this change]
-
- configure: put CURLDEBUG and DEBUGBUILD in lib/curl_config.h
-
- They are removed from the compiler flags.
-
- This ensures that make dependency tracking will force a rebuild whenever
- configure --enable-debug or --enable-curldebug changes.
-
- Closes #2548
-
-- http: don't set the "rewind" flag when not uploading anything
-
- It triggers an assert.
-
- Detected by OSS-Fuzz
- Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8144
- Closes #2546
-
-- travis: add an mbedtls build
-
- Closes #2531
-
-- configure: only check for CA bundle for file-using SSL backends
-
- When only building with SSL backends that don't use the CA bundle file
- (by default), skip the check.
-
- Fixes #2543
- Fixes #2180
- Closes #2545
-
-- ssh-libssh.c: fix left shift compiler warning
-
- ssh-libssh.c:2429:21: warning: result of '1 << 31' requires 33 bits to
- represent, but 'int' only has 32 bits [-Wshift-overflow=]
-
- 'len' will never be that big anyway so I converted the run-time check to
- a regular assert.
-
-- [Stephan Mühlstrasser brought this change]
-
- URL: fix ASCII dependency in strcpy_url and strlen_url
-
- Commit 3c630f9b0af097663a64e5c875c580aa9808a92b partially reverted the
- changes from commit dd7521bcc1b7a6fcb53c31f9bd1192fcc884bd56 because of
- the problem that strcpy_url() was modified unilaterally without also
- modifying strlen_url(). As a consequence strcpy_url() was again
- depending on ASCII encoding.
-
- This change fixes strlen_url() and strcpy_url() in parallel to use a
- common host-encoding independent criterion for deciding whether an URL
- character must be %-escaped.
-
- Closes #2535
-
-- [Denis Ollier brought this change]
-
- docs: remove extraneous commas in man pages
-
- Closes #2544
-
-- RELEASE-NOTES: synced
-
-- Revert "TODO: remove configure --disable-pthreads"
-
- This reverts commit d5d683a97f9765bddfd964fe32e137aa6e703ed3.
-
- --disable-pthreads can be used to disable pthreads and get the threaded
- resolver to use the windows threading when building with mingw.
-
-- vtls: don't define MD5_DIGEST_LENGTH for wolfssl
-
- ... as it defines it (too)
-
-- TODO: remove configure --disable-pthreads
-
-Jay Satiro (2 May 2018)
-- [David Garske brought this change]
-
- wolfssl: Fix non-blocking connect
-
- Closes https://github.com/curl/curl/pull/2542
-
-Daniel Stenberg (30 Apr 2018)
-- CURLOPT_URL.3: add ENCODING section [ci skip]
-
- Feedback-by: Michael Kilburn
-
-- KNOWN_BUGS: Client cert with Issuer DN differs between backends
-
- Closes #1411
-
-- KNOWN_BUGS: Passive transfer tries only one IP address
-
- Closes #1508
-
-- KNOWN_BUGS: --upload-file . hang if delay in STDIN
-
- Closes #2051
-
-- KNOWN_BUGS: Connection information when using TCP Fast Open
-
- Closes #1332
-
-- travis: enable libssh2 on both macos and Linux
-
- It seems to not be detected by default anymore (which is a bug I
- believe)
-
- Closes #2541
-
-- TODO: Support the clienthello extension
-
- Closes #2299
-
-- TODO: CLOEXEC
-
- Closes #2252
-
-- tests: provide 'manual' as a feature to optionally require
-
- ... and make test 1026 rely on that feature so that --disable-manual
- builds don't cause test failures.
-
- Reported-by: Max Dymond and Anders Roxell
- Fixes #2533
- Closes #2540
-
-- CURLINFO_PROTOCOL.3: mention the existing defined names
-
-Jay Satiro (27 Apr 2018)
-- [Daniel Gustafsson brought this change]
-
- cookies: remove unused macro
-
- Commit 2bc230de63 made the macro MAX_COOKIE_LINE_TXT become unused,
- so remove as it's not part of the published API.
-
- Closes https://github.com/curl/curl/pull/2537
-
-Daniel Stenberg (27 Apr 2018)
-- [Daniel Gustafsson brought this change]
-
- checksrc: force indentation of lines after an else
-
- This extends the INDENTATION case to also handle 'else' statements
- and require proper indentation on the following line. Also fixes the
- offending cases found in the codebase.
-
- Closes #2532
-
-- http2: fix null pointer dereference in http2_connisdead
-
- This function can get called on a connection that isn't setup enough to
- have the 'recv_underlying' function pointer initialized so it would try
- to call the NULL pointer.
-
- Reported-by: Dario Weisser
-
- Follow-up to db1b2c7fe9b093f8 (never shipped in a release)
- Closes #2536
-
-- http2: get rid of another strstr()
-
- Follow-up to 1514c44655e12e: replace another strstr() call done on a
- buffer that might not be zero terminated - with a memchr() call, even if
- we know the substring will be found.
-
- Assisted-by: Max Dymond
-
- Detected by OSS-Fuzz
- Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8021
-
- Closes #2534
-
-- cyassl: adapt to libraries without TLS 1.0 support built-in
-
- WolfSSL doesn't enable it by default anymore
-
-- configure: provide --with-wolfssl as an alias for --with-cyassl
-
-- RELEASE-NOTES: synced
-
-- [Daniel Gustafsson brought this change]
-
- os400.c: fix ASSIGNWITHINCONDITION checksrc warnings
-
- All occurrences of assignment within conditional expression in
- os400sys.c rewritten into two steps: first assignment and then the check
- on the success of the assignment. Also adjust related incorrect brace
- positions to match project indentation style.
-
- This was spurred by seeing "if((inp = input_token))", but while in there
- all warnings were fixed.
-
- There should be no functional change from these changes.
-
- Closes #2525
-
-- [Daniel Gustafsson brought this change]
-
- cookies: ensure that we have cookies before writing jar
-
- The jar should be written iff there are cookies, so ensure that we still
- have cookies after expiration to avoid creating an empty file.
-
- Closes #2529
-
-- strcpy_url: only %-encode values >= 0x80
-
- OSS-Fuzz detected
-
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8000
-
- Broke in dd7521bcc1b7
-
-- mime: avoid NULL pointer dereference risk
-
- Coverity detected, CID 1435120
-
- Closes #2527
-
-- [Stephan Mühlstrasser brought this change]
-
- ctype: restore character classification for non-ASCII platforms
-
- With commit 4272a0b0fc49a1ac0ceab5c4a365c9f6ab8bf8e2 curl-speficic
- character classification macros and functions were introduced in
- curl_ctype.[ch] to avoid dependencies on the locale. This broke curl on
- non-ASCII, e.g. EBCDIC platforms. This change restores the previous set
- of character classification macros when CURL_DOES_CONVERSIONS is
- defined.
-
- Closes #2494
-
-- ftplistparser: keep state between invokes
-
- Fixes FTP wildcard parsing when done over a number of read buffers.
-
- Regression from f786d1f14
-
- Reported-by: wncboy on github
- Fixes #2445
- Closes #2526
-
-- examples/http2-upload: expand buffer to avoid silly warning
-
- http2-upload.c:135:44: error: ‘%02d’ directive output may be truncated
- writing between 2 and 11 bytes into a region of size between 8 and 17
-
-- examples/sftpuploadresume: typecast fseek argument to long
-
- /docs/examples/sftpuploadresume.c:102:12: warning: conversion to 'long
- int' from 'curl_off_t {aka long long int}' may alter its value
-
-- Revert "ftplistparser: keep state between invokes"
-
- This reverts commit abbc8457d85aca74b7cfda1d394b0844932b2934.
-
- Caused fuzzer problems on travis not seen when this was a PR!
-
-- Curl_memchr: zero length input can't match
-
- Avoids undefined behavior.
-
- Reported-by: Geeknik Labs
-
-- ftplistparser: keep state between invokes
-
- Fixes FTP wildcard parsing when doing over a number of read buffers.
-
- Regression from f786d1f14
-
- Reported-by: wncboy on github
- Fixes #2445
- Closes #2519
-
-- ftplistparser: renamed some members and variables
-
- ... to make them better spell out what they're for.
-
-- RELEASE-NOTES: synced
-
-- [Christian Schmitz brought this change]
-
- curl_global_sslset: always provide available backends
-
- Closes #2499
-
-- http2: convert an assert to run-time check
-
- Fuzzing has proven we can reach code in on_frame_recv with status_code
- not having been set, so let's detect that in run-time (instead of with
- assert) and error error accordingly.
-
- (This should no longer happen with the latest nghttp2)
-
- Detected by OSS-Fuzz
- Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7903
- Closes #2514
-
-- curl.1: clarify that options and URLs can be mixed
-
- Fixes #2515
- Closes #2517
-
-Jay Satiro (23 Apr 2018)
-- [Archangel_SDY brought this change]
-
- CURLOPT_SSLCERT.3: improve WinSSL-specific usage info
-
- Ref: https://github.com/curl/curl/pull/2376#issuecomment-381858780
-
- Closes https://github.com/curl/curl/pull/2504
-
-- [Archangel_SDY brought this change]
-
- schannel: fix build error on targets <= XP
-
- - Use CRYPT_STRING_HEX instead of CRYPT_STRING_HEXRAW since XP doesn't
- support the latter.
-
- Ref: https://github.com/curl/curl/pull/2376#issuecomment-382153668
-
- Closes https://github.com/curl/curl/pull/2504
-
-Daniel Stenberg (23 Apr 2018)
-- Revert "ftplistparser: keep state between invokes"
-
- This reverts commit 8fb78f9ddc6d858d630600059b8ad84a80892fd9.
-
- Unfortunately this fix introduces memory leaks I've not been able to fix
- in several days. Reverting this for now to get the leaks fixed.
-
-Jay Satiro (21 Apr 2018)
-- tool_help: clarify --max-time unit of time is seconds
-
- Before:
- -m, --max-time <time> Maximum time allowed for the transfer
-
- After:
- -m, --max-time <seconds> Maximum time allowed for the transfer
-
-Daniel Stenberg (20 Apr 2018)
-- http2: handle GOAWAY properly
-
- When receiving REFUSED_STREAM, mark the connection for close and retry
- streams accordingly on another/fresh connection.
-
- Reported-by: Terry Wu
- Fixes #2416
- Fixes #1618
- Closes #2510
-
-- http2: clear the "drain counter" when a stream is closed
-
- This fixes the notorious "httpc->drain_total >= data->state.drain"
- assert.
-
- Reported-by: Anders Bakken
-
- Fixes #1680
- Closes #2509
-
-- http2: avoid strstr() on data not zero terminated
-
- It's not strictly clear if the API contract allows us to call strstr()
- on a string that isn't zero terminated even when we know it will find
- the substring, and clang's ASAN check dislikes us for it.
-
- Also added a check of the return code in case it fails, even if I can't
- think of a situation how that can trigger.
-
- Detected by OSS-Fuzz
- Closes #2513
- Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7760
-
-- [Stephan Mühlstrasser brought this change]
-
- openssl: fix subjectAltName check on non-ASCII platforms
-
- Curl_cert_hostcheck operates with the host character set, therefore the
- ASCII subjectAltName string retrieved with OpenSSL must be converted to
- the host encoding before comparison.
-
- Closes #2493
-
-Jay Satiro (20 Apr 2018)
-- openssl: Add support for OpenSSL 1.1.1 verbose-mode trace messages
-
- - Support handling verbose-mode trace messages of type
- SSL3_RT_INNER_CONTENT_TYPE, SSL3_MT_ENCRYPTED_EXTENSIONS,
- SSL3_MT_END_OF_EARLY_DATA, SSL3_MT_KEY_UPDATE, SSL3_MT_NEXT_PROTO,
- SSL3_MT_MESSAGE_HASH
-
- Reported-by: iz8mbw@users.noreply.github.com
-
- Fixes https://github.com/curl/curl/issues/2403
-
-Daniel Stenberg (19 Apr 2018)
-- ftplistparser: keep state between invokes
-
- Regression from f786d1f14
-
- Reported-by: wncboy on github
- Fixes #2445
- Closes #2508
-
-- detect_proxy: only show proxy use if it had contents
-
-- http2: handle on_begin_headers() called more than once
-
- This triggered an assert if called more than once in debug mode (and a
- memory leak if not debug build). With the right sequence of HTTP/2
- headers incoming it can happen.
-
- Detected by OSS-Fuzz
-
- Closes #2507
- Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7764
-
-Jay Satiro (18 Apr 2018)
-- [Dan McNulty brought this change]
-
- schannel: add support for CURLOPT_CAINFO
-
- - Move verify_certificate functionality in schannel.c into a new
- file called schannel_verify.c. Additionally, some structure defintions
- from schannel.c have been moved to schannel.h to allow them to be
- used in schannel_verify.c.
-
- - Make verify_certificate functionality for Schannel available on
- all versions of Windows instead of just Windows CE. verify_certificate
- will be invoked on Windows CE or when the user specifies
- CURLOPT_CAINFO and CURLOPT_SSL_VERIFYPEER.
-
- - In verify_certificate, create a custom certificate chain engine that
- exclusively trusts the certificate store backed by the CURLOPT_CAINFO
- file.
-
- - doc updates of --cacert/CAINFO support for schannel
-
- - Use CERT_NAME_SEARCH_ALL_NAMES_FLAG when invoking CertGetNameString
- when available. This implements a TODO in schannel.c to improve
- handling of multiple SANs in a certificate. In particular, all SANs
- will now be searched instead of just the first name.
-
- - Update tool_operate.c to not search for the curl-ca-bundle.crt file
- when using Schannel to maintain backward compatibility. Previously,
- any curl-ca-bundle.crt file found in that search would have been
- ignored by Schannel. But, with CAINFO support, the file found by
- that search would have been used as the certificate store and
- could cause issues for any users that have curl-ca-bundle.crt in
- the search path.
-
- - Update url.c to not set the build time CURL_CA_BUNDLE if the selected
- SSL backend is Schannel. We allow setting CA location for schannel
- only when explicitly specified by the user via CURLOPT_CAINFO /
- --cacert.
-
- - Add new test cases 3000 and 3001. These test cases check that the first
- and last SAN, respectively, matches the connection hostname. New test
- certificates have been added for these cases. For 3000, the certificate
- prefix is Server-localhost-firstSAN and for 3001, the certificate
- prefix is Server-localhost-secondSAN.
-
- - Remove TODO 15.2 (Add support for custom server certificate
- validation), this commit addresses it.
-
- Closes https://github.com/curl/curl/pull/1325
-
-- schannel: fix warning
-
- - Fix warning 'integer from pointer without a cast' on 3rd arg in
- CertOpenStore. The arg type HCRYPTPROV may be a pointer or integer
- type of the same size.
-
- Follow-up to e35b025.
-
- Caught by Marc's CI builds.
-
-- [Jakub Wilk brought this change]
-
- docs: fix typos
-
- Closes https://github.com/curl/curl/pull/2503
-
-Daniel Stenberg (17 Apr 2018)
-- RELEASE-NOTES: synced
-
-Jay Satiro (17 Apr 2018)
-- [Kees Dekker brought this change]
-
- winbuild: Support custom devel paths for each dependency
-
- - Support custom devel paths for c-ares, mbedTLS, nghttp2, libSSH2,
- OpenSSL and zlib. Respectively: CARES_PATH, MBEDTLS_PATH,
- NGHTTP2_PATH, SSH2_PATH, SSL_PATH and ZLIB_PATH.
-
- - Use lib.exe for making the static library instead of link.exe /lib.
- The latter is undocumented and could cause problems as noted in the
- comments.
-
- - Remove a dangling URL that no longer worked. (I was not able to find
- the IDN download at MSDN/microsoft.com, so it seems to be removed.)
-
- - Remove custom override for release-ssh2-ssl-dll-zlib configuration.
- Nobody knows why it was there and as far as we can see is unnecessary.
-
- Closes https://github.com/curl/curl/pull/2474
-
-Daniel Stenberg (17 Apr 2018)
-- [Jess brought this change]
-
- README.md: add backers and sponsors
-
- Closes #2484
-
-- [Archangel_SDY brought this change]
-
- schannel: add client certificate authentication
-
- Users can now specify a client certificate in system certificates store
- explicitly using expression like `--cert "CurrentUser\MY\<thumbprint>"`
-
- Closes #2376
-
-Marcel Raad (16 Apr 2018)
-- [toughengineer brought this change]
-
- ntlm_sspi: fix authentication using Credential Manager
-
- If you pass empty user/pass asking curl to use Windows Credential
- Storage (as stated in the docs) and it has valid credentials for the
- domain, e.g.
- curl -v -u : --ntlm example.com
- currently authentication fails.
- This change fixes it by providing proper SPN string to the SSPI API
- calls.
-
- Fixes https://github.com/curl/curl/issues/1622
- Closes https://github.com/curl/curl/pull/1660
-
-Daniel Stenberg (16 Apr 2018)
-- configure: keep LD_LIBRARY_PATH changes local
-
- ... only set it when we actually have to run tests to reduce its impact
- on for example build commands etc.
-
- Fixes #2490
- Closes #2492
-
- Reported-by: Dmitry Mikhirev
-
-Marcel Raad (16 Apr 2018)
-- urldata: make service names unconditional
-
- The ifdefs have become quite long. Also, the condition for the
- definition of CURLOPT_SERVICE_NAME and for setting it from
- CURLOPT_SERVICE_NAME have diverged. We will soon also need the two
- options for NTLM, at least when using SSPI, for
- https://github.com/curl/curl/pull/1660.
- Just make the definitions unconditional to make that easier.
-
- Closes https://github.com/curl/curl/pull/2479
-
-Daniel Stenberg (16 Apr 2018)
-- test1148: tolerate progress updates better
-
- Fixes #2446
- Closes #2488
-
-- [Christian Schmitz brought this change]
-
- ssh: show libSSH2 error code when closing fails
-
- Closes #2500
-
-Jay Satiro (15 Apr 2018)
-- [Daniel Gustafsson brought this change]
-
- vauth: Fix typo
-
- Address various spellings of "credentials".
-
- Closes https://github.com/curl/curl/pull/2496
-
-- [Dagobert Michelsen brought this change]
-
- system.h: Add sparcv8plus to oracle/sunpro 32-bit detection
-
- With specific compiler options selecting the arch like -xarch=sparc on
- newer compilers like Oracle Studio 12.4 there is no definition of
- __sparcv8 but __sparcv8plus which means the V9 ISA, but limited to the
- 32ÎíÎñbit subset defined by the V8plus ISA specification, without the
- Visual Instruction Set (VIS), and without other implementation-specific
- ISA extensions. So it should be the same as __sparcv8.
-
- Closes https://github.com/curl/curl/pull/2491
-
-- [Daniel Gustafsson brought this change]
-
- checksrc: Fix typo
-
- Fix typo in "semicolon" spelling and remove stray tab character.
-
- Closes https://github.com/curl/curl/pull/2498
-
-- [Daniel Gustafsson brought this change]
-
- all: Refactor malloc+memset to use calloc
-
- When a zeroed out allocation is required, use calloc() rather than
- malloc() followed by an explicit memset(). The result will be the
- same, but using calloc() everywhere increases consistency in the
- codebase and avoids the risk of subtle bugs when code is injected
- between malloc and memset by accident.
-
- Closes https://github.com/curl/curl/pull/2497
-
-Daniel Stenberg (12 Apr 2018)
-- duphandle: make sure CURLOPT_RESOLVE is duplicated fine too
-
- Verified in test 1502 now
-
- Fixes #2485
- Closes #2486
- Reported-by: Ernst Sjöstrand
-
-- mailmap: add a monnerat fixup [ci skip]
-
-- proxy: show getenv proxy use in verbose output
-
- ... to aid debugging etc as it sometimes isn't immediately obvious why
- curl uses or doesn't use a proxy.
-
- Inspired by #2477
-
- Closes #2480
-
-- travis: build libpsl and make builds use it
-
- closes #2471
-
-- travis: bump to clang 6 and gcc 7
-
- Extra-eye-on-this-by: Marcel Raad
-
- Closes #2478
-
-Marcel Raad (10 Apr 2018)
-- travis: use trusty for coverage build
-
- This works now and precise is in the process of being decommissioned.
-
- Closes https://github.com/curl/curl/pull/2476
-
-- lib: silence null-dereference warnings
-
- In debug mode, MingGW-w64's GCC 7.3 issues null-dereference warnings
- when dereferencing pointers after DEBUGASSERT-ing that they are not
- NULL.
- Fix this by removing the DEBUGASSERTs.
-
- Suggested-by: Daniel Stenberg
- Ref: https://github.com/curl/curl/pull/2463
-
-- [Kees Dekker brought this change]
-
- winbuild: fix URL
-
- Follow up on https://github.com/curl/curl/pull/2472.
- Now using en-us instead of nl-nl as language code in the URL.
-
- Closes https://github.com/curl/curl/pull/2475
-
-Daniel Stenberg (9 Apr 2018)
-- [Kees Dekker brought this change]
-
- winbuild: updated the documentation
-
- The setenv command no longer exists and visual studio build prompts got
- changed. Used Visual Studio 2015/2017 as reference.
-
- Closes #2472
-
-- test1136: fix cookie order after commit c990eadd1277
-
-- build: cleanup to fix clang warnings/errors
-
- unit1309 and vtls/gtls: error: arithmetic on a null pointer treated as a
- cast from integer to pointer is a GNU extension
-
- Reported-by: Rikard Falkeborn
-
- Fixes #2466
- Closes #2468
-
-Jay Satiro (7 Apr 2018)
-- examples/sftpuploadresmue: Fix Windows large file seek
-
- - Use _fseeki64 instead of fseek (long) to seek curl_off_t in Windows.
-
- - Use CURL_FORMAT_CURL_OFF_T specifier instead of %ld to print
- curl_off_t.
-
- Caught by Marc's CI builds.
-
-Daniel Stenberg (7 Apr 2018)
-- curl_setup: provide a CURL_SA_FAMILY_T type if none exists
-
- ... and use this type instead of 'sa_family_t' in the code since several
- platforms don't have it.
-
- Closes #2463
-
-- [Eric Gallager brought this change]
-
- build: add picky compiler warning flags for gcc 6 and 7
-
-- configure: detect sa_family_t
-
-Jay Satiro (7 Apr 2018)
-- [Stefan Agner brought this change]
-
- tool_operate: Fix retry on FTP 4xx to ignore other protocols
-
- Only treat response code as FTP response codes in case the
- protocol type is FTP.
-
- This fixes an issue where an HTTP download was treated as FTP
- in case libcurl returned with 33. This happens when the
- download has already finished and the server responses 416:
- HTTP/1.1 416 Requested Range Not Satisfiable
-
- This should not be treated as an FTP error.
-
- Fixes #2464
- Closes #2465
-
-Daniel Stenberg (6 Apr 2018)
-- hash: calculate sizes with size_t instead of longs
-
- ... since they return size_t anyway!
-
- closes #2462
-
-- RELEASE-NOTES: synced
-
-- [Jay Satiro brought this change]
-
- build-openssl.bat: Refer to VS2017 as VC14.1 instead of VC15
-
- .. and do the same for build-wolfssl.bat.
-
- Because MS calls it VC14.1.
-
- Closes https://github.com/curl/curl/pull/2189
-
-- [Kees Dekker brought this change]
-
- winbuild: make the clean target work without build-type
-
- Due to the check in Makefile.vc and MakefileBuild.vc, no make call can
- be invoked unless a build-type was specified. However, a clean target
- only existed when a build type was specified. As a result, the clean
- target was unreachable. Made clean target unconditional.
-
- Closes #2455
-
-- [patelvivekv1993 brought this change]
-
- build-openssl.bat: allow custom paths for VS and perl
-
- Fixes #2430
- Closes #2457
-
-- [Laurie Clark-Michalek brought this change]
-
- FTP: allow PASV on IPv6 connections when a proxy is being used
-
- In the situation of a client connecting to an FTP server using an IPv6
- tunnel proxy, the connection info will indicate that the connection is
- IPv6. However, because the server behing the proxy is IPv4, it is
- permissable to attempt PSV mode. In the case of the FTP server being
- IPv4 only, EPSV will always fail, and with the current logic curl will
- be unable to connect to the server, as the IPv6 fwdproxy causes curl to
- think that EPSV is impossible.
-
- Closes #2432
-
-- [Jon DeVree brought this change]
-
- file: restore old behavior for file:////foo/bar URLs
-
- curl 7.57.0 and up interpret this according to Appendix E.3.2 of RFC
- 8089 but then returns an error saying this is unimplemented. This is
- actually a regression in behavior on both Windows and Unix.
-
- Before curl 7.57.0 this URL was treated as a path of "//foo/bar" and
- then passed to the relevant OS API. This means that the behavior of this
- case is actually OS dependent.
-
- The Unix path resolution rules say that the OS must handle swallowing
- the extra "/" and so this path is the same as "/foo/bar"
-
- The Windows path resolution rules say that this is a UNC path and
- automatically handles the SMB access for the program. So curl on Windows
- was already doing Appendix E.3.2 without any special code in curl.
-
- Regression
-
- Closes #2438
-
-- [Gaurav Malhotra brought this change]
-
- Revert "openssl: Don't add verify locations when verifypeer==0"
-
- This reverts commit dc85437736e1fc90e689bb1f6c51c8f1aa9430eb.
-
- libcurl (with the OpenSSL backend) performs server certificate verification
- even if verifypeer == 0 and the verification result is available using
- CURLINFO_SSL_VERIFYRESULT. The commit that is being reverted caused the
- CURLINFO_SSL_VERIFYRESULT to not have useful information for the
- verifypeer == 0 use case (it would always have
- X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY).
-
- Closes #2451
-
-- [Wyatt O'Day brought this change]
-
- tls: fix mbedTLS 2.7.0 build + handle sha256 failures
-
- (mbedtls 2.70 compiled with MBEDTLS_DEPRECATED_REMOVED)
-
- Closes #2453
-
-- [Lauri Kasanen brought this change]
-
- cookie: case-insensitive hashing for the domains
-
- closes #2458
-
-Patrick Monnerat (4 Apr 2018)
-- cookie: fix and optimize 2nd top level domain name extraction
-
- This fixes a segfault occurring when a name of the (invalid) form "domain..tld"
- is processed.
-
- test46 updated to cover this case.
-
- Follow-up to commit c990ead.
-
- Ref: https://github.com/curl/curl/pull/2440
-
-Daniel Stenberg (4 Apr 2018)
-- openssl: provide defines for argument typecasts to build warning-free
-
- ... as OpenSSL >= 1.1.0 and libressl >= 2.7.0 use different argument types.
-
-- [Bernard Spil brought this change]
-
- openssl: fix build with LibreSSL 2.7
-
- - LibreSSL 2.7 implements (most of) OpenSSL 1.1 API
-
- Fixes #2319
- Closes #2447
- Closes #2448
-
- Signed-off-by: Bernard Spil <brnrd@FreeBSD.org>
-
-- [Lauri Kasanen brought this change]
-
- cookie: store cookies per top-level-domain-specific hash table
-
- This makes libcurl handle thousands of cookies much better and speedier.
-
- Closes #2440
-
-- [Lauri Kasanen brought this change]
-
- cookies: when reading from a file, only remove_expired once
-
- This drops the cookie load time for 8k cookies from 178ms to 15ms.
-
- Closes #2441
-
-- test1148: set a fixed locale for the test
-
- ...as otherwise it might use a different decimal sign.
-
- Bug: #2436
- Reported-by: Oumph on github
-
-Jay Satiro (31 Mar 2018)
-- docs: fix CURLINFO_*_T examples use of CURL_FORMAT_CURL_OFF_T
-
- - Put a percent sign before each CURL_FORMAT_CURL_OFF_T in printf.
-
- For example "%" CURL_FORMAT_CURL_OFF_T becomes %lld or similar.
-
- Bug: https://curl.haxx.se/mail/lib-2018-03/0140.html
- Reported-by: David L.
-
-Sergei Nikulov (27 Mar 2018)
-- [Michał Janiszewski brought this change]
-
- cmake: Add advapi32 as explicit link library for win32
-
- ARM targets need advapi32 explicitly.
-
- Closes #2363
-
-Daniel Stenberg (27 Mar 2018)
-- TODO: connection cache sharing is now supporte
-
-Jay Satiro (26 Mar 2018)
-- travis: enable apt retry on fail
-
- This is a workaround for an unsolved travis issue that is causing CI
- instances to sporadically fail due to 'unable to connect' issues during
- apt stage.
-
- Ref: https://github.com/travis-ci/travis-ci/issues/8507
- Ref: https://github.com/travis-ci/travis-ci/issues/9112#issuecomment-376305909
-
-Michael Kaufmann (26 Mar 2018)
-- runtests.pl: fix warning 'use of uninitialized value'
-
- follow-up to a9a7b60
-
- Closes #2428
-
-Daniel Stenberg (24 Mar 2018)
-- gitignore: ignore more generated files
-
-- threaded resolver: track resolver time and set suitable timeout values
-
- In order to make curl_multi_timeout() return suitable "sleep" times even
- when there's no socket to wait for while the name is being resolved in a
- helper thread.
-
- It will increases the timeouts as time passes.
-
- Closes #2419
-
-- [Howard Chu brought this change]
-
- openldap: fix for NULL return from ldap_get_attribute_ber()
-
- Closes #2399
-
-GitHub (22 Mar 2018)
-- [Sergei Nikulov brought this change]
-
- travis-ci: enable -Werror for CMake builds (#2418)
-
-- [Sergei Nikulov brought this change]
-
- cmake: avoid warn-as-error during config checks (#2411)
-
- - Move the CURL_WERROR option processing after the configuration checks
- to avoid failures in case of warnings during the configuration checks.
-
- This is a partial fix for #2358
-
-- [Sergei Nikulov brought this change]
-
- timeval: remove compilation warning by casting (#2417)
-
- This is fixes #2358
-
-Daniel Stenberg (22 Mar 2018)
-- http2: read pending frames (including GOAWAY) in connection-check
-
- If a connection has received a GOAWAY frame while not being used, the
- function now reads frames off the connection before trying to reuse it
- to avoid reusing connections the server has told us not to use.
-
- Reported-by: Alex Baines
- Fixes #1967
- Closes #2402
-
-- [Bas van Schaik brought this change]
-
- CI: add lgtm.yml for tweaking lgtm.com analysis
-
- Closes #2414
-
-- CURLINFO_SSL_VERIFYRESULT.3: fix the example, add some text
-
- Reported-by: Michal Trybus
-
- Fixes #2400
-
-- TODO: expand ~/ in config files
-
- Closes #2317
-
-- cookie.d: mention that "-" as filename means stdin
-
- Reported-by: Dongliang Mu
- Fixes #2410
-
-- CURLINFO_COOKIELIST.3: made the example not leak memory
-
- Reported-by: Muz Dima
-
-- vauth/cleartext: fix integer overflow check
-
- Make the integer overflow check not rely on the undefined behavior that
- a size_t wraps around on overflow.
-
- Detected by lgtm.com
- Closes #2408
-
-- lib/curl_path.h: add #ifdef header guard
-
- Detected by lgtm.com
-
-- vauth/ntlm.h: fix the #ifdef header guard
-
- Detected by lgtm.com
-
-Jay Satiro (20 Mar 2018)
-- examples/hiperfifo: checksrc compliance
-
-Daniel Stenberg (19 Mar 2018)
-- [Nikos Tsipinakis brought this change]
-
- parsedate: support UT timezone
-
- RFC822 section 5.2 mentions Universal Time, 'UT', to be synonymous with
- GMT.
-
- Closes #2401
-
-- RELEASE-NOTES: synced
-
-- [Don brought this change]
-
- cmake: add support for brotli
-
- Currently CMake cannot detect Brotli support. This adds detection of the
- libraries and associated header files. It also adds this to the
- generated config.
-
- Closes #2392
-
-- [Chris Araman brought this change]
-
- darwinssl: fix iOS build
-
-Patrick Monnerat (18 Mar 2018)
-- ILE/RPG binding: Add CURLOPT_HAPROXYPROTOCOL/Fix CURLOPT_DNS_SHUFFLE_ADDRESSES
-
-Daniel Stenberg (17 Mar 2018)
-- [Rick Deist brought this change]
-
- resolve: add CURLOPT_DNS_SHUFFLE_ADDRESSES
-
- This patch adds CURLOPT_DNS_SHUFFLE_ADDRESSES to explicitly request
- shuffling of IP addresses returned for a hostname when there is more
- than one. This is useful when the application knows that a round robin
- approach is appropriate and is willing to accept the consequences of
- potentially discarding some preference order returned by the system's
- implementation.
-
- Closes #1694
-
-- add_handle/easy_perform: clear errorbuffer on start if set
-
- To offer applications a more defined behavior, we clear the buffer as
- early as possible.
-
- Assisted-by: Jay Satiro
-
- Fixes #2190
- Closes #2377
-
-- [Lawrence Matthews brought this change]
-
- CURLOPT_HAPROXYPROTOCOL: support the HAProxy PROXY protocol
-
- Add --haproxy-protocol for the command line tool
-
- Closes #2162
-
-- curl_version_info.3: fix ssl_version description
-
- Reported-by: Vincas Razma
- Fixes #2364
-
-- multi: improved pending transfers handling => improved performance
-
- When a transfer is requested to get done and it is put in the pending
- queue when limited by number of connections, total or per-host, libcurl
- would previously very aggressively retry *ALL* pending transfers to get
- them transferring. That was very time consuming.
-
- By reducing the aggressiveness in how pending are being retried, we
- waste MUCH less time on putting transfers back into pending again.
-
- Some test cases got a factor 30(!) speed improvement with this change.
-
- Reported-by: Cyril B
- Fixes #2369
- Closes #2383
-
-- pause: when changing pause state, update socket state
-
- Especially unpausing a transfer might have to move the socket back to the
- "currently used sockets" hash to get monitored. Otherwise it would never get
- any more data and get stuck. Easily triggered with pausing using the
- multi_socket API.
-
- Reported-by: Philip Prindeville
- Bug: https://curl.haxx.se/mail/lib-2018-03/0048.html
- Fixes #2393
- Closes #2391
-
-- [Philip Prindeville brought this change]
-
- examples/hiperfifo.c: improved
-
- * use member struct event’s instead of pointers to alloc’d struct
- events
-
- * simplify the cases for the mcode_or_die() function via macros;
-
- * make multi_timer_cb() actually do what the block comment says it
- should;
-
- * accept a “stop†command on the FIFO to shut down the service;
-
- * use cleaner notation for unused variables than the (void) hack;
-
- * allow following redirections (304’s);
-
-- rate-limit: use three second window to better handle high speeds
-
- Due to very frequent updates of the rate limit "window", it could
- attempt to rate limit within the same milliseconds and that then made
- the calculations wrong, leading to it not behaving correctly on very
- fast transfers.
-
- This new logic updates the rate limit "window" to be no shorter than the
- last three seconds and only updating the timestamps for this when
- switching between the states TOOFAST/PERFORM.
-
- Reported-by: 刘佩东
- Fixes #2386
- Closes #2388
-
-- [luz.paz brought this change]
-
- cleanup: misc typos in strings and comments
-
- Found via `codespell`
-
- Closes #2389
-
-- RELEASE-NOTES: toward 7.60.0
-
-- [Kobi Gurkan brought this change]
-
- http2: fixes typo
-
- Closes #2387
-
-- user-agent.d:: mention --proxy-header as well
-
- Bug: https://github.com/curl/curl/issues/2381
-
-- transfer: make HTTP without headers count correct body size
-
- This is what "HTTP/0.9" basically looks like.
-
- Reported on IRC
-
- Closes #2382
-
-- test1208: marked flaky
-
- It fails somewhere between every 3rd to 10th travis-CI run
-
-- SECURITY-PROCESS: mention how we write/add advisories
-
-- [dasimx brought this change]
-
- FTP: fix typo in recursive callback detection for seeking
-
- Fixes #2380
-
-Version 7.59.0 (13 Mar 2018)
-
-Daniel Stenberg (13 Mar 2018)
-- release: 7.59.0
-
-Kamil Dudka (13 Mar 2018)
-- tests/.../spnego.py: fix identifier typo
-
- Detected by Coverity Analysis:
-
- Error: IDENTIFIER_TYPO:
- curl-7.58.0/tests/python_dependencies/impacket/spnego.py:229: identifier_typo: Using "SuportedMech" appears to be a typo:
- * Identifier "SuportedMech" is only known to be referenced here, or in copies of this code.
- * Identifier "SupportedMech" is referenced elsewhere at least 4 times.
- curl-7.58.0/tests/python_dependencies/impacket/smbserver.py:2651: identifier_use: Example 1: Using identifier "SupportedMech".
- curl-7.58.0/tests/python_dependencies/impacket/smbserver.py:2308: identifier_use: Example 2: Using identifier "SupportedMech".
- curl-7.58.0/tests/python_dependencies/impacket/spnego.py:252: identifier_use: Example 3: Using identifier "SupportedMech" (2 total uses in this function).
- curl-7.58.0/tests/python_dependencies/impacket/spnego.py:229: remediation: Should identifier "SuportedMech" be replaced by "SupportedMech"?
-
- Closes #2379
-
-Daniel Stenberg (13 Mar 2018)
-- CURLOPT_COOKIEFILE.3: "-" as file name means stdin
-
- Reported-by: Aron Bergman
- Bug: https://curl.haxx.se/mail/lib-2018-03/0049.html
-
- [ci skip]
-
-- Revert "hostip: fix compiler warning: 'variable set but not used'"
-
- This reverts commit a577059f92fc65bd6b81717f0737f897a5b34248.
-
- The assignment really needs to be there or we risk working with an
- uninitialized pointer.
-
-Michael Kaufmann (12 Mar 2018)
-- limit-rate: fix compiler warning
-
- follow-up to 72a0f62
-
-Viktor Szakats (12 Mar 2018)
-- checksrc.pl: add -i and -m options
-
- To sync it with changes made for the libssh2 project.
- Also cleanup some whitespace.
-
-- curl-openssl.m4: fix spelling [ci skip]
-
-- FAQ: fix a broken URL [ci skip]
-
-Daniel Stenberg (12 Mar 2018)
-- http2: mark the connection for close on GOAWAY
-
- ... don't consider it an error!
-
- Assisted-by: Jay Satiro
- Reported-by: Åukasz Domeradzki
- Fixes #2365
- Closes #2375
-
-- credits: Viktor prefers without accent
-
-- openldap: white space changes, fixed up the copyright years
-
-- openldap: check ldap_get_attribute_ber() results for NULL before using
-
- CVE-2018-1000121
- Reported-by: Dario Weisser
- Bug: https://curl.haxx.se/docs/adv_2018-97a2.html
-
-- FTP: reject path components with control codes
-
- Refuse to operate when given path components featuring byte values lower
- than 32.
-
- Previously, inserting a %00 sequence early in the directory part when
- using the 'singlecwd' ftp method could make curl write a zero byte
- outside of the allocated buffer.
-
- Test case 340 verifies.
-
- CVE-2018-1000120
- Reported-by: Duy Phan Thanh
- Bug: https://curl.haxx.se/docs/adv_2018-9cd6.html
-
-- readwrite: make sure excess reads don't go beyond buffer end
-
- CVE-2018-1000122
- Bug: https://curl.haxx.se/docs/adv_2018-b047.html
-
- Detected by OSS-fuzz
-
-- BUGS: updated link to security process
-
-- limit-rate: kick in even before "limit" data has been received
-
- ... and make sure to avoid integer overflows with really large values.
-
- Reported-by: 刘佩东
- Fixes #2371
- Closes #2373
-
-- docs/SECURITY.md -> docs/SECURITY-PROCESS.md
-
-- SECURITY.md: call it the security process
-
-Michael Kaufmann (11 Mar 2018)
-- Curl_range: fix FTP-only and FILE-only builds
-
- follow-up to e04417d
-
-- hostip: fix compiler warning: 'variable set but not used'
-
-Daniel Stenberg (11 Mar 2018)
-- HTTP: allow "header;" to replace an internal header with a blank one
-
- Reported-by: Michael Kaufmann
- Fixes #2357
- Closes #2362
-
-- http2: verbose output new MAX_CONCURRENT_STREAMS values
-
- ... as it is interesting for many users.
-
-- SECURITY: distros' max embargo time is 14 days now
-
-Patrick Monnerat (8 Mar 2018)
-- curl tool: accept --compressed also if Brotli is enabled and zlib is not.
-
-Daniel Stenberg (5 Mar 2018)
-- THANKS + mailmap: remove duplicates, fixup full names
-
-- [sergii.kavunenko brought this change]
-
- WolfSSL: adding TLSv1.3
-
- Closes #2349
diff --git a/METADATA b/METADATA
index d690c592..7610b959 100644
--- a/METADATA
+++ b/METADATA
@@ -7,12 +7,12 @@ third_party {
}
url {
type: ARCHIVE
- value: "https://github.com/curl/curl/releases/download/curl-7_64_0/curl-7.64.0.tar.xz"
+ value: "https://github.com/curl/curl/releases/download/curl-7_64_1/curl-7.64.1.tar.xz"
}
- version: "curl-7_64_0"
+ version: "curl-7_64_1"
last_upgrade_date {
year: 2019
- month: 2
- day: 6
+ month: 3
+ day: 27
}
}
diff --git a/Makefile.am b/Makefile.am
index debec9aa..ac5eca3b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -155,9 +155,9 @@ WINBUILD_DIST = winbuild/BUILD.WINDOWS.txt winbuild/gen_resp_file.bat \
winbuild/MakefileBuild.vc winbuild/Makefile.vc
EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \
- RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework scripts/zsh.pl \
+ RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework \
scripts/updatemanpages.pl $(CMAKE_DIST) $(VC_DIST) $(WINBUILD_DIST) \
- lib/libcurl.vers.in buildconf.bat scripts/coverage.sh
+ lib/libcurl.vers.in buildconf.bat scripts/coverage.sh scripts/completion.pl
CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP) $(VC7_LIBVCPROJ) $(VC7_SRCVCPROJ) \
$(VC71_LIBVCPROJ) $(VC71_SRCVCPROJ) $(VC8_LIBVCPROJ) $(VC8_SRCVCPROJ) \
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 9574e14b..644b6d78 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -1,97 +1,134 @@
-curl and libcurl 7.64.0
+curl and libcurl 7.64.1
- Public curl releases: 179
- Command line options: 220
- curl_easy_setopt() options: 265
+ Public curl releases: 180
+ Command line options: 221
+ curl_easy_setopt() options: 267
Public functions in libcurl: 80
- Contributors: 1875
+ Contributors: 1929
This release includes the following changes:
- o cookies: leave secure cookies alone [3]
- o hostip: support wildcard hosts [23]
- o http: Implement trailing headers for chunked transfers [7]
- o http: added options for allowing HTTP/0.9 responses [10]
- o timeval: Use high resolution timestamps on Windows [19]
+ o alt-svc: experiemental support added [74]
+ o configure: add --with-amissl [84]
This release includes the following bugfixes:
- o CVE-2018-16890: NTLM type-2 out-of-bounds buffer read [67]
- o CVE-2019-3822: NTLMv2 type-3 header stack buffer overflow [68]
- o CVE-2019-3823: SMTP end-of-response out-of-bounds read [66]
- o FAQ: remove mention of sourceforge for github [22]
- o OS400: handle memory error in list conversion [4]
- o OS400: upgrade ILE/RPG binding.
- o README: add codacy code quality badge
- o Revert http_negotiate: do not close connection [31]
- o THANKS: added several missing names from year <= 2000
- o build: make 'tidy' target work for metalink builds
- o cmake: added checks for variadic macros [47]
- o cmake: updated check for HAVE_POLL_FINE to match autotools [39]
- o cmake: use lowercase for function name like the rest of the code [20]
- o configure: detect xlclang separately from clang [41]
- o configure: fix recv/send/select detection on Android [53]
- o configure: rewrite --enable-code-coverage [61]
- o conncache_unlock: avoid indirection by changing input argument type
- o cookie: fix comment typo [44]
- o cookies: allow secure override when done over HTTPS [34]
- o cookies: extend domain checks to non psl builds [12]
- o cookies: skip custom cookies when redirecting cross-site [36]
- o curl --xattr: strip credentials from any URL that is stored [33]
- o curl -J: refuse to append to the destination file [14]
- o curl/urlapi.h: include "curl.h" first [30]
- o curl_multi_remove_handle() don't block terminating c-ares requests [32]
- o darwinssl: accept setting max-tls with default min-tls [6]
- o disconnect: separate connections and easy handles better [18]
- o disconnect: set conn->data for protocol disconnect
- o docs/version.d: mention MultiSSL [26]
- o docs: fix the --tls-max description [2]
- o docs: use $(INSTALL_DATA) to install man page [64]
- o docs: use meaningless port number in CURLOPT_LOCALPORT example [58]
- o gopher: always include the entire gopher-path in request [5]
- o http2: clear pause stream id if it gets closed [8]
- o if2ip: remove unused function Curl_if_is_interface_name [9]
- o libssh: do not let libssh create socket [63]
- o libssh: enable CURLOPT_SSH_KNOWNHOSTS and CURLOPT_SSH_KEYFUNCTION for libssh [62]
- o libssh: free sftp_canonicalize_path() data correctly [17]
- o libtest/stub_gssapi: use "real" snprintf [27]
- o mbedtls: use VERIFYHOST [15]
- o multi: multiplexing improvements [35]
- o multi: set the EXPIRE_*TIMEOUT timers at TIMER_STARTSINGLE time [57]
- o ntlm: fix NTMLv2 compliance [25]
- o ntlm_sspi: add support for channel binding [54]
- o openssl: adapt to 3.0.0, OpenSSL_version_num() is deprecated [46]
- o openssl: fix the SSL_get_tlsext_status_ocsp_resp call [40]
- o openvms: fix OpenSSL discovery on VAX [21]
- o openvms: fix typos in documentation
- o os400: add a missing closing bracket [50]
- o os400: fix extra parameter syntax error [50]
- o pingpong: change default response timeout to 120 seconds
- o pingpong: ignore regular timeout in disconnect phase [16]
- o printf: fix format specifiers [28]
- o runtests.pl: Fix perl call to include srcdir [65]
- o schannel: fix compiler warning [29]
- o schannel: preserve original certificate path parameter [52]
- o schannel: stop calling it "winssl" [56]
- o sigpipe: if mbedTLS is used, ignore SIGPIPE [59]
- o smb: fix incorrect path in request if connection reused [13]
- o ssh: log the libssh2 error message when ssh session startup fails [55]
- o test1558: verify CURLINFO_PROTOCOL on file:// transfer [51]
- o test1561: improve test name
- o test1653: make it survive torture tests
- o tests: allow tests to pass by 2037-02-12 [38]
- o tests: move objnames-* from lib into tests [42]
- o timediff: fix math for unsigned time_t [37]
- o timeval: Disable MSVC Analyzer GetTickCount warning [60]
- o tool_cb_prg: avoid integer overflow [49]
- o travis: added cmake build for osx [43]
- o urlapi: Fix port parsing of eol colon [1]
- o urlapi: distinguish possibly empty query [5]
- o urlapi: fix parsing ipv6 with zone index [24]
- o urldata: rename easy_conn to just conn [48]
- o winbuild: conditionally use /DZLIB_WINAPI [45]
- o wolfssl: fix memory-leak in threaded use [11]
- o spnego_sspi: add support for channel binding [69]
+ o AppVeyor: add MinGW-w64 and classic Mingw builds [55]
+ o AppVeyor: switch VS 2015 builds to VS 2017 image [49]
+ o CURLU: fix NULL dereference when used over proxy [73]
+ o Curl_easy: remove req.maxfd - never used! [58]
+ o Curl_now: figure out windows version in win32_init: [11]
+ o Curl_resolv: fix a gcc -Werror=maybe-uninitialized warning [20]
+ o DoH: inherit some SSL options from user's easy handle [80]
+ o Secure Transport: no more "darwinssl" [56]
+ o Secure Transport: tvOS 11 is required for ALPN support [94]
+ o cirrus: Added FreeBSD builds using Cirrus CI
+ o cleanup: make local functions static [5]
+ o cli tool: do not use mime.h private structures [27]
+ o cmdline-opts/proxytunnel.d: the option tunnnels all protocols [83]
+ o configure: add additional libraries to check for LDAP support [45]
+ o configure: remove the unused fdopen macro [40]
+ o configure: show features as well in the final summary [15]
+ o conncache: use conn->data to know if a transfer owns it [95]
+ o connection: never reuse CONNECT_ONLY connections [35]
+ o connection_check: restore original conn->data after the check [14]
+ o connection_check: set ->data to the transfer doing the check [3]
+ o cookie: Add support for cookie prefixes [29]
+ o cookies: dotless names can set cookies again [81]
+ o cookies: fix NULL dereference if flushing cookies with no CookieInfo set [47]
+ o curl.1: --user and --proxy-user are hidden from ps output [86]
+ o curl.1: mark the argument to --cookie as <data|filename> [87]
+ o curl.h: use __has_declspec_attribute for shared builds [52]
+ o curl: display --version features sorted alphabetically [51]
+ o curl: fix FreeBSD compiler warning in the --xattr code [2]
+ o curl: remove MANUAL from -M output [38]
+ o curl_easy_duphandle.3: clarify that a duped handle has no shares [64]
+ o curl_multi_remove_handle.3: use at any time, just not from within callbacks
+ o curl_url.3: this API is not experimental anymore
+ o dns: release sharelock as soon as possible [1]
+ o docs: update max-redirs.d phrasing [59]
+ o easy: fix win32 init to work without CURL_GLOBAL_WIN32 [30]
+ o examples/10-at-a-time.c: improve readability and simplify
+ o examples/cacertinmem.c: use multiple certificates for loading CA-chain [54]
+ o examples/crawler: Fix the Accept-Encoding setting
+ o examples/ephiperfifo.c: various fixes [63]
+ o examples/externalsocket: add missing close socket calls [78]
+ o examples/http2-download: cleaned up
+ o examples/http2-serverpush: add some sensible error checks [31]
+ o examples/http2-upload: cleaned up
+ o examples/httpcustomheader: Value stored to 'res' is never read
+ o examples/postinmemory: Potential leak of memory pointed to by 'chunk.memory'
+ o examples/sftpuploadresume: Value stored to 'result' is never read
+ o examples: only include <curl/curl.h> [70]
+ o examples: remove recursive calls to curl_multi_socket_action [42]
+ o examples: remove superfluous null-pointer checks
+ o file: fix "Checking if unsigned variable 'readcount' is less than zero." [90]
+ o fnmatch: disable if FTP is disabled [25]
+ o gnutls: remove call to deprecated gnutls_compression_get_name [66]
+ o gopher: remove check for path == NULL [69]
+ o gssapi: fix deprecated header warnings [16]
+ o hostip: make create_hostcache_id avoid alloc + free [4]
+ o http2: multi_connchanged() moved from multi.c, only used for h2 [21]
+ o http2: verify :athority in push promise requests [37]
+ o http: make adding a blank header thread-safe [33]
+ o http: send payload when (proxy) authentication is done [89]
+ o http: set state.infilesize when sending multipart formposts [57]
+ o makefile: make checksrc and hugefile commands "silent" [85]
+ o mbedtls: make it build even if MBEDTLS_VERSION_C isn't set [24]
+ o mbedtls: release sessionid resources on error [28]
+ o memdebug: log pointer before freeing its data [91]
+ o memdebug: make debug-specific functions use curl_dbg_ prefix [82]
+ o mime: put the boundary buffer into the curl_mime struct [18]
+ o multi: call multi_done on connect timeouts, fixes CURLINFO_TOTAL_TIME [43]
+ o multi: remove verbose "Expire in" ... messages [23]
+ o multi: removed unused code for request retries [79]
+ o multi: support verbose conncache closure handle [72]
+ o negotiate: fix for HTTP POST with Negotiate [88]
+ o openssl: add support for TLS ASYNC state [46]
+ o openssl: if cert type is ENG and no key specified, key is ENG too [93]
+ o pretransfer: don't strlen() POSTFIELDS set for GET requests [22]
+ o rand: Fix a mismatch between comments in source and header [32]
+ o runtests: detect "schannel" as an alias for "winssl" [50]
+ o schannel: be quiet - remove verbose output [19]
+ o schannel: close TLS before removing conn from cache [10]
+ o schannel: support CALG_ECDH_EPHEM algorithm [44]
+ o scripts/completion.pl: also generate fish completion file [67]
+ o singlesocket: fix the 'sincebefore' placement [36]
+ o source: fix two 'nread' may be used uninitialized warnings [68]
+ o ssh: fix Condition '!status' is always true [60]
+ o ssh: loop the state machine if not done and not blocking [71]
+ o strerror: make the strerror function use local buffers [48]
+ o system_win32: move win32_init here from easy.c [65]
+ o test578: make it read data from the correct test
+ o tests: Fixed XML validation errors in some test files
+ o tests: add stderr comparison to the test suite [26]
+ o tests: fix multiple may be used uninitialized warnings
+ o threaded-resolver: shutdown the resolver thread without error message [61]
+ o tool_cb_wrt: fix writing to Windows null device NUL [96]
+ o tool_getpass: termios.h is present on AmigaOS 3, but no tcgetattr/tcsetattr [84]
+ o tool_operate: build on AmigaOS [84]
+ o tool_operate: fix typecheck warning [9]
+ o transfer.c: do not compute length of undefined hex buffer
+ o travis: add build using gnutls [75]
+ o travis: add scan-build [13]
+ o travis: bump the used wolfSSL version to 4.0.0 [92]
+ o travis: enable valgrind for the iconv tests [12]
+ o travis: use updated compiler versions: clang 7 and gcc 8 [77]
+ o unit1307: require FTP support [17]
+ o unit1651: survive curl_easy_init() fails
+ o url/idnconvert: remove scan for <= 32 ascii values [6]
+ o url: change conn shutdown order to ensure SOCKETFUNCTION callbacks [39]
+ o urlapi: reduce variable scope, remove unreachable 'break' [7]
+ o urldata: convert bools to bitfields and move to end [53]
+ o urldata: simplify bytecounters [62]
+ o urlglob: Argument with 'nonnull' attribute passed null
+ o version.c: silent scan-build even when librtmp is not enabled
+ o vtls: rename some of the SSL functions [84]
+ o wolfssl: stop custom-adding curves [41]
+ o x509asn1: "Dereference of null pointer"
+ o x509asn1: cleanup and unify code layout [34]
+ o zsh.pl: escape ':' character [8]
+ o zsh.pl: update regex to better match curl -h output [8]
This release includes the following known bugs:
@@ -100,91 +137,117 @@ This release includes the following known bugs:
This release would not have looked like this without help, code, reports and
advice from friends like these:
- Alessandro Ghedini, Andrei Neculau, Archangel SDY, Ayoub Boudhar, Ben Kohler,
- Bernhard M. Wiedemann, Brad Spencer, Brian Carpenter, Claes Jakobsson,
- Daniel Gustafsson, Daniel Stenberg, David Garske, dnivras on github,
- Eric Rosenquist, Etienne Simard, Felix Hädicke, Florian Pritz,
- Frank Gevaerts, Giorgos Oikonomou, Gisle Vanem, GitYuanQu on github,
- Haibo Huang, Harry Sintonen, Helge Klein, Huzaifa Sidhpurwala,
- jasal82 on github, Jeremie Rapin, Jeroen Ooms, Joel Depooter, John Marshall,
- jonrumsey on github, Julian Z, Kamil Dudka, Katsuhiko YOSHIDA, Kees Dekker,
- Ladar Levison, Leonardo Taccari, Marcel Raad, Markus Moeller,
- masbug on github, Matus Uzak, Michael Kujawa, Patrick Monnerat, Pavel Pavlov,
- Peng Li, Ray Satiro, Rikard Falkeborn, Ruslan Baratov, Sergei Nikulov,
- Shlomi Fish, Tobias Lindgren, Tom van der Woerdt, Viktor Szakats,
- Wenxiang Qian, William A. Rowe Jr, Zhao Yisha,
- (56 contributors)
+ accountantM on github, Alessandro Ghedini, Andre Guibert de Bruet,
+ Arnaud Rebillout, Bernd Mueller, Björn Stenberg, buzo-ffm on github,
+ Chris Araman, Christian Schmitz, Chris Young, d912e3 on github, Dan Fandrich,
+ Daniel Gustafsson, Daniel Lublin, Daniel Stenberg, David Garske,
+ David Woodhouse, Dominik Hölzl, Don J Olmstead, Eric Curtin, Frank Gevaerts,
+ Gisle Vanem, James Brown, Jan Alexander Steffens, jnbr on github,
+ MAntoniak on github, Marcel Raad, Marc Schlatter, Matt McClure, Michael Felt,
+ Michael Schmid, Michael Wallner, Michał Antoniak, nedres on github,
+ nianxuejie on github, Nick Zitzmann, Nicolas Grekas, Patrick Monnerat,
+ Paul Groke, Pavel Löbl, Ray Satiro, Renaud Allard, Romain Geissler,
+ Sara Golemon, Simon Legner, tholin on github, Tim Rühsen, Volker Schmid,
+ wesinator on github,
+ (49 contributors)
Thanks! (and sorry if I forgot to mention someone)
References to bug reports and discussions on issues:
- [1] = https://curl.haxx.se/bug/?i=3365
- [2] = https://curl.haxx.se/bug/?i=3368
- [3] = https://curl.haxx.se/bug/?i=2956
- [4] = https://curl.haxx.se/bug/?i=3372
- [5] = https://curl.haxx.se/bug/?i=3369
- [6] = https://curl.haxx.se/bug/?i=3367
- [7] = https://curl.haxx.se/bug/?i=3350
- [8] = https://curl.haxx.se/bug/?i=3392
- [9] = https://curl.haxx.se/bug/?i=3401
- [10] = https://curl.haxx.se/bug/?i=2873
- [11] = https://curl.haxx.se/bug/?i=3395
- [12] = https://curl.haxx.se/bug/?i=2964
- [13] = https://curl.haxx.se/bug/?i=3388
- [14] = https://curl.haxx.se/bug/?i=3380
- [15] = https://curl.haxx.se/bug/?i=3376
- [16] = https://curl.haxx.se/bug/?i=3264
- [17] = https://curl.haxx.se/bug/?i=3402
- [18] = https://curl.haxx.se/bug/?i=3400
- [19] = https://curl.haxx.se/bug/?i=3318
- [20] = https://curl.haxx.se/bug/?i=3196
- [21] = https://curl.haxx.se/bug/?i=3407
- [22] = https://curl.haxx.se/bug/?i=3410
- [23] = https://curl.haxx.se/bug/?i=3406
- [24] = https://curl.haxx.se/bug/?i=3411
- [25] = https://curl.haxx.se/bug/?i=3286
- [26] = https://curl.haxx.se/bug/?i=3432
- [27] = https://curl.haxx.se/mail/lib-2019-01/0000.html
- [28] = https://curl.haxx.se/bug/?i=3426
- [29] = https://curl.haxx.se/bug/?i=3435
- [30] = https://curl.haxx.se/bug/?i=3438
- [31] = https://curl.haxx.se/bug/?i=3384
- [32] = https://curl.haxx.se/bug/?i=3371
- [33] = https://curl.haxx.se/bug/?i=3423
- [34] = https://curl.haxx.se/bug/?i=3445
- [35] = https://curl.haxx.se/bug/?i=3436
- [36] = https://curl.haxx.se/bug/?i=3417
- [37] = https://curl.haxx.se/bug/?i=3449
- [38] = https://curl.haxx.se/bug/?i=3443
- [39] = https://curl.haxx.se/bug/?i=3292
- [40] = https://curl.haxx.se/bug/?i=3477
- [41] = https://curl.haxx.se/bug/?i=3474
- [42] = https://curl.haxx.se/bug/?i=3470
- [43] = https://curl.haxx.se/bug/?i=3468
- [44] = https://curl.haxx.se/bug/?i=3469
- [45] = https://curl.haxx.se/bug/?i=3133
- [46] = https://curl.haxx.se/bug/?i=3462
- [47] = https://curl.haxx.se/bug/?i=3459
- [48] = https://curl.haxx.se/bug/?i=3442
- [49] = https://curl.haxx.se/bug/?i=3456
- [50] = https://curl.haxx.se/bug/?i=3453
- [51] = https://curl.haxx.se/bug/?i=3447
- [52] = https://curl.haxx.se/bug/?i=3480
- [53] = https://curl.haxx.se/bug/?i=3484
- [54] = https://curl.haxx.se/bug/?i=3280
- [55] = https://curl.haxx.se/bug/?i=3481
- [56] = https://curl.haxx.se/bug/?i=3504
- [57] = https://curl.haxx.se/mail/lib-2019-01/0073.html
- [58] = https://curl.haxx.se/bug/?i=3513
- [59] = https://curl.haxx.se/bug/?i=3502
- [60] = https://curl.haxx.se/bug/?i=3437
- [61] = https://curl.haxx.se/bug/?i=3497
- [62] = https://curl.haxx.se/bug/?i=3493
- [63] = https://curl.haxx.se/bug/?i=3491
- [64] = https://curl.haxx.se/bug/?i=3518
- [65] = https://curl.haxx.se/bug/?i=3496
- [66] = https://curl.haxx.se/docs/CVE-2019-3823.html
- [67] = https://curl.haxx.se/docs/CVE-2018-16890.html
- [68] = https://curl.haxx.se/docs/CVE-2019-3822.html
- [69] = https://curl.haxx.se/bug/?i=3503
+ [1] = https://curl.haxx.se/bug/?i=3516
+ [2] = https://curl.haxx.se/bug/?i=3550
+ [3] = https://curl.haxx.se/bug/?i=3541
+ [4] = https://curl.haxx.se/bug/?i=3544
+ [5] = https://curl.haxx.se/bug/?i=3538
+ [6] = https://curl.haxx.se/bug/?i=3539
+ [7] = https://curl.haxx.se/bug/?i=3540
+ [8] = https://bugs.debian.org/921452
+ [9] = https://curl.haxx.se/bug/?i=3534
+ [10] = https://curl.haxx.se/bug/?i=3412
+ [11] = https://curl.haxx.se/bug/?i=3572
+ [12] = https://curl.haxx.se/bug/?i=3571
+ [13] = https://curl.haxx.se/bug/?i=3564
+ [14] = https://curl.haxx.se/bug/?i=3542
+ [15] = https://curl.haxx.se/bug/?i=3569
+ [16] = https://curl.haxx.se/bug/?i=3566
+ [17] = https://curl.haxx.se/bug/?i=3565
+ [18] = https://curl.haxx.se/bug/?i=3561
+ [19] = https://curl.haxx.se/bug/?i=3552
+ [20] = https://curl.haxx.se/bug/?i=3562
+ [21] = https://curl.haxx.se/bug/?i=3557
+ [22] = https://curl.haxx.se/bug/?i=3548
+ [23] = https://curl.haxx.se/mail/archive-2019-02/0013.html
+ [24] = https://curl.haxx.se/bug/?i=3553
+ [25] = https://curl.haxx.se/bug/?i=3551
+ [26] = https://curl.haxx.se/bug/?i=3536
+ [27] = https://curl.haxx.se/bug/?i=3532
+ [28] = https://curl.haxx.se/bug/?i=3574
+ [29] = https://curl.haxx.se/bug/?i=3554
+ [30] = https://curl.haxx.se/bug/?i=3313
+ [31] = https://curl.haxx.se/bug/?i=3580
+ [32] = https://curl.haxx.se/bug/?i=3584
+ [33] = https://curl.haxx.se/bug/?i=3578
+ [34] = https://curl.haxx.se/bug/?i=3582
+ [35] = https://curl.haxx.se/mail/lib-2019-02/0064.html
+ [36] = https://curl.haxx.se/bug/?i=3585
+ [37] = https://curl.haxx.se/bug/?i=3577
+ [38] = https://curl.haxx.se/bug/?i=3587
+ [39] = https://curl.haxx.se/mail/lib-2019-02/0101.html
+ [40] = https://curl.haxx.se/bug/?i=3600
+ [41] = https://curl.haxx.se/bug/?i=3599
+ [42] = https://curl.haxx.se/bug/?i=3537
+ [43] = https://curl.haxx.se/bug/?i=3602
+ [44] = https://curl.haxx.se/bug/?i=3608
+ [45] = https://curl.haxx.se/bug/?i=3595
+ [46] = https://curl.haxx.se/bug/?i=3591
+ [47] = https://curl.haxx.se/bug/?i=3613
+ [48] = https://curl.haxx.se/bug/?i=3612
+ [49] = https://curl.haxx.se/bug/?i=3606
+ [50] = https://curl.haxx.se/bug/?i=3609
+ [51] = https://curl.haxx.se/bug/?i=3611
+ [52] = https://curl.haxx.se/bug/?i=3616
+ [53] = https://curl.haxx.se/bug/?i=3610
+ [54] = https://curl.haxx.se/bug/?i=3421
+ [55] = https://curl.haxx.se/bug/?i=3623
+ [56] = https://curl.haxx.se/bug/?i=3619
+ [57] = https://curl.haxx.se/mail/archive-2019-02/0023.html
+ [58] = https://curl.haxx.se/bug/?i=3626
+ [59] = https://curl.haxx.se/bug/?i=3631
+ [60] = https://curl.haxx.se/bug/?i=3628
+ [61] = https://curl.haxx.se/bug/?i=3629
+ [62] = https://curl.haxx.se/bug/?i=3627
+ [63] = https://curl.haxx.se/bug/?i=3632
+ [64] = https://curl.haxx.se/bug/?i=3592
+ [65] = https://curl.haxx.se/bug/?i=3625
+ [66] = https://curl.haxx.se/bug/?i=3636
+ [67] = https://curl.haxx.se/bug/?i=3545
+ [68] = https://curl.haxx.se/bug/?i=3546
+ [69] = https://curl.haxx.se/bug/?i=3617
+ [70] = https://curl.haxx.se/bug/?i=3645
+ [71] = https://curl.haxx.se/bug/?i=3506
+ [72] = https://curl.haxx.se/bug/?i=3618
+ [73] = https://curl.haxx.se/bug/?i=3641
+ [74] = https://curl.haxx.se/bug/?i=3498
+ [76] = https://curl.haxx.se/bug/?i=3637
+ [77] = https://curl.haxx.se/bug/?i=3670
+ [78] = https://curl.haxx.se/bug/?i=3663
+ [79] = https://curl.haxx.se/bug/?i=3666
+ [80] = https://curl.haxx.se/bug/?i=3660
+ [81] = https://curl.haxx.se/bug/?i=3649
+ [82] = https://curl.haxx.se/bug/?i=3656
+ [83] = https://curl.haxx.se/bug/?i=3658
+ [84] = https://curl.haxx.se/bug/?i=3677
+ [85] = https://curl.haxx.se/bug/?i=3681
+ [86] = https://curl.haxx.se/bug/?i=3680
+ [87] = https://curl.haxx.se/bug/?i=3682
+ [88] = https://curl.haxx.se/bug/?i=1261
+ [89] = https://curl.haxx.se/bug/?i=2431
+ [90] = https://curl.haxx.se/bug/?i=3672
+ [91] = https://curl.haxx.se/bug/?i=3671
+ [92] = https://curl.haxx.se/bug/?i=3697
+ [93] = https://curl.haxx.se/bug/?i=3692
+ [94] = https://curl.haxx.se/bug/?i=3689
+ [95] = https://curl.haxx.se/bug/?i=3686
+ [96] = https://github.com/curl/curl/issues/3175#issuecomment-439068724
+
diff --git a/acinclude.m4 b/acinclude.m4
index 982d38e5..24dad391 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -791,7 +791,9 @@ AC_DEFUN([CURL_CHECK_LIBS_LDAP], [
'-lldap -llber' \
'-llber -lldap' \
'-lldapssl -lldapx -lldapsdk' \
- '-lldapsdk -lldapx -lldapssl' ; do
+ '-lldapsdk -lldapx -lldapssl' \
+ '-lldap -llber -lssl -lcrypto' ; do
+
if test "$curl_cv_ldap_LIBS" = "unknown"; then
if test -z "$x_nlibs"; then
LIBS="$curl_cv_save_LIBS"
@@ -1029,6 +1031,10 @@ AC_DEFUN([CURL_CHECK_FUNC_RECV], [
#endif
#endif
#else
+#ifdef HAVE_PROTO_BSDSOCKET_H
+#include <proto/bsdsocket.h>
+struct Library *SocketBase = NULL;
+#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -1074,6 +1080,10 @@ AC_DEFUN([CURL_CHECK_FUNC_RECV], [
#endif
#define RECVCALLCONV PASCAL
#else
+#ifdef HAVE_PROTO_BSDSOCKET_H
+#include <proto/bsdsocket.h>
+struct Library *SocketBase = NULL;
+#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -1082,8 +1092,10 @@ AC_DEFUN([CURL_CHECK_FUNC_RECV], [
#endif
#define RECVCALLCONV
#endif
+#ifndef HAVE_PROTO_BSDSOCKET_H
extern $recv_retv RECVCALLCONV
recv($recv_arg1, $recv_arg2, $recv_arg3, $recv_arg4);
+#endif
]],[[
$recv_arg1 s=0;
$recv_arg2 buf=0;
@@ -1163,6 +1175,10 @@ AC_DEFUN([CURL_CHECK_FUNC_SEND], [
#endif
#endif
#else
+#ifdef HAVE_PROTO_BSDSOCKET_H
+#include <proto/bsdsocket.h>
+struct Library *SocketBase = NULL;
+#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -1208,6 +1224,10 @@ AC_DEFUN([CURL_CHECK_FUNC_SEND], [
#endif
#define SENDCALLCONV PASCAL
#else
+#ifdef HAVE_PROTO_BSDSOCKET_H
+#include <proto/bsdsocket.h>
+struct Library *SocketBase = NULL;
+#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -1216,8 +1236,10 @@ AC_DEFUN([CURL_CHECK_FUNC_SEND], [
#endif
#define SENDCALLCONV
#endif
+#ifndef HAVE_PROTO_BSDSOCKET_H
extern $send_retv SENDCALLCONV
send($send_arg1, $send_arg2, $send_arg3, $send_arg4);
+#endif
]],[[
$send_arg1 s=0;
$send_arg3 len=0;
@@ -1319,6 +1341,10 @@ AC_DEFUN([CURL_CHECK_MSG_NOSIGNAL], [
#endif
#endif
#else
+#ifdef HAVE_PROTO_BSDSOCKET_H
+#include <proto/bsdsocket.h>
+struct Library *SocketBase = NULL;
+#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -1712,6 +1738,7 @@ dnl using current libraries or if another one is required.
AC_DEFUN([CURL_CHECK_LIBS_CONNECT], [
AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
+ AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
AC_MSG_CHECKING([for connect in libraries])
tst_connect_save_LIBS="$LIBS"
tst_connect_need_LIBS="unknown"
@@ -1721,7 +1748,8 @@ AC_DEFUN([CURL_CHECK_LIBS_CONNECT], [
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
- #ifndef HAVE_WINDOWS_H
+ $curl_includes_bsdsocket
+ #if !defined(HAVE_WINDOWS_H) && !defined(HAVE_PROTO_BSDSOCKET_H)
int connect(int, void*, int);
#endif
]],[[
@@ -1852,6 +1880,11 @@ AC_DEFUN([CURL_CHECK_FUNC_SELECT], [
#endif
#endif
#ifndef HAVE_WINDOWS_H
+#ifdef HAVE_PROTO_BSDSOCKET_H
+#include <proto/bsdsocket.h>
+struct Library *SocketBase = NULL;
+#define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
+#endif
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
#endif
@@ -1910,6 +1943,11 @@ AC_DEFUN([CURL_CHECK_FUNC_SELECT], [
#endif
#endif
#ifndef HAVE_WINDOWS_H
+#ifdef HAVE_PROTO_BSDSOCKET_H
+#include <proto/bsdsocket.h>
+struct Library *SocketBase = NULL;
+#define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
+#endif
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
#endif
@@ -1924,12 +1962,14 @@ AC_DEFUN([CURL_CHECK_FUNC_SELECT], [
long tv_usec;
};
#endif
+#ifndef HAVE_PROTO_BSDSOCKET_H
extern $sel_retv SELECTCALLCONV
select($sel_arg1,
$sel_arg234,
$sel_arg234,
$sel_arg234,
$sel_arg5);
+#endif
]],[[
$sel_arg1 nfds=0;
$sel_arg234 rfds=0;
diff --git a/androidconfigure b/androidconfigure
index 7f458f36..cb2d031c 100755
--- a/androidconfigure
+++ b/androidconfigure
@@ -13,8 +13,8 @@ cd $(dirname "$0")
HOST="arm-linux-androideabi"
T="${ANDROID_BUILD_TOP}"
-export CC="${T}/prebuilts/clang/host/linux-x86/clang-r346389b/bin/clang"
-export LD="${T}/prebuilts/clang/host/linux-x86/clang-r346389b/bin/lld"
+export CC="${T}/prebuilts/clang/host/linux-x86/clang-r353983/bin/clang"
+export LD="${T}/prebuilts/clang/host/linux-x86/clang-r353983/bin/lld"
CFLAGS=(
"-isystem ${T}/external/libcxx/include"
diff --git a/config.guess b/config.guess
index 31e01efe..f50dcdb6 100755
--- a/config.guess
+++ b/config.guess
@@ -1,8 +1,8 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2017 Free Software Foundation, Inc.
+# Copyright 1992-2018 Free Software Foundation, Inc.
-timestamp='2017-11-07'
+timestamp='2018-02-24'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -50,7 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2017 Free Software Foundation, Inc.
+Copyright 1992-2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -107,9 +107,9 @@ trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
dummy=$tmp/dummy ;
tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int x;" > $dummy.c ;
+ ,,) echo "int x;" > "$dummy.c" ;
for c in cc gcc c89 c99 ; do
- if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+ if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
CC_FOR_BUILD="$c"; break ;
fi ;
done ;
@@ -132,14 +132,14 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-case "${UNAME_SYSTEM}" in
+case "$UNAME_SYSTEM" in
Linux|GNU|GNU/*)
# If the system lacks a compiler, then just pick glibc.
# We could probably try harder.
LIBC=gnu
- eval $set_cc_for_build
- cat <<-EOF > $dummy.c
+ eval "$set_cc_for_build"
+ cat <<-EOF > "$dummy.c"
#include <features.h>
#if defined(__UCLIBC__)
LIBC=uclibc
@@ -149,13 +149,20 @@ Linux|GNU|GNU/*)
LIBC=gnu
#endif
EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+ eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
+
+ # If ldd exists, use it to detect musl libc.
+ if command -v ldd >/dev/null && \
+ ldd --version 2>&1 | grep -q ^musl
+ then
+ LIBC=musl
+ fi
;;
esac
# Note: order is significant - the case branches are not exclusive.
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
@@ -169,30 +176,30 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# portion of the name. We always set it to "unknown".
sysctl="sysctl -n hw.machine_arch"
UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
- /sbin/$sysctl 2>/dev/null || \
- /usr/sbin/$sysctl 2>/dev/null || \
+ "/sbin/$sysctl" 2>/dev/null || \
+ "/usr/sbin/$sysctl" 2>/dev/null || \
echo unknown)`
- case "${UNAME_MACHINE_ARCH}" in
+ case "$UNAME_MACHINE_ARCH" in
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
sh5el) machine=sh5le-unknown ;;
earmv*)
- arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
- endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
- machine=${arch}${endian}-unknown
+ arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+ endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
+ machine="${arch}${endian}"-unknown
;;
- *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
esac
# The Operating System including object format, if it has switched
# to ELF recently (or will in the future) and ABI.
- case "${UNAME_MACHINE_ARCH}" in
+ case "$UNAME_MACHINE_ARCH" in
earm*)
os=netbsdelf
;;
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- eval $set_cc_for_build
+ eval "$set_cc_for_build"
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ELF__
then
@@ -208,10 +215,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
;;
esac
# Determine ABI tags.
- case "${UNAME_MACHINE_ARCH}" in
+ case "$UNAME_MACHINE_ARCH" in
earm*)
expr='s/^earmv[0-9]/-eabi/;s/eb$//'
- abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
+ abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
;;
esac
# The OS release
@@ -219,52 +226,55 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# thus, need a distinct triplet. However, they do not need
# kernel version information, so it can be replaced with a
# suitable tag, in the style of linux-gnu.
- case "${UNAME_VERSION}" in
+ case "$UNAME_VERSION" in
Debian*)
release='-gnu'
;;
*)
- release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
+ release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
;;
esac
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}${abi}"
+ echo "$machine-${os}${release}${abi}"
exit ;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+ echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
exit ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
exit ;;
*:LibertyBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
exit ;;
*:MidnightBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-midnightbsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
exit ;;
*:ekkoBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
exit ;;
*:SolidBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
exit ;;
macppc:MirBSD:*:*)
- echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+ echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
exit ;;
*:MirBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
exit ;;
*:Sortix:*:*)
- echo ${UNAME_MACHINE}-unknown-sortix
+ echo "$UNAME_MACHINE"-unknown-sortix
exit ;;
*:Redox:*:*)
- echo ${UNAME_MACHINE}-unknown-redox
+ echo "$UNAME_MACHINE"-unknown-redox
exit ;;
+ mips:OSF1:*.*)
+ echo mips-dec-osf1
+ exit ;;
alpha:OSF1:*:*)
case $UNAME_RELEASE in
*4.0)
@@ -316,7 +326,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+ echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
exitcode=$?
trap '' 0
@@ -325,10 +335,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
echo m68k-unknown-sysv4
exit ;;
*:[Aa]miga[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-amigaos
+ echo "$UNAME_MACHINE"-unknown-amigaos
exit ;;
*:[Mm]orph[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-morphos
+ echo "$UNAME_MACHINE"-unknown-morphos
exit ;;
*:OS/390:*:*)
echo i370-ibm-openedition
@@ -340,7 +350,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
echo powerpc-ibm-os400
exit ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
+ echo arm-acorn-riscix"$UNAME_RELEASE"
exit ;;
arm*:riscos:*:*|arm*:RISCOS:*:*)
echo arm-unknown-riscos
@@ -367,19 +377,19 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
sparc) echo sparc-icl-nx7; exit ;;
esac ;;
s390x:SunOS:*:*)
- echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
exit ;;
sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
exit ;;
i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
- echo i386-pc-auroraux${UNAME_RELEASE}
+ echo i386-pc-auroraux"$UNAME_RELEASE"
exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
- eval $set_cc_for_build
+ eval "$set_cc_for_build"
SUN_ARCH=i386
# If there is a compiler, see if it is configured for 64-bit objects.
# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
@@ -392,13 +402,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
SUN_ARCH=x86_64
fi
fi
- echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
# it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
sun4*:SunOS:*:*)
case "`/usr/bin/arch -k`" in
@@ -407,25 +417,25 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
;;
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
exit ;;
sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
+ echo m68k-sun-sunos"$UNAME_RELEASE"
exit ;;
sun*:*:4.2BSD:*)
UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3
+ test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
case "`/bin/arch`" in
sun3)
- echo m68k-sun-sunos${UNAME_RELEASE}
+ echo m68k-sun-sunos"$UNAME_RELEASE"
;;
sun4)
- echo sparc-sun-sunos${UNAME_RELEASE}
+ echo sparc-sun-sunos"$UNAME_RELEASE"
;;
esac
exit ;;
aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
+ echo sparc-auspex-sunos"$UNAME_RELEASE"
exit ;;
# The situation for MiNT is a little confusing. The machine name
# can be virtually everything (everything which is not
@@ -436,44 +446,44 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint"$UNAME_RELEASE"
exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint"$UNAME_RELEASE"
exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint"$UNAME_RELEASE"
exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
+ echo m68k-milan-mint"$UNAME_RELEASE"
exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
+ echo m68k-hades-mint"$UNAME_RELEASE"
exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
+ echo m68k-unknown-mint"$UNAME_RELEASE"
exit ;;
m68k:machten:*:*)
- echo m68k-apple-machten${UNAME_RELEASE}
+ echo m68k-apple-machten"$UNAME_RELEASE"
exit ;;
powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
+ echo powerpc-apple-machten"$UNAME_RELEASE"
exit ;;
RISC*:Mach:*:*)
echo mips-dec-mach_bsd4.3
exit ;;
RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
+ echo mips-dec-ultrix"$UNAME_RELEASE"
exit ;;
VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
+ echo vax-dec-ultrix"$UNAME_RELEASE"
exit ;;
2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix${UNAME_RELEASE}
+ echo clipper-intergraph-clix"$UNAME_RELEASE"
exit ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ eval "$set_cc_for_build"
+ sed 's/^ //' << EOF > "$dummy.c"
#ifdef __cplusplus
#include <stdio.h> /* for printf() prototype */
int main (int argc, char *argv[]) {
@@ -494,11 +504,11 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
exit (-1);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c &&
- dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
- SYSTEM_NAME=`$dummy $dummyarg` &&
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
+ dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
{ echo "$SYSTEM_NAME"; exit; }
- echo mips-mips-riscos${UNAME_RELEASE}
+ echo mips-mips-riscos"$UNAME_RELEASE"
exit ;;
Motorola:PowerMAX_OS:*:*)
echo powerpc-motorola-powermax
@@ -524,17 +534,17 @@ EOF
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
- [ ${TARGET_BINARY_INTERFACE}x = x ]
+ if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
+ [ "$TARGET_BINARY_INTERFACE"x = x ]
then
- echo m88k-dg-dgux${UNAME_RELEASE}
+ echo m88k-dg-dgux"$UNAME_RELEASE"
else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ echo m88k-dg-dguxbcs"$UNAME_RELEASE"
fi
else
- echo i586-dg-dgux${UNAME_RELEASE}
+ echo i586-dg-dgux"$UNAME_RELEASE"
fi
exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
@@ -551,7 +561,7 @@ EOF
echo m68k-tektronix-bsd
exit ;;
*:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
exit ;;
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
@@ -563,14 +573,14 @@ EOF
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
fi
- echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
exit ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ eval "$set_cc_for_build"
+ sed 's/^ //' << EOF > "$dummy.c"
#include <sys/systemcfg.h>
main()
@@ -581,7 +591,7 @@ EOF
exit(0);
}
EOF
- if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
then
echo "$SYSTEM_NAME"
else
@@ -595,7 +605,7 @@ EOF
exit ;;
*:AIX:*:[4567])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
IBM_ARCH=powerpc
@@ -604,9 +614,9 @@ EOF
IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
exit ;;
*:AIX:*:*)
echo rs6000-ibm-aix
@@ -615,7 +625,7 @@ EOF
echo romp-ibm-bsd4.4
exit ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to
exit ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
echo rs6000-bull-bosx
@@ -630,28 +640,28 @@ EOF
echo m68k-hp-bsd4.4
exit ;;
9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- case "${UNAME_MACHINE}" in
+ HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+ case "$UNAME_MACHINE" in
9000/31?) HP_ARCH=m68000 ;;
9000/[34]??) HP_ARCH=m68k ;;
9000/[678][0-9][0-9])
if [ -x /usr/bin/getconf ]; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
+ case "$sc_cpu_version" in
523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
+ case "$sc_kernel_bits" in
32) HP_ARCH=hppa2.0n ;;
64) HP_ARCH=hppa2.0w ;;
'') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
esac ;;
esac
fi
- if [ "${HP_ARCH}" = "" ]; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ if [ "$HP_ARCH" = "" ]; then
+ eval "$set_cc_for_build"
+ sed 's/^ //' << EOF > "$dummy.c"
#define _HPUX_SOURCE
#include <stdlib.h>
@@ -684,13 +694,13 @@ EOF
exit (0);
}
EOF
- (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
test -z "$HP_ARCH" && HP_ARCH=hppa
fi ;;
esac
- if [ ${HP_ARCH} = hppa2.0w ]
+ if [ "$HP_ARCH" = hppa2.0w ]
then
- eval $set_cc_for_build
+ eval "$set_cc_for_build"
# hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
# 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
@@ -709,15 +719,15 @@ EOF
HP_ARCH=hppa64
fi
fi
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
exit ;;
ia64:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- echo ia64-hp-hpux${HPUX_REV}
+ HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux"$HPUX_REV"
exit ;;
3050*:HI-UX:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ eval "$set_cc_for_build"
+ sed 's/^ //' << EOF > "$dummy.c"
#include <unistd.h>
int
main ()
@@ -742,7 +752,7 @@ EOF
exit (0);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
{ echo "$SYSTEM_NAME"; exit; }
echo unknown-hitachi-hiuxwe2
exit ;;
@@ -763,9 +773,9 @@ EOF
exit ;;
i*86:OSF1:*:*)
if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
+ echo "$UNAME_MACHINE"-unknown-osf1mk
else
- echo ${UNAME_MACHINE}-unknown-osf1
+ echo "$UNAME_MACHINE"-unknown-osf1
fi
exit ;;
parisc*:Lites*:*:*)
@@ -790,109 +800,109 @@ EOF
echo c4-convex-bsd
exit ;;
CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-e 's/\.[^.]*$/.X/'
exit ;;
CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*SV1:*:*:*)
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
*:UNICOS/mp:*:*)
- echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
5000:UNIX_System_V:4.*:*)
FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
+ FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
exit ;;
sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi${UNAME_RELEASE}
+ echo sparc-unknown-bsdi"$UNAME_RELEASE"
exit ;;
*:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
exit ;;
*:FreeBSD:*:*)
UNAME_PROCESSOR=`/usr/bin/uname -p`
- case ${UNAME_PROCESSOR} in
+ case "$UNAME_PROCESSOR" in
amd64)
UNAME_PROCESSOR=x86_64 ;;
i386)
UNAME_PROCESSOR=i586 ;;
esac
- echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
exit ;;
i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
+ echo "$UNAME_MACHINE"-pc-cygwin
exit ;;
*:MINGW64*:*)
- echo ${UNAME_MACHINE}-pc-mingw64
+ echo "$UNAME_MACHINE"-pc-mingw64
exit ;;
*:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
+ echo "$UNAME_MACHINE"-pc-mingw32
exit ;;
*:MSYS*:*)
- echo ${UNAME_MACHINE}-pc-msys
+ echo "$UNAME_MACHINE"-pc-msys
exit ;;
i*:PW*:*)
- echo ${UNAME_MACHINE}-pc-pw32
+ echo "$UNAME_MACHINE"-pc-pw32
exit ;;
*:Interix*:*)
- case ${UNAME_MACHINE} in
+ case "$UNAME_MACHINE" in
x86)
- echo i586-pc-interix${UNAME_RELEASE}
+ echo i586-pc-interix"$UNAME_RELEASE"
exit ;;
authenticamd | genuineintel | EM64T)
- echo x86_64-unknown-interix${UNAME_RELEASE}
+ echo x86_64-unknown-interix"$UNAME_RELEASE"
exit ;;
IA64)
- echo ia64-unknown-interix${UNAME_RELEASE}
+ echo ia64-unknown-interix"$UNAME_RELEASE"
exit ;;
esac ;;
i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
+ echo "$UNAME_MACHINE"-pc-uwin
exit ;;
amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
echo x86_64-unknown-cygwin
exit ;;
prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
*:GNU:*:*)
# the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+ echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
exit ;;
i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
+ echo "$UNAME_MACHINE"-pc-minix
exit ;;
aarch64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -906,63 +916,63 @@ EOF
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
arc:Linux:*:* | arceb:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
arm*:Linux:*:*)
- eval $set_cc_for_build
+ eval "$set_cc_for_build"
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
else
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
else
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
fi
fi
exit ;;
avr32*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
cris:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
exit ;;
crisv32:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
exit ;;
e2k:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
frv:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
hexagon:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
i*86:Linux:*:*)
- echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+ echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
exit ;;
ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
k1om:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ eval "$set_cc_for_build"
+ sed 's/^ //' << EOF > "$dummy.c"
#undef CPU
#undef ${UNAME_MACHINE}
#undef ${UNAME_MACHINE}el
@@ -976,70 +986,74 @@ EOF
#endif
#endif
EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+ eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`"
+ test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; }
;;
mips64el:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
openrisc*:Linux:*:*)
- echo or1k-unknown-linux-${LIBC}
+ echo or1k-unknown-linux-"$LIBC"
exit ;;
or32:Linux:*:* | or1k*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
padre:Linux:*:*)
- echo sparc-unknown-linux-${LIBC}
+ echo sparc-unknown-linux-"$LIBC"
exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-${LIBC}
+ echo hppa64-unknown-linux-"$LIBC"
exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
- PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
- *) echo hppa-unknown-linux-${LIBC} ;;
+ PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
+ PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
+ *) echo hppa-unknown-linux-"$LIBC" ;;
esac
exit ;;
ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-${LIBC}
+ echo powerpc64-unknown-linux-"$LIBC"
exit ;;
ppc:Linux:*:*)
- echo powerpc-unknown-linux-${LIBC}
+ echo powerpc-unknown-linux-"$LIBC"
exit ;;
ppc64le:Linux:*:*)
- echo powerpc64le-unknown-linux-${LIBC}
+ echo powerpc64le-unknown-linux-"$LIBC"
exit ;;
ppcle:Linux:*:*)
- echo powerpcle-unknown-linux-${LIBC}
+ echo powerpcle-unknown-linux-"$LIBC"
exit ;;
riscv32:Linux:*:* | riscv64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+ echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
tile*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
vax:Linux:*:*)
- echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+ echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
exit ;;
x86_64:Linux:*:*)
- echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+ if objdump -f /bin/sh | grep -q elf32-x86-64; then
+ echo "$UNAME_MACHINE"-pc-linux-"$LIBC"x32
+ else
+ echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
+ fi
exit ;;
xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1053,34 +1067,34 @@ EOF
# I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
exit ;;
i*86:OS/2:*:*)
# If we were able to find `uname', then EMX Unix compatibility
# is probably installed.
- echo ${UNAME_MACHINE}-pc-os2-emx
+ echo "$UNAME_MACHINE"-pc-os2-emx
exit ;;
i*86:XTS-300:*:STOP)
- echo ${UNAME_MACHINE}-unknown-stop
+ echo "$UNAME_MACHINE"-unknown-stop
exit ;;
i*86:atheos:*:*)
- echo ${UNAME_MACHINE}-unknown-atheos
+ echo "$UNAME_MACHINE"-unknown-atheos
exit ;;
i*86:syllable:*:*)
- echo ${UNAME_MACHINE}-pc-syllable
+ echo "$UNAME_MACHINE"-pc-syllable
exit ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
+ echo i386-unknown-lynxos"$UNAME_RELEASE"
exit ;;
i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ echo "$UNAME_MACHINE"-pc-msdosdjgpp
exit ;;
i*86:*:4.*:*)
- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
fi
exit ;;
i*86:*:5:[678]*)
@@ -1090,12 +1104,12 @@ EOF
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
esac
- echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}"
exit ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
elif /bin/uname -X 2>/dev/null >/dev/null ; then
UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
@@ -1105,9 +1119,9 @@ EOF
&& UNAME_MACHINE=i686
(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
&& UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
else
- echo ${UNAME_MACHINE}-pc-sysv32
+ echo "$UNAME_MACHINE"-pc-sysv32
fi
exit ;;
pc:*:*:*)
@@ -1127,9 +1141,9 @@ EOF
exit ;;
i860:*:4.*:*) # i860-SVR4
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4
fi
exit ;;
mini*:CTIX:SYS*5:*)
@@ -1149,9 +1163,9 @@ EOF
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4; exit; } ;;
@@ -1160,28 +1174,28 @@ EOF
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
+ echo m68k-unknown-lynxos"$UNAME_RELEASE"
exit ;;
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
exit ;;
TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
+ echo sparc-unknown-lynxos"$UNAME_RELEASE"
exit ;;
rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ echo rs6000-unknown-lynxos"$UNAME_RELEASE"
exit ;;
PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
- echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ echo powerpc-unknown-lynxos"$UNAME_RELEASE"
exit ;;
SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv${UNAME_RELEASE}
+ echo mips-dde-sysv"$UNAME_RELEASE"
exit ;;
RM*:ReliantUNIX-*:*:*)
echo mips-sni-sysv4
@@ -1192,7 +1206,7 @@ EOF
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
+ echo "$UNAME_MACHINE"-sni-sysv4
else
echo ns32k-sni-sysv
fi
@@ -1212,23 +1226,23 @@ EOF
exit ;;
i*86:VOS:*:*)
# From Paul.Green@stratus.com.
- echo ${UNAME_MACHINE}-stratus-vos
+ echo "$UNAME_MACHINE"-stratus-vos
exit ;;
*:VOS:*:*)
# From Paul.Green@stratus.com.
echo hppa1.1-stratus-vos
exit ;;
mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
+ echo m68k-apple-aux"$UNAME_RELEASE"
exit ;;
news*:NEWS-OS:6*:*)
echo mips-sony-newsos6
exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
+ echo mips-nec-sysv"$UNAME_RELEASE"
else
- echo mips-unknown-sysv${UNAME_RELEASE}
+ echo mips-unknown-sysv"$UNAME_RELEASE"
fi
exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
@@ -1247,39 +1261,39 @@ EOF
echo x86_64-unknown-haiku
exit ;;
SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
+ echo sx4-nec-superux"$UNAME_RELEASE"
exit ;;
SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
+ echo sx5-nec-superux"$UNAME_RELEASE"
exit ;;
SX-6:SUPER-UX:*:*)
- echo sx6-nec-superux${UNAME_RELEASE}
+ echo sx6-nec-superux"$UNAME_RELEASE"
exit ;;
SX-7:SUPER-UX:*:*)
- echo sx7-nec-superux${UNAME_RELEASE}
+ echo sx7-nec-superux"$UNAME_RELEASE"
exit ;;
SX-8:SUPER-UX:*:*)
- echo sx8-nec-superux${UNAME_RELEASE}
+ echo sx8-nec-superux"$UNAME_RELEASE"
exit ;;
SX-8R:SUPER-UX:*:*)
- echo sx8r-nec-superux${UNAME_RELEASE}
+ echo sx8r-nec-superux"$UNAME_RELEASE"
exit ;;
SX-ACE:SUPER-UX:*:*)
- echo sxace-nec-superux${UNAME_RELEASE}
+ echo sxace-nec-superux"$UNAME_RELEASE"
exit ;;
Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ echo powerpc-apple-rhapsody"$UNAME_RELEASE"
exit ;;
*:Rhapsody:*:*)
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
exit ;;
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- eval $set_cc_for_build
+ eval "$set_cc_for_build"
if test "$UNAME_PROCESSOR" = unknown ; then
UNAME_PROCESSOR=powerpc
fi
- if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+ if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then
if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
@@ -1307,7 +1321,7 @@ EOF
# that Apple uses in portable devices.
UNAME_PROCESSOR=x86_64
fi
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
@@ -1315,22 +1329,25 @@ EOF
UNAME_PROCESSOR=i386
UNAME_MACHINE=pc
fi
- echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
exit ;;
*:QNX:*:4*)
echo i386-pc-qnx
exit ;;
NEO-*:NONSTOP_KERNEL:*:*)
- echo neo-tandem-nsk${UNAME_RELEASE}
+ echo neo-tandem-nsk"$UNAME_RELEASE"
exit ;;
NSE-*:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk${UNAME_RELEASE}
+ echo nse-tandem-nsk"$UNAME_RELEASE"
exit ;;
NSR-*:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk${UNAME_RELEASE}
+ echo nsr-tandem-nsk"$UNAME_RELEASE"
+ exit ;;
+ NSV-*:NONSTOP_KERNEL:*:*)
+ echo nsv-tandem-nsk"$UNAME_RELEASE"
exit ;;
NSX-*:NONSTOP_KERNEL:*:*)
- echo nsx-tandem-nsk${UNAME_RELEASE}
+ echo nsx-tandem-nsk"$UNAME_RELEASE"
exit ;;
*:NonStop-UX:*:*)
echo mips-compaq-nonstopux
@@ -1339,7 +1356,7 @@ EOF
echo bs2000-siemens-sysv
exit ;;
DS/*:UNIX_System_V:*:*)
- echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
exit ;;
*:Plan9:*:*)
# "uname -m" is not consistent, so use $cputype instead. 386
@@ -1350,7 +1367,7 @@ EOF
else
UNAME_MACHINE="$cputype"
fi
- echo ${UNAME_MACHINE}-unknown-plan9
+ echo "$UNAME_MACHINE"-unknown-plan9
exit ;;
*:TOPS-10:*:*)
echo pdp10-unknown-tops10
@@ -1371,14 +1388,14 @@ EOF
echo pdp10-unknown-its
exit ;;
SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
+ echo mips-sei-seiux"$UNAME_RELEASE"
exit ;;
*:DragonFly:*:*)
- echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
exit ;;
*:*VMS:*:*)
UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "${UNAME_MACHINE}" in
+ case "$UNAME_MACHINE" in
A*) echo alpha-dec-vms ; exit ;;
I*) echo ia64-dec-vms ; exit ;;
V*) echo vax-dec-vms ; exit ;;
@@ -1387,16 +1404,16 @@ EOF
echo i386-pc-xenix
exit ;;
i*86:skyos:*:*)
- echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'`
+ echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
exit ;;
i*86:rdos:*:*)
- echo ${UNAME_MACHINE}-pc-rdos
+ echo "$UNAME_MACHINE"-pc-rdos
exit ;;
i*86:AROS:*:*)
- echo ${UNAME_MACHINE}-pc-aros
+ echo "$UNAME_MACHINE"-pc-aros
exit ;;
x86_64:VMkernel:*:*)
- echo ${UNAME_MACHINE}-unknown-esx
+ echo "$UNAME_MACHINE"-unknown-esx
exit ;;
amd64:Isilon\ OneFS:*:*)
echo x86_64-unknown-onefs
@@ -1405,7 +1422,7 @@ esac
echo "$0: unable to guess system type" >&2
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}" in
+case "$UNAME_MACHINE:$UNAME_SYSTEM" in
mips:Linux | mips64:Linux)
# If we got here on MIPS GNU/Linux, output extra information.
cat >&2 <<EOF
@@ -1447,10 +1464,10 @@ hostinfo = `(hostinfo) 2>/dev/null`
/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
+UNAME_MACHINE = "$UNAME_MACHINE"
+UNAME_RELEASE = "$UNAME_RELEASE"
+UNAME_SYSTEM = "$UNAME_SYSTEM"
+UNAME_VERSION = "$UNAME_VERSION"
EOF
exit 1
diff --git a/config.sub b/config.sub
index 00f68b8e..1d8e98bc 100755
--- a/config.sub
+++ b/config.sub
@@ -1,8 +1,8 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2017 Free Software Foundation, Inc.
+# Copyright 1992-2018 Free Software Foundation, Inc.
-timestamp='2017-11-23'
+timestamp='2018-02-22'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -67,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2017 Free Software Foundation, Inc.
+Copyright 1992-2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -94,7 +94,7 @@ while test $# -gt 0 ; do
*local*)
# First pass through any local machine types.
- echo $1
+ echo "$1"
exit ;;
* )
@@ -112,7 +112,7 @@ esac
# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
@@ -120,16 +120,16 @@ case $maybe_os in
kopensolaris*-gnu* | cloudabi*-eabi* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
android-linux)
os=-linux-android
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+ basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
;;
*)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
+ basic_machine=`echo "$1" | sed 's/-[^-]*$//'`
+ if [ "$basic_machine" != "$1" ]
+ then os=`echo "$1" | sed 's/.*-/-/'`
else os=; fi
;;
esac
@@ -178,44 +178,44 @@ case $os in
;;
-sco6)
os=-sco5v6
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco5)
os=-sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco4)
os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco3.2.[4-9]*)
os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco3.2v[4-9]*)
# Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco5v6*)
# Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco*)
os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-udk*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-isc)
os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-clix*)
basic_machine=clipper-intergraph
;;
-isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-lynx*178)
os=-lynxos178
@@ -227,7 +227,7 @@ case $os in
os=-lynxos
;;
-ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'`
;;
-psos*)
os=-psos
@@ -296,7 +296,7 @@ case $basic_machine in
| nios | nios2 | nios2eb | nios2el \
| ns16k | ns32k \
| open8 | or1k | or1knd | or32 \
- | pdp10 | pdp11 | pj | pjl \
+ | pdp10 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle \
| pru \
| pyramid \
@@ -333,7 +333,7 @@ case $basic_machine in
basic_machine=$basic_machine-unknown
os=-none
;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65)
;;
ms1)
basic_machine=mt-unknown
@@ -362,7 +362,7 @@ case $basic_machine in
;;
# Object if more than one company name word.
*-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
exit 1
;;
# Recognize the basic CPU types with company name.
@@ -457,7 +457,7 @@ case $basic_machine in
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
386bsd)
- basic_machine=i386-unknown
+ basic_machine=i386-pc
os=-bsd
;;
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
@@ -491,7 +491,7 @@ case $basic_machine in
basic_machine=x86_64-pc
;;
amd64-*)
- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
amdahl)
basic_machine=580-amdahl
@@ -536,7 +536,7 @@ case $basic_machine in
os=-linux
;;
blackfin-*)
- basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'`
os=-linux
;;
bluegene*)
@@ -544,13 +544,13 @@ case $basic_machine in
os=-cnk
;;
c54x-*)
- basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
c55x-*)
- basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
c6x-*)
- basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
c90)
basic_machine=c90-cray
@@ -648,7 +648,7 @@ case $basic_machine in
os=$os"spe"
;;
e500v[12]-*)
- basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
os=$os"spe"
;;
ebmon29k)
@@ -740,9 +740,6 @@ case $basic_machine in
hp9k8[0-9][0-9] | hp8[0-9][0-9])
basic_machine=hppa1.0-hp
;;
- hppa-next)
- os=-nextstep3
- ;;
hppaosf)
basic_machine=hppa1.1-hp
os=-osf
@@ -755,26 +752,26 @@ case $basic_machine in
basic_machine=i370-ibm
;;
i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
os=-sysv32
;;
i*86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
os=-sysv4
;;
i*86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
os=-sysv
;;
i*86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
os=-solaris2
;;
i386mach)
basic_machine=i386-mach
os=-mach
;;
- i386-vsta | vsta)
+ vsta)
basic_machine=i386-unknown
os=-vsta
;;
@@ -793,19 +790,16 @@ case $basic_machine in
os=-sysv
;;
leon-*|leon[3-9]-*)
- basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
+ basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'`
;;
m68knommu)
basic_machine=m68k-unknown
os=-linux
;;
m68knommu-*)
- basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'`
os=-linux
;;
- m88k-omron*)
- basic_machine=m88k-omron
- ;;
magnum | m3230)
basic_machine=mips-mips
os=-sysv
@@ -837,10 +831,10 @@ case $basic_machine in
os=-mint
;;
mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+ basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`
;;
mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown
;;
monitor)
basic_machine=m68k-rom68k
@@ -859,7 +853,7 @@ case $basic_machine in
os=-msdos
;;
ms1-*)
- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+ basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'`
;;
msys)
basic_machine=i686-pc
@@ -946,6 +940,9 @@ case $basic_machine in
nsr-tandem)
basic_machine=nsr-tandem
;;
+ nsv-tandem)
+ basic_machine=nsv-tandem
+ ;;
nsx-tandem)
basic_machine=nsx-tandem
;;
@@ -981,7 +978,7 @@ case $basic_machine in
os=-linux
;;
parisc-*)
- basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'`
os=-linux
;;
pbd)
@@ -997,7 +994,7 @@ case $basic_machine in
basic_machine=i386-pc
;;
pc98-*)
- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
pentium | p5 | k5 | k6 | nexgen | viac3)
basic_machine=i586-pc
@@ -1012,16 +1009,16 @@ case $basic_machine in
basic_machine=i786-pc
;;
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
pentium4-*)
- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
pn)
basic_machine=pn-gould
@@ -1031,23 +1028,23 @@ case $basic_machine in
ppc | ppcbe) basic_machine=powerpc-unknown
;;
ppc-* | ppcbe-*)
- basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle)
basic_machine=powerpcle-unknown
;;
ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
ppc64) basic_machine=powerpc64-unknown
;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
ppc64le | powerpc64little)
basic_machine=powerpc64le-unknown
;;
ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
ps2)
basic_machine=i386-ibm
@@ -1101,17 +1098,10 @@ case $basic_machine in
sequent)
basic_machine=i386-sequent
;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
- ;;
sh5el)
basic_machine=sh5le-unknown
;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparclite-wrs | simso-wrs)
+ simso-wrs)
basic_machine=sparclite-wrs
os=-vxworks
;;
@@ -1130,7 +1120,7 @@ case $basic_machine in
os=-sysv4
;;
strongarm-* | thumb-*)
- basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
sun2)
basic_machine=m68000-sun
@@ -1244,9 +1234,6 @@ case $basic_machine in
basic_machine=a29k-wrs
os=-vxworks
;;
- wasm32)
- basic_machine=wasm32-unknown
- ;;
w65*)
basic_machine=w65-wdc
os=-none
@@ -1266,20 +1253,12 @@ case $basic_machine in
basic_machine=xps100-honeywell
;;
xscale-* | xscalee[bl]-*)
- basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+ basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'`
;;
ymp)
basic_machine=ymp-cray
os=-unicos
;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
- ;;
- z80-*-coff)
- basic_machine=z80-unknown
- os=-sim
- ;;
none)
basic_machine=none-none
os=-none
@@ -1308,10 +1287,6 @@ case $basic_machine in
vax)
basic_machine=vax-dec
;;
- pdp10)
- # there are many clones, so DEC is not a safe bet
- basic_machine=pdp10-unknown
- ;;
pdp11)
basic_machine=pdp11-dec
;;
@@ -1321,9 +1296,6 @@ case $basic_machine in
sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown
;;
- sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
- basic_machine=sparc-sun
- ;;
cydra)
basic_machine=cydra-cydrome
;;
@@ -1343,7 +1315,7 @@ case $basic_machine in
# Make sure to match an already-canonicalized machine name.
;;
*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
exit 1
;;
esac
@@ -1351,10 +1323,10 @@ esac
# Here we canonicalize certain aliases for manufacturers.
case $basic_machine in
*-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+ basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'`
;;
*-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'`
;;
*)
;;
@@ -1377,15 +1349,16 @@ case $os in
-solaris)
os=-solaris2
;;
- -svr4*)
- os=-sysv4
- ;;
-unixware*)
os=-sysv4.2uw
;;
-gnu/linux*)
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
;;
+ # es1800 is here to avoid being matched by es* (a different OS)
+ -es1800*)
+ os=-ose
+ ;;
# Now accept the basic system types.
# The portable systems comes first.
# Each alternative MUST end in a * to match a version number.
@@ -1398,7 +1371,7 @@ case $os in
| -aos* | -aros* | -cloudabi* | -sortix* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+ | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \
| -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
@@ -1409,14 +1382,15 @@ case $os in
| -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -morphos* | -superux* | -rtmk* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
- | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*)
+ | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \
+ | -midnightbsd*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1433,12 +1407,12 @@ case $os in
-nto*)
os=`echo $os | sed -e 's|nto|nto-qnx|'`
;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+ -sim | -xray | -os68k* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* \
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
;;
-mac*)
- os=`echo $os | sed -e 's|mac|macos|'`
+ os=`echo "$os" | sed -e 's|mac|macos|'`
;;
-linux-dietlibc)
os=-linux-dietlibc
@@ -1447,10 +1421,10 @@ case $os in
os=`echo $os | sed -e 's|linux|linux-gnu|'`
;;
-sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
;;
-sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
;;
-opened*)
os=-openedition
@@ -1461,12 +1435,6 @@ case $os in
-wince*)
os=-wince
;;
- -osfrose*)
- os=-osfrose
- ;;
- -osf*)
- os=-osf
- ;;
-utek*)
os=-bsd
;;
@@ -1513,7 +1481,7 @@ case $os in
-oss*)
os=-sysv3
;;
- -svr4)
+ -svr4*)
os=-sysv4
;;
-svr3)
@@ -1528,18 +1496,9 @@ case $os in
-ose*)
os=-ose
;;
- -es1800*)
- os=-ose
- ;;
- -xenix)
- os=-xenix
- ;;
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
os=-mint
;;
- -aros*)
- os=-aros
- ;;
-zvmoe)
os=-zvmoe
;;
@@ -1568,7 +1527,7 @@ case $os in
*)
# Get rid of the `-' at the beginning of $os.
os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
exit 1
;;
esac
@@ -1664,9 +1623,6 @@ case $basic_machine in
*-be)
os=-beos
;;
- *-haiku)
- os=-haiku
- ;;
*-ibm)
os=-aix
;;
@@ -1721,9 +1677,6 @@ case $basic_machine in
i370-*)
os=-mvs
;;
- *-next)
- os=-nextstep3
- ;;
*-gould)
os=-sysv
;;
@@ -1833,11 +1786,11 @@ case $basic_machine in
vendor=stratus
;;
esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+ basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"`
;;
esac
-echo $basic_machine$os
+echo "$basic_machine$os"
exit
# Local variables:
diff --git a/configure b/configure
index ba6bf003..0eeb12c0 100755
--- a/configure
+++ b/configure
@@ -903,6 +903,7 @@ MANOPT
NROFF
PERL
IPV6_ENABLED
+FISH_FUNCTIONS_DIR
ZSH_FUNCTIONS_DIR
USE_NGHTTP2
IDN_ENABLED
@@ -932,7 +933,7 @@ USE_GNUTLS
HAVE_OPENSSL_SRP
RANDOM_FILE
SSL_LIBS
-USE_DARWINSSL
+USE_SECTRANSP
USE_WINDOWS_SSPI
USE_SCHANNEL
DEFAULT_SSL_BACKEND
@@ -945,6 +946,7 @@ HAVE_LIBZ_FALSE
HAVE_LIBZ_TRUE
HAVE_LIBZ
PKGCONFIG
+HAVE_PROTO_BSDSOCKET_H
CURL_DISABLE_GOPHER
CURL_DISABLE_SMTP
CURL_DISABLE_SMB
@@ -1163,6 +1165,8 @@ with_default_ssl_backend
with_winssl
with_schannel
with_darwinssl
+with_secure_transport
+with_amissl
with_ssl
with_egd_socket
with_random
@@ -1187,6 +1191,7 @@ with_winidn
with_libidn2
with_nghttp2
with_zsh_functions_dir
+with_fish_functions_dir
enable_threaded_resolver
enable_pthreads
enable_verbose
@@ -1196,6 +1201,7 @@ enable_ntlm_wb
enable_tls_srp
enable_unix_sockets
enable_cookies
+enable_alt_svc
'
ac_precious_vars='build_alias
host_alias
@@ -1939,6 +1945,8 @@ Optional Features:
--disable-unix-sockets Disable Unix domain sockets
--enable-cookies Enable cookies support
--disable-cookies Disable cookies support
+ --enable-alt-svc Enable alt-svc support
+ --disable-alt-svc Disable alt-svc support
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -1973,6 +1981,11 @@ Optional Packages:
--without-schannel disable Windows native SSL/TLS
--with-darwinssl enable Apple OS native SSL/TLS
--without-darwinssl disable Apple OS native SSL/TLS
+ --with-secure-transport enable Apple OS native SSL/TLS
+ --without-secure-transport
+ disable Apple OS native SSL/TLS
+ --with-amissl enable Amiga native SSL/TLS (AmiSSL)
+ --without-amissl disable Amiga native SSL/TLS (AmiSSL)
--with-ssl=PATH Where to look for OpenSSL, PATH points to the SSL
installation (default: /usr/local/ssl); when
possible, set the PKG_CONFIG_PATH environment
@@ -2041,6 +2054,10 @@ Optional Packages:
Install zsh completions to PATH
--without-zsh-functions-dir
Do not install zsh completions
+ --with-fish-functions-dir=PATH
+ Install fish completions to PATH
+ --without-fish-functions-dir
+ Do not install fish completions
Some influential environment variables:
CC C compiler command
@@ -5782,7 +5799,7 @@ PKGADD_VENDOR="curl.haxx.se"
- curl_ssl_msg="no (--with-{ssl,gnutls,nss,polarssl,mbedtls,cyassl,winssl,darwinssl,mesalink} )"
+ curl_ssl_msg="no (--with-{ssl,gnutls,nss,polarssl,mbedtls,cyassl,schannel,secure-transport,mesalink,amissl} )"
curl_ssh_msg="no (--with-libssh2)"
curl_zlib_msg="no (--with-zlib)"
curl_brotli_msg="no (--with-brotli)"
@@ -19002,6 +19019,7 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to support http" >&5
$as_echo_n "checking whether to support http... " >&6; }
# Check whether --enable-http was given.
@@ -19846,6 +19864,49 @@ fi
if test "$HAVE_GETHOSTBYNAME" != "1"
then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname for AmigaOS bsdsocket.library" >&5
+$as_echo_n "checking for gethostbyname for AmigaOS bsdsocket.library... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+#include <proto/bsdsocket.h>
+struct Library *SocketBase = NULL;
+
+int main (void)
+{
+
+ gethostbyname("www.dummysite.com");
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ HAVE_GETHOSTBYNAME="1"
+ HAVE_PROTO_BSDSOCKET_H="1"
+
+$as_echo "#define HAVE_PROTO_BSDSOCKET_H 1" >>confdefs.h
+
+ HAVE_PROTO_BSDSOCKET_H=1
+
+
+else
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+
+if test "$HAVE_GETHOSTBYNAME" != "1"
+then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnetwork" >&5
$as_echo_n "checking for gethostbyname in -lnetwork... " >&6; }
if ${ac_cv_lib_network_gethostbyname+:} false; then :
@@ -20121,7 +20182,29 @@ _ACEOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in libraries" >&5
+curl_includes_bsdsocket="\
+/* includes start */
+#ifdef HAVE_PROTO_BSDSOCKET_H
+# include <proto/bsdsocket.h>
+ struct Library *SocketBase = NULL;
+#endif
+/* includes end */"
+ for ac_header in proto/bsdsocket.h
+do :
+ ac_fn_c_check_header_compile "$LINENO" "proto/bsdsocket.h" "ac_cv_header_proto_bsdsocket_h" " $curl_includes_bsdsocket
+"
+if test "x$ac_cv_header_proto_bsdsocket_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_PROTO_BSDSOCKET_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in libraries" >&5
$as_echo_n "checking for connect in libraries... " >&6; }
tst_connect_save_LIBS="$LIBS"
tst_connect_need_LIBS="unknown"
@@ -20133,7 +20216,8 @@ $as_echo_n "checking for connect in libraries... " >&6; }
$curl_includes_winsock2
- #ifndef HAVE_WINDOWS_H
+ $curl_includes_bsdsocket
+ #if !defined(HAVE_WINDOWS_H) && !defined(HAVE_PROTO_BSDSOCKET_H)
int connect(int, void*, int);
#endif
@@ -21438,7 +21522,9 @@ $as_echo_n "checking for LDAP libraries... " >&6; }
'-lldap -llber' \
'-llber -lldap' \
'-lldapssl -lldapx -lldapsdk' \
- '-lldapsdk -lldapx -lldapssl' ; do
+ '-lldapsdk -lldapx -lldapssl' \
+ '-lldap -llber -lssl -lcrypto' ; do
+
if test "$curl_cv_ldap_LIBS" = "unknown"; then
if test -z "$x_nlibs"; then
LIBS="$curl_cv_save_LIBS"
@@ -22112,29 +22198,36 @@ else
$as_echo "no" >&6; }
fi
-OPT_DARWINSSL=no
+OPT_SECURETRANSPORT=no
# Check whether --with-darwinssl was given.
if test "${with_darwinssl+set}" = set; then :
- withval=$with_darwinssl; OPT_DARWINSSL=$withval
+ withval=$with_darwinssl; OPT_SECURETRANSPORT=$withval
+fi
+
+
+
+# Check whether --with-secure-transport was given.
+if test "${with_secure_transport+set}" = set; then :
+ withval=$with_secure_transport; OPT_SECURETRANSPORT=$withval
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable Apple OS native SSL/TLS" >&5
-$as_echo_n "checking whether to enable Apple OS native SSL/TLS... " >&6; }
-if test -z "$ssl_backends" -o "x$OPT_DARWINSSL" != xno; then
- if test "x$OPT_DARWINSSL" != "xno" &&
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable Secure Transport" >&5
+$as_echo_n "checking whether to enable Secure Transport... " >&6; }
+if test -z "$ssl_backends" -o "x$OPT_SECURETRANSPORT" != xno; then
+ if test "x$OPT_SECURETRANSPORT" != "xno" &&
test -d "/System/Library/Frameworks/Security.framework"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
-$as_echo "#define USE_DARWINSSL 1" >>confdefs.h
+$as_echo "#define USE_SECTRANSP 1" >>confdefs.h
- USE_DARWINSSL=1
+ USE_SECTRANSP=1
- ssl_msg="Apple OS-native"
- test darwinssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
- DARWINSSL_ENABLED=1
+ ssl_msg="Secure Transport"
+ test secure-transport != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
+ SECURETRANSPORT_ENABLED=1
LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Security"
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -22146,6 +22239,46 @@ else
$as_echo "no" >&6; }
fi
+OPT_AMISSL=no
+
+# Check whether --with-amissl was given.
+if test "${with_amissl+set}" = set; then :
+ withval=$with_amissl; OPT_AMISSL=$withval
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable Amiga native SSL/TLS (AmiSSL)" >&5
+$as_echo_n "checking whether to enable Amiga native SSL/TLS (AmiSSL)... " >&6; }
+if test "$HAVE_PROTO_BSDSOCKET_H" == "1"; then
+ if test -z "$ssl_backends" -o "x$OPT_AMISSL" != xno; then
+ ssl_msg=
+ if test "x$OPT_AMISSL" != "xno"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ ssl_msg="AmiSSL"
+ test amissl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
+ AMISSL_ENABLED=1
+ LIBS="-lamisslauto $LIBS"
+
+$as_echo "#define USE_AMISSL 1" >>confdefs.h
+
+
+$as_echo "#define USE_OPENSSL 1" >>confdefs.h
+
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+ test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
OPT_SSL=off
ca="no"
@@ -24730,7 +24863,6 @@ done
if test "x$cyassllibname" = "xwolfssl"; then
for ac_func in wolfSSLv3_client_method \
- wolfSSL_CTX_UseSupportedCurve \
wolfSSL_get_peer_certificate \
wolfSSL_UseALPN
do :
@@ -25373,12 +25505,12 @@ $as_echo "$as_me: Added $nssprefix/lib$libsuff to CURL_LIBRARY_PATH" >&6;}
test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi
-case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$MBEDTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$DARWINSSL_ENABLED$MESALINK_ENABLED" in
+case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$MBEDTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$SECURETRANSPORT_ENABLED$MESALINK_ENABLED$AMISSL_ENABLED" in
x)
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more." >&5
$as_echo "$as_me: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more." >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-winssl, --with-darwinssl, or --with-mesalink to address this." >&5
-$as_echo "$as_me: WARNING: Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-winssl, --with-darwinssl, or --with-mesalink to address this." >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink or --with-amissl to address this." >&5
+$as_echo "$as_me: WARNING: Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink or --with-amissl to address this." >&2;}
;;
x1)
# one SSL backend is enabled
@@ -25645,7 +25777,7 @@ $as_echo "$ac_cv_search_psl_builtin" >&6; }
ac_res=$ac_cv_search_psl_builtin
if test "$ac_res" != no; then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
- curl_psl_msg="yes";
+ curl_psl_msg="enabled";
$as_echo "#define USE_LIBPSL 1" >>confdefs.h
@@ -25659,7 +25791,7 @@ $as_echo "$as_me: WARNING: libpsl was not found" >&2;}
fi
fi
- if test "$curl_psl_msg" = "yes"; then
+ if test "$curl_psl_msg" = "enabled"; then
USE_LIBPSL_TRUE=
USE_LIBPSL_FALSE='#'
else
@@ -26829,9 +26961,9 @@ $as_echo "yes" >&6; }
elif test "x$CYASSL_ENABLED" = "x1"; then
versioned_symbols_flavour="CYASSL_"
elif test "x$WINSSL_ENABLED" = "x1"; then
- versioned_symbols_flavour="WINSSL_"
- elif test "x$DARWINSSL_ENABLED" = "x1"; then
- versioned_symbols_flavour="DARWINSSL_"
+ versioned_symbols_flavour="SCHANNEL_"
+ elif test "x$SECURETRANSPORT_ENABLED" = "x1"; then
+ versioned_symbols_flavour="SECURE_TRANSPORT_"
else
versioned_symbols_flavour=""
fi
@@ -27696,6 +27828,27 @@ case "$OPT_ZSH_FPATH" in
esac
+OPT_FISH_FPATH=default
+
+# Check whether --with-fish-functions-dir was given.
+if test "${with_fish_functions_dir+set}" = set; then :
+ withval=$with_fish_functions_dir; OPT_FISH_FPATH=$withval
+fi
+
+case "$OPT_FISH_FPATH" in
+ no)
+ ;;
+ default|yes)
+ FISH_FUNCTIONS_DIR="$datarootdir/fish/completions"
+
+ ;;
+ *)
+ FISH_FUNCTIONS_DIR="$withval"
+
+ ;;
+esac
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
$as_echo_n "checking for ANSI C header files... " >&6; }
if ${ac_cv_header_stdc+:} false; then :
@@ -28064,6 +28217,7 @@ fi
done
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
if ${ac_cv_c_const+:} false; then :
@@ -29246,6 +29400,11 @@ $as_echo_n "checking for select... " >&6; }
#endif
#endif
#ifndef HAVE_WINDOWS_H
+#ifdef HAVE_PROTO_BSDSOCKET_H
+#include <proto/bsdsocket.h>
+struct Library *SocketBase = NULL;
+#define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
+#endif
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
#endif
@@ -29326,6 +29485,11 @@ else
#endif
#endif
#ifndef HAVE_WINDOWS_H
+#ifdef HAVE_PROTO_BSDSOCKET_H
+#include <proto/bsdsocket.h>
+struct Library *SocketBase = NULL;
+#define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
+#endif
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
#endif
@@ -29340,12 +29504,14 @@ else
long tv_usec;
};
#endif
+#ifndef HAVE_PROTO_BSDSOCKET_H
extern $sel_retv SELECTCALLCONV
select($sel_arg1,
$sel_arg234,
$sel_arg234,
$sel_arg234,
$sel_arg5);
+#endif
int main (void)
{
@@ -29490,6 +29656,10 @@ $as_echo_n "checking for recv... " >&6; }
#endif
#endif
#else
+#ifdef HAVE_PROTO_BSDSOCKET_H
+#include <proto/bsdsocket.h>
+struct Library *SocketBase = NULL;
+#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -29557,6 +29727,10 @@ else
#endif
#define RECVCALLCONV PASCAL
#else
+#ifdef HAVE_PROTO_BSDSOCKET_H
+#include <proto/bsdsocket.h>
+struct Library *SocketBase = NULL;
+#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -29565,8 +29739,10 @@ else
#endif
#define RECVCALLCONV
#endif
+#ifndef HAVE_PROTO_BSDSOCKET_H
extern $recv_retv RECVCALLCONV
recv($recv_arg1, $recv_arg2, $recv_arg3, $recv_arg4);
+#endif
int main (void)
{
@@ -29678,6 +29854,10 @@ $as_echo_n "checking for send... " >&6; }
#endif
#endif
#else
+#ifdef HAVE_PROTO_BSDSOCKET_H
+#include <proto/bsdsocket.h>
+struct Library *SocketBase = NULL;
+#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -29745,6 +29925,10 @@ else
#endif
#define SENDCALLCONV PASCAL
#else
+#ifdef HAVE_PROTO_BSDSOCKET_H
+#include <proto/bsdsocket.h>
+struct Library *SocketBase = NULL;
+#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -29753,8 +29937,10 @@ else
#endif
#define SENDCALLCONV
#endif
+#ifndef HAVE_PROTO_BSDSOCKET_H
extern $send_retv SENDCALLCONV
send($send_arg1, $send_arg2, $send_arg3, $send_arg4);
+#endif
int main (void)
{
@@ -29905,6 +30091,10 @@ else
#endif
#endif
#else
+#ifdef HAVE_PROTO_BSDSOCKET_H
+#include <proto/bsdsocket.h>
+struct Library *SocketBase = NULL;
+#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@ -30367,6 +30557,7 @@ $as_echo_n "checking if closesocket can be linked... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_socket
int main (void)
@@ -30403,6 +30594,7 @@ $as_echo_n "checking if closesocket is prototyped... " >&6; }
/* end confdefs.h. */
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_socket
_ACEOF
@@ -30432,6 +30624,7 @@ $as_echo_n "checking if closesocket is compilable... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_socket
int main (void)
@@ -30673,6 +30866,7 @@ $as_echo_n "checking if connect can be linked... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
$curl_includes_socket
@@ -30710,6 +30904,7 @@ $as_echo_n "checking if connect is prototyped... " >&6; }
/* end confdefs.h. */
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
$curl_includes_socket
@@ -30740,6 +30935,7 @@ $as_echo_n "checking if connect is compilable... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
$curl_includes_socket
@@ -31062,180 +31258,6 @@ $as_echo "no" >&6; }
fi
-curl_includes_stdio="\
-/* includes start */
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_STDIO_H
-# include <stdio.h>
-#endif
-/* includes end */"
- for ac_header in sys/types.h stdio.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$curl_includes_stdio
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
- #
- tst_links_fdopen="unknown"
- tst_proto_fdopen="unknown"
- tst_compi_fdopen="unknown"
- tst_allow_fdopen="unknown"
- #
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if fdopen can be linked" >&5
-$as_echo_n "checking if fdopen can be linked... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define fdopen innocuous_fdopen
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef fdopen
-#ifdef __cplusplus
-extern "C"
-#endif
-char fdopen ();
-#if defined __stub_fdopen || defined __stub___fdopen
-choke me
-#endif
-
-int main (void)
-{
-return fdopen ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- tst_links_fdopen="yes"
-
-else
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- tst_links_fdopen="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- #
- if test "$tst_links_fdopen" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if fdopen is prototyped" >&5
-$as_echo_n "checking if fdopen is prototyped... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- $curl_includes_stdio
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "fdopen" >/dev/null 2>&1; then :
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- tst_proto_fdopen="yes"
-
-else
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- tst_proto_fdopen="no"
-
-fi
-rm -f conftest*
-
- fi
- #
- if test "$tst_proto_fdopen" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if fdopen is compilable" >&5
-$as_echo_n "checking if fdopen is compilable... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
- $curl_includes_stdio
-
-int main (void)
-{
-
- if(0 != fdopen(0, 0))
- return 1;
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- tst_compi_fdopen="yes"
-
-else
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- tst_compi_fdopen="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
- #
- if test "$tst_compi_fdopen" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if fdopen usage allowed" >&5
-$as_echo_n "checking if fdopen usage allowed... " >&6; }
- if test "x$curl_disallow_fdopen" != "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- tst_allow_fdopen="yes"
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- tst_allow_fdopen="no"
- fi
- fi
- #
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if fdopen might be used" >&5
-$as_echo_n "checking if fdopen might be used... " >&6; }
- if test "$tst_links_fdopen" = "yes" &&
- test "$tst_proto_fdopen" = "yes" &&
- test "$tst_compi_fdopen" = "yes" &&
- test "$tst_allow_fdopen" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_FDOPEN 1
-_ACEOF
-
- curl_cv_func_fdopen="yes"
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- curl_cv_func_fdopen="no"
- fi
-
-
curl_includes_ws2tcpip="\
/* includes start */
#ifdef HAVE_WINDOWS_H
@@ -32582,6 +32604,7 @@ $as_echo_n "checking if gai_strerror can be linked... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_netdb
int main (void)
@@ -32618,6 +32641,7 @@ $as_echo_n "checking if gai_strerror is prototyped... " >&6; }
/* end confdefs.h. */
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_netdb
_ACEOF
@@ -32647,6 +32671,7 @@ $as_echo_n "checking if gai_strerror is compilable... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_netdb
int main (void)
@@ -32724,6 +32749,7 @@ $as_echo_n "checking if gethostbyaddr can be linked... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_netdb
int main (void)
@@ -32760,6 +32786,7 @@ $as_echo_n "checking if gethostbyaddr is prototyped... " >&6; }
/* end confdefs.h. */
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_netdb
_ACEOF
@@ -32789,6 +32816,7 @@ $as_echo_n "checking if gethostbyaddr is compilable... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_netdb
int main (void)
@@ -33115,6 +33143,7 @@ $as_echo_n "checking if gethostbyname can be linked... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_netdb
int main (void)
@@ -33151,6 +33180,7 @@ $as_echo_n "checking if gethostbyname is prototyped... " >&6; }
/* end confdefs.h. */
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_netdb
_ACEOF
@@ -33180,6 +33210,7 @@ $as_echo_n "checking if gethostbyname is compilable... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_netdb
int main (void)
@@ -33503,7 +33534,7 @@ curl_preprocess_callconv="\
/* preprocess end */"
- #
+ #
tst_links_gethostname="unknown"
tst_proto_gethostname="unknown"
tst_compi_gethostname="unknown"
@@ -33516,6 +33547,7 @@ $as_echo_n "checking if gethostname can be linked... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_unistd
int main (void)
@@ -33552,6 +33584,7 @@ $as_echo_n "checking if gethostname is prototyped... " >&6; }
/* end confdefs.h. */
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_unistd
_ACEOF
@@ -33581,6 +33614,7 @@ $as_echo_n "checking if gethostname is compilable... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_unistd
int main (void)
@@ -33622,6 +33656,7 @@ $as_echo_n "checking for gethostname arg 2 data type... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_unistd
$curl_preprocess_callconv
extern int FUNCALLCONV gethostname($tst_arg1, $tst_arg2);
@@ -35480,6 +35515,7 @@ $as_echo_n "checking if ioctlsocket can be linked... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
int main (void)
{
@@ -35515,6 +35551,7 @@ $as_echo_n "checking if ioctlsocket is prototyped... " >&6; }
/* end confdefs.h. */
$curl_includes_winsock2
+ $curl_includes_bsdsocket
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
@@ -35543,6 +35580,7 @@ $as_echo_n "checking if ioctlsocket is compilable... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
int main (void)
{
@@ -35612,6 +35650,7 @@ $as_echo_n "checking if ioctlsocket FIONBIO is compilable... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
int main (void)
{
@@ -36538,6 +36577,7 @@ $as_echo_n "checking if setsockopt can be linked... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
int main (void)
@@ -36574,6 +36614,7 @@ $as_echo_n "checking if setsockopt is prototyped... " >&6; }
/* end confdefs.h. */
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
_ACEOF
@@ -36603,6 +36644,7 @@ $as_echo_n "checking if setsockopt is compilable... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
int main (void)
@@ -36673,6 +36715,7 @@ $as_echo_n "checking if setsockopt SO_NONBLOCK is compilable... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
int main (void)
@@ -37441,6 +37484,7 @@ $as_echo_n "checking if socket can be linked... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
$curl_includes_socket
@@ -37478,6 +37522,7 @@ $as_echo_n "checking if socket is prototyped... " >&6; }
/* end confdefs.h. */
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
$curl_includes_socket
@@ -37508,6 +37553,7 @@ $as_echo_n "checking if socket is compilable... " >&6; }
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
$curl_includes_socket
@@ -40906,6 +40952,37 @@ $as_echo "yes" >&6; }
fi
+curl_altsvc_msg="no (--enable-alt-svc)";
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to support alt-svc" >&5
+$as_echo_n "checking whether to support alt-svc... " >&6; }
+# Check whether --enable-alt-svc was given.
+if test "${enable_alt_svc+set}" = set; then :
+ enableval=$enable_alt_svc; case "$enableval" in
+ no)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ ;;
+ *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ curl_altsvc_msg="enabled";
+ enable_altsvc="yes"
+ experimental="alt-svc"
+ ;;
+ esac
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+
+
+if test "$enable_altsvc" = "yes"; then
+
+$as_echo "#define USE_ALTSVC 1" >>confdefs.h
+
+ experimental="alt-svc"
+fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether hiding of library internal symbols will actually happen" >&5
$as_echo_n "checking whether hiding of library internal symbols will actually happen... " >&6; }
@@ -40996,10 +41073,14 @@ if test "x$HAVE_GSSAPI" = "x1"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES GSS-API"
fi
-if test "x$curl_psl_msg" = "xyes"; then
+if test "x$curl_psl_msg" = "xenabled"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES PSL"
fi
+if test "x$enable_altsvc" = "xyes"; then
+ SUPPORT_FEATURES="$SUPPORT_FEATURES alt-svc"
+fi
+
if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
\( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then
SUPPORT_FEATURES="$SUPPORT_FEATURES SPNEGO"
@@ -41013,7 +41094,7 @@ fi
if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1"; then
if test "x$OPENSSL_ENABLED" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
-o "x$GNUTLS_ENABLED" = "x1" -o "x$MBEDTLS_ENABLED" = "x1" \
- -o "x$NSS_ENABLED" = "x1" -o "x$DARWINSSL_ENABLED" = "x1"; then
+ -o "x$NSS_ENABLED" = "x1" -o "x$SECURETRANSPORT_ENABLED" = "x1"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
if test "x$CURL_DISABLE_HTTP" != "x1" -a \
@@ -41094,7 +41175,7 @@ if test "x$CURL_DISABLE_SMB" != "x1" \
-a "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" \
-a \( "x$OPENSSL_ENABLED" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
-o "x$GNUTLS_ENABLED" = "x1" -o "x$MBEDTLS_ENABLED" = "x1" \
- -o "x$NSS_ENABLED" = "x1" -o "x$DARWINSSL_ENABLED" = "x1" \); then
+ -o "x$NSS_ENABLED" = "x1" -o "x$SECURETRANSPORT_ENABLED" = "x1" \); then
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB"
if test "x$SSL_ENABLED" = "x1"; then
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMBS"
@@ -43982,33 +44063,35 @@ done
LIBS: ${LIBS}
curl version: ${CURLVERSION}
- SSL support: ${curl_ssl_msg}
- SSH support: ${curl_ssh_msg}
- zlib support: ${curl_zlib_msg}
- brotli support: ${curl_brotli_msg}
- GSS-API support: ${curl_gss_msg}
- TLS-SRP support: ${curl_tls_srp_msg}
+ SSL: ${curl_ssl_msg}
+ SSH: ${curl_ssh_msg}
+ zlib: ${curl_zlib_msg}
+ brotli: ${curl_brotli_msg}
+ GSS-API: ${curl_gss_msg}
+ TLS-SRP: ${curl_tls_srp_msg}
resolver: ${curl_res_msg}
- IPv6 support: ${curl_ipv6_msg}
- Unix sockets support: ${curl_unix_sockets_msg}
- IDN support: ${curl_idn_msg}
+ IPv6: ${curl_ipv6_msg}
+ Unix sockets: ${curl_unix_sockets_msg}
+ IDN: ${curl_idn_msg}
Build libcurl: Shared=${enable_shared}, Static=${enable_static}
Built-in manual: ${curl_manual_msg}
--libcurl option: ${curl_libcurl_msg}
Verbose errors: ${curl_verbose_msg}
Code coverage: ${curl_coverage_msg}
- SSPI support: ${curl_sspi_msg}
+ SSPI: ${curl_sspi_msg}
ca cert bundle: ${ca}${ca_warning}
ca cert path: ${capath}${capath_warning}
ca fallback: ${with_ca_fallback}
- LDAP support: ${curl_ldap_msg}
- LDAPS support: ${curl_ldaps_msg}
- RTSP support: ${curl_rtsp_msg}
- RTMP support: ${curl_rtmp_msg}
- metalink support: ${curl_mtlnk_msg}
- PSL support: ${curl_psl_msg}
- HTTP2 support: ${curl_h2_msg}
+ LDAP: ${curl_ldap_msg}
+ LDAPS: ${curl_ldaps_msg}
+ RTSP: ${curl_rtsp_msg}
+ RTMP: ${curl_rtmp_msg}
+ Metalink: ${curl_mtlnk_msg}
+ PSL: ${curl_psl_msg}
+ Alt-svc: ${curl_altsvc_msg}
+ HTTP2: ${curl_h2_msg}
Protocols: ${SUPPORT_PROTOCOLS}
+ Features: ${SUPPORT_FEATURES}
" >&5
$as_echo "$as_me: Configured to build curl/libcurl:
@@ -44021,31 +44104,38 @@ $as_echo "$as_me: Configured to build curl/libcurl:
LIBS: ${LIBS}
curl version: ${CURLVERSION}
- SSL support: ${curl_ssl_msg}
- SSH support: ${curl_ssh_msg}
- zlib support: ${curl_zlib_msg}
- brotli support: ${curl_brotli_msg}
- GSS-API support: ${curl_gss_msg}
- TLS-SRP support: ${curl_tls_srp_msg}
+ SSL: ${curl_ssl_msg}
+ SSH: ${curl_ssh_msg}
+ zlib: ${curl_zlib_msg}
+ brotli: ${curl_brotli_msg}
+ GSS-API: ${curl_gss_msg}
+ TLS-SRP: ${curl_tls_srp_msg}
resolver: ${curl_res_msg}
- IPv6 support: ${curl_ipv6_msg}
- Unix sockets support: ${curl_unix_sockets_msg}
- IDN support: ${curl_idn_msg}
+ IPv6: ${curl_ipv6_msg}
+ Unix sockets: ${curl_unix_sockets_msg}
+ IDN: ${curl_idn_msg}
Build libcurl: Shared=${enable_shared}, Static=${enable_static}
Built-in manual: ${curl_manual_msg}
--libcurl option: ${curl_libcurl_msg}
Verbose errors: ${curl_verbose_msg}
Code coverage: ${curl_coverage_msg}
- SSPI support: ${curl_sspi_msg}
+ SSPI: ${curl_sspi_msg}
ca cert bundle: ${ca}${ca_warning}
ca cert path: ${capath}${capath_warning}
ca fallback: ${with_ca_fallback}
- LDAP support: ${curl_ldap_msg}
- LDAPS support: ${curl_ldaps_msg}
- RTSP support: ${curl_rtsp_msg}
- RTMP support: ${curl_rtmp_msg}
- metalink support: ${curl_mtlnk_msg}
- PSL support: ${curl_psl_msg}
- HTTP2 support: ${curl_h2_msg}
+ LDAP: ${curl_ldap_msg}
+ LDAPS: ${curl_ldaps_msg}
+ RTSP: ${curl_rtsp_msg}
+ RTMP: ${curl_rtmp_msg}
+ Metalink: ${curl_mtlnk_msg}
+ PSL: ${curl_psl_msg}
+ Alt-svc: ${curl_altsvc_msg}
+ HTTP2: ${curl_h2_msg}
Protocols: ${SUPPORT_PROTOCOLS}
+ Features: ${SUPPORT_FEATURES}
" >&6;}
+if test -n "$experimental"; then
+ cat >&2 << _EOF
+ WARNING: $experimental is enabled but marked EXPERIMENTAL. Use with caution!
+_EOF
+fi
diff --git a/configure.ac b/configure.ac
index e9f0ef75..6d5ec2c0 100755
--- a/configure.ac
+++ b/configure.ac
@@ -155,7 +155,7 @@ AC_SUBST(PKGADD_VENDOR)
dnl
dnl initialize all the info variables
- curl_ssl_msg="no (--with-{ssl,gnutls,nss,polarssl,mbedtls,cyassl,winssl,darwinssl,mesalink} )"
+ curl_ssl_msg="no (--with-{ssl,gnutls,nss,polarssl,mbedtls,cyassl,schannel,secure-transport,mesalink,amissl} )"
curl_ssh_msg="no (--with-libssh2)"
curl_zlib_msg="no (--with-zlib)"
curl_brotli_msg="no (--with-brotli)"
@@ -365,6 +365,7 @@ CURL_CHECK_WIN32_LARGEFILE
CURL_MAC_CFLAGS
CURL_SUPPORTS_BUILTIN_AVAILABLE
+
dnl ************************************************************
dnl switch off particular protocols
dnl
@@ -839,6 +840,28 @@ fi
if test "$HAVE_GETHOSTBYNAME" != "1"
then
+ dnl This is for AmigaOS with bsdsocket.library - needs testing before -lnet
+ AC_MSG_CHECKING([for gethostbyname for AmigaOS bsdsocket.library])
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+#include <proto/bsdsocket.h>
+struct Library *SocketBase = NULL;
+ ]],[[
+ gethostbyname("www.dummysite.com");
+ ]])
+ ],[
+ AC_MSG_RESULT([yes])
+ HAVE_GETHOSTBYNAME="1"
+ HAVE_PROTO_BSDSOCKET_H="1"
+ AC_DEFINE(HAVE_PROTO_BSDSOCKET_H, 1, [if Amiga bsdsocket.library is in use])
+ AC_SUBST(HAVE_PROTO_BSDSOCKET_H, [1])
+ ],[
+ AC_MSG_RESULT([no])
+ ])
+fi
+
+if test "$HAVE_GETHOSTBYNAME" != "1"
+then
dnl gethostbyname in the network lib - for Haiku OS
AC_CHECK_LIB(network, gethostbyname,
[HAVE_GETHOSTBYNAME="1"
@@ -1509,22 +1532,27 @@ else
AC_MSG_RESULT(no)
fi
-OPT_DARWINSSL=no
+OPT_SECURETRANSPORT=no
AC_ARG_WITH(darwinssl,dnl
AC_HELP_STRING([--with-darwinssl],[enable Apple OS native SSL/TLS])
AC_HELP_STRING([--without-darwinssl], [disable Apple OS native SSL/TLS]),
- OPT_DARWINSSL=$withval)
+ OPT_SECURETRANSPORT=$withval)
-AC_MSG_CHECKING([whether to enable Apple OS native SSL/TLS])
-if test -z "$ssl_backends" -o "x$OPT_DARWINSSL" != xno; then
- if test "x$OPT_DARWINSSL" != "xno" &&
+AC_ARG_WITH(secure-transport,dnl
+AC_HELP_STRING([--with-secure-transport],[enable Apple OS native SSL/TLS])
+AC_HELP_STRING([--without-secure-transport], [disable Apple OS native SSL/TLS]),
+ OPT_SECURETRANSPORT=$withval)
+
+AC_MSG_CHECKING([whether to enable Secure Transport])
+if test -z "$ssl_backends" -o "x$OPT_SECURETRANSPORT" != xno; then
+ if test "x$OPT_SECURETRANSPORT" != "xno" &&
test -d "/System/Library/Frameworks/Security.framework"; then
AC_MSG_RESULT(yes)
- AC_DEFINE(USE_DARWINSSL, 1, [to enable Apple OS native SSL/TLS support])
- AC_SUBST(USE_DARWINSSL, [1])
- ssl_msg="Apple OS-native"
- test darwinssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
- DARWINSSL_ENABLED=1
+ AC_DEFINE(USE_SECTRANSP, 1, [enable Secure Transport])
+ AC_SUBST(USE_SECTRANSP, [1])
+ ssl_msg="Secure Transport"
+ test secure-transport != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
+ SECURETRANSPORT_ENABLED=1
LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Security"
else
AC_MSG_RESULT(no)
@@ -1534,6 +1562,35 @@ else
AC_MSG_RESULT(no)
fi
+OPT_AMISSL=no
+AC_ARG_WITH(amissl,dnl
+AC_HELP_STRING([--with-amissl],[enable Amiga native SSL/TLS (AmiSSL)])
+AC_HELP_STRING([--without-amissl], [disable Amiga native SSL/TLS (AmiSSL)]),
+ OPT_AMISSL=$withval)
+
+AC_MSG_CHECKING([whether to enable Amiga native SSL/TLS (AmiSSL)])
+if test "$HAVE_PROTO_BSDSOCKET_H" == "1"; then
+ if test -z "$ssl_backends" -o "x$OPT_AMISSL" != xno; then
+ ssl_msg=
+ if test "x$OPT_AMISSL" != "xno"; then
+ AC_MSG_RESULT(yes)
+ ssl_msg="AmiSSL"
+ test amissl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
+ AMISSL_ENABLED=1
+ LIBS="-lamisslauto $LIBS"
+ AC_DEFINE(USE_AMISSL, 1, [if AmiSSL is in use])
+ AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use])
+ else
+ AC_MSG_RESULT(no)
+ fi
+ test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
+ else
+ AC_MSG_RESULT(no)
+ fi
+else
+ AC_MSG_RESULT(no)
+fi
+
dnl **********************************************************************
dnl Check for the presence of SSL libraries and headers
dnl **********************************************************************
@@ -2384,7 +2441,6 @@ if test -z "$ssl_backends" -o "x$OPT_CYASSL" != xno; then
dnl Recent WolfSSL versions build without SSLv3 by default
dnl WolfSSL needs configure --enable-opensslextra to have *get_peer*
AC_CHECK_FUNCS(wolfSSLv3_client_method \
- wolfSSL_CTX_UseSupportedCurve \
wolfSSL_get_peer_certificate \
wolfSSL_UseALPN)
else
@@ -2634,10 +2690,10 @@ if test -z "$ssl_backends" -o "x$OPT_NSS" != xno; then
test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
fi
-case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$MBEDTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$DARWINSSL_ENABLED$MESALINK_ENABLED" in
+case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$MBEDTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$SECURETRANSPORT_ENABLED$MESALINK_ENABLED$AMISSL_ENABLED" in
x)
AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
- AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-winssl, --with-darwinssl, or --with-mesalink to address this.])
+ AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink or --with-amissl to address this.])
;;
x1)
# one SSL backend is enabled
@@ -2692,7 +2748,7 @@ AC_ARG_WITH(libpsl,
with_libpsl=yes)
if test $with_libpsl != "no"; then
AC_SEARCH_LIBS(psl_builtin, psl,
- [curl_psl_msg="yes";
+ [curl_psl_msg="enabled";
AC_DEFINE([USE_LIBPSL], [1], [PSL support enabled])
],
[curl_psl_msg="no (libpsl not found)";
@@ -2700,7 +2756,7 @@ if test $with_libpsl != "no"; then
]
)
fi
-AM_CONDITIONAL([USE_LIBPSL], [test "$curl_psl_msg" = "yes"])
+AM_CONDITIONAL([USE_LIBPSL], [test "$curl_psl_msg" = "enabled"])
dnl **********************************************************************
dnl Check for libmetalink
@@ -3066,9 +3122,9 @@ AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shar
elif test "x$CYASSL_ENABLED" = "x1"; then
versioned_symbols_flavour="CYASSL_"
elif test "x$WINSSL_ENABLED" = "x1"; then
- versioned_symbols_flavour="WINSSL_"
- elif test "x$DARWINSSL_ENABLED" = "x1"; then
- versioned_symbols_flavour="DARWINSSL_"
+ versioned_symbols_flavour="SCHANNEL_"
+ elif test "x$SECURETRANSPORT_ENABLED" = "x1"; then
+ versioned_symbols_flavour="SECURE_TRANSPORT_"
else
versioned_symbols_flavour=""
fi
@@ -3409,6 +3465,31 @@ case "$OPT_ZSH_FPATH" in
esac
dnl **********************************************************************
+dnl Check for fish completion path
+dnl **********************************************************************
+
+OPT_FISH_FPATH=default
+AC_ARG_WITH(fish-functions-dir,
+AC_HELP_STRING([--with-fish-functions-dir=PATH],[Install fish completions to PATH])
+AC_HELP_STRING([--without-fish-functions-dir],[Do not install fish completions]),
+ [OPT_FISH_FPATH=$withval])
+case "$OPT_FISH_FPATH" in
+ no)
+ dnl --without-fish-functions-dir option used
+ ;;
+ default|yes)
+ dnl --with-fish-functions-dir option used without path
+ FISH_FUNCTIONS_DIR="$datarootdir/fish/completions"
+ AC_SUBST(FISH_FUNCTIONS_DIR)
+ ;;
+ *)
+ dnl --with-fish-functions-dir option used with path
+ FISH_FUNCTIONS_DIR="$withval"
+ AC_SUBST(FISH_FUNCTIONS_DIR)
+ ;;
+esac
+
+dnl **********************************************************************
dnl Back to "normal" configuring
dnl **********************************************************************
@@ -3493,6 +3574,7 @@ dnl default includes
]
)
+
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
CURL_CHECK_VARIADIC_MACROS
@@ -3613,7 +3695,6 @@ CURL_CHECK_FUNC_CLOSESOCKET
CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
CURL_CHECK_FUNC_CONNECT
CURL_CHECK_FUNC_FCNTL
-CURL_CHECK_FUNC_FDOPEN
CURL_CHECK_FUNC_FREEADDRINFO
CURL_CHECK_FUNC_FREEIFADDRS
CURL_CHECK_FUNC_FSETXATTR
@@ -4035,6 +4116,32 @@ AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
)
dnl ************************************************************
+dnl switch on/off alt-svc
+dnl
+curl_altsvc_msg="no (--enable-alt-svc)";
+AC_MSG_CHECKING([whether to support alt-svc])
+AC_ARG_ENABLE(alt-svc,
+AC_HELP_STRING([--enable-alt-svc],[Enable alt-svc support])
+AC_HELP_STRING([--disable-alt-svc],[Disable alt-svc support]),
+[ case "$enableval" in
+ no)
+ AC_MSG_RESULT(no)
+ ;;
+ *) AC_MSG_RESULT(yes)
+ curl_altsvc_msg="enabled";
+ enable_altsvc="yes"
+ experimental="alt-svc"
+ ;;
+ esac ],
+ AC_MSG_RESULT(no)
+)
+
+if test "$enable_altsvc" = "yes"; then
+ AC_DEFINE(USE_ALTSVC, 1, [to enable alt-svc])
+ experimental="alt-svc"
+fi
+
+dnl ************************************************************
dnl hiding of library internal symbols
dnl
CURL_CONFIGURE_SYMBOL_HIDING
@@ -4103,10 +4210,14 @@ if test "x$HAVE_GSSAPI" = "x1"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES GSS-API"
fi
-if test "x$curl_psl_msg" = "xyes"; then
+if test "x$curl_psl_msg" = "xenabled"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES PSL"
fi
+if test "x$enable_altsvc" = "xyes"; then
+ SUPPORT_FEATURES="$SUPPORT_FEATURES alt-svc"
+fi
+
if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
\( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then
SUPPORT_FEATURES="$SUPPORT_FEATURES SPNEGO"
@@ -4120,7 +4231,7 @@ fi
if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1"; then
if test "x$OPENSSL_ENABLED" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
-o "x$GNUTLS_ENABLED" = "x1" -o "x$MBEDTLS_ENABLED" = "x1" \
- -o "x$NSS_ENABLED" = "x1" -o "x$DARWINSSL_ENABLED" = "x1"; then
+ -o "x$NSS_ENABLED" = "x1" -o "x$SECURETRANSPORT_ENABLED" = "x1"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
if test "x$CURL_DISABLE_HTTP" != "x1" -a \
@@ -4202,7 +4313,7 @@ if test "x$CURL_DISABLE_SMB" != "x1" \
-a "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" \
-a \( "x$OPENSSL_ENABLED" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
-o "x$GNUTLS_ENABLED" = "x1" -o "x$MBEDTLS_ENABLED" = "x1" \
- -o "x$NSS_ENABLED" = "x1" -o "x$DARWINSSL_ENABLED" = "x1" \); then
+ -o "x$NSS_ENABLED" = "x1" -o "x$SECURETRANSPORT_ENABLED" = "x1" \); then
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB"
if test "x$SSL_ENABLED" = "x1"; then
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMBS"
@@ -4302,31 +4413,38 @@ AC_MSG_NOTICE([Configured to build curl/libcurl:
LIBS: ${LIBS}
curl version: ${CURLVERSION}
- SSL support: ${curl_ssl_msg}
- SSH support: ${curl_ssh_msg}
- zlib support: ${curl_zlib_msg}
- brotli support: ${curl_brotli_msg}
- GSS-API support: ${curl_gss_msg}
- TLS-SRP support: ${curl_tls_srp_msg}
+ SSL: ${curl_ssl_msg}
+ SSH: ${curl_ssh_msg}
+ zlib: ${curl_zlib_msg}
+ brotli: ${curl_brotli_msg}
+ GSS-API: ${curl_gss_msg}
+ TLS-SRP: ${curl_tls_srp_msg}
resolver: ${curl_res_msg}
- IPv6 support: ${curl_ipv6_msg}
- Unix sockets support: ${curl_unix_sockets_msg}
- IDN support: ${curl_idn_msg}
+ IPv6: ${curl_ipv6_msg}
+ Unix sockets: ${curl_unix_sockets_msg}
+ IDN: ${curl_idn_msg}
Build libcurl: Shared=${enable_shared}, Static=${enable_static}
Built-in manual: ${curl_manual_msg}
--libcurl option: ${curl_libcurl_msg}
Verbose errors: ${curl_verbose_msg}
Code coverage: ${curl_coverage_msg}
- SSPI support: ${curl_sspi_msg}
+ SSPI: ${curl_sspi_msg}
ca cert bundle: ${ca}${ca_warning}
ca cert path: ${capath}${capath_warning}
ca fallback: ${with_ca_fallback}
- LDAP support: ${curl_ldap_msg}
- LDAPS support: ${curl_ldaps_msg}
- RTSP support: ${curl_rtsp_msg}
- RTMP support: ${curl_rtmp_msg}
- metalink support: ${curl_mtlnk_msg}
- PSL support: ${curl_psl_msg}
- HTTP2 support: ${curl_h2_msg}
+ LDAP: ${curl_ldap_msg}
+ LDAPS: ${curl_ldaps_msg}
+ RTSP: ${curl_rtsp_msg}
+ RTMP: ${curl_rtmp_msg}
+ Metalink: ${curl_mtlnk_msg}
+ PSL: ${curl_psl_msg}
+ Alt-svc: ${curl_altsvc_msg}
+ HTTP2: ${curl_h2_msg}
Protocols: ${SUPPORT_PROTOCOLS}
+ Features: ${SUPPORT_FEATURES}
])
+if test -n "$experimental"; then
+ cat >&2 << _EOF
+ WARNING: $experimental is enabled but marked EXPERIMENTAL. Use with caution!
+_EOF
+fi
diff --git a/docs/ALTSVC.md b/docs/ALTSVC.md
new file mode 100644
index 00000000..5aca1c95
--- /dev/null
+++ b/docs/ALTSVC.md
@@ -0,0 +1,59 @@
+# Alt-Svc
+
+curl features **EXPERIMENTAL** support for the Alt-Svc: HTTP header.
+
+## Experimental
+
+Experimental support in curl means:
+
+1. Experimental features are provided to allow users to try them out and
+ provide feedback on functionality and API etc before they ship and get
+ "carved in stone".
+2. You must enable the feature when invoking configure as otherwise curl will
+ not be built with the feature present.
+3. We strongly advice against using this feature in production.
+4. **We reserve the right to change behavior** of the feature without sticking
+ to our API/ABI rules as we do for regular features, as long as it is marked
+ experimental.
+5. Experimental features are clearly marked so in documentation. Beware.
+
+## Enable Alt-Svc in build
+
+`./configure --enable-alt-svc`
+
+## Standard
+
+[RFC 7838](https://tools.ietf.org/html/rfc7838)
+
+## What works
+
+- read alt-svc file from disk
+- write alt-svc file from disk
+- parse `Alt-Svc:` response headers, including `ma`, `clear` and `persist`.
+- replaces old entries when new alternatives are received
+- unit tests to verify most of this functionality (test 1654)
+- act on `Alt-Svc:` response headers
+- build conditionally on `configure --enable-alt-svc` only, feature marked as
+ **EXPERIMENTAL**
+- implement `CURLOPT_ALTSVC_CTRL`
+- implement `CURLOPT_ALTSVC`
+- document `CURLOPT_ALTSVC_CTRL`
+- document `CURLOPT_ALTSVC`
+- document `--alt-svc`
+- add `CURL_VERSION_ALTSVC`
+- make `curl -V` show 'alt-svc' as a feature if built-in
+- support `curl --alt-svc [file]` to enable caching, using that file
+- make `tests/runtests.pl` able to filter tests on the feature `alt-svc`
+- actually use the existing in-memory alt-svc cache for outgoing connections
+- alt-svc cache expiry
+- test 355 and 356 verify curl acting on Alt-Svc, received from header and
+ loaded from cache. The latter needs a debug build since it enables Alt-Svc
+ for plain HTTP.
+
+## What is left
+
+- handle multiple response headers, when one of them says `clear` (should
+ override them all)
+- using `Age:` value for caching age as per spec
+- `CURLALTSVC_IMMEDIATELY` support
+- `CURLALTSVC_ALTUSED` support
diff --git a/docs/CIPHERS.md b/docs/CIPHERS.md
index 0d3be3b5..c0118042 100644
--- a/docs/CIPHERS.md
+++ b/docs/CIPHERS.md
@@ -496,3 +496,4 @@ WinSSL allows the enabling and disabling of encryption algorithms, but not speci
`CALG_ECDH`,
`CALG_ECMQV`,
`CALG_ECDSA`,
+`CALG_ECDH_EPHEM`,
diff --git a/docs/FAQ b/docs/FAQ
index c20716dc..c1bc9bea 100644
--- a/docs/FAQ
+++ b/docs/FAQ
@@ -446,10 +446,10 @@ FAQ
backends.
curl can be built to use one of the following SSL alternatives: OpenSSL,
- GnuTLS, yassl, NSS, PolarSSL, MesaLink, Secure Transport (native iOS/OS X),
- WinSSL (native Windows) or GSKit (native IBM i). They all have their pros
- and cons, and we try to maintain a comparison of them here:
- https://curl.haxx.se/docs/ssl-compared.html
+ libressl, BoringSSL, GnuTLS, wolfSSL, NSS, mbedTLS, MesaLink, Secure
+ Transport (native iOS/OS X), Schannel (native Windows) or GSKit (native IBM
+ i). They all have their pros and cons, and we try to maintain a comparison
+ of them here: https://curl.haxx.se/docs/ssl-compared.html
2.3 Where can I find a copy of LIBEAY32.DLL?
@@ -483,7 +483,7 @@ FAQ
and logs and check out why the configure script doesn't find the SSL libs
and/or include files.
- Also, check out the other paragraph in this FAQ labelled "configure doesn't
+ Also, check out the other paragraph in this FAQ labeled "configure doesn't
find OpenSSL even when it is installed".
3.2 How do I tell curl to resume a transfer?
@@ -572,13 +572,14 @@ FAQ
about bindings on the curl-library list too, but be prepared that people on
that list may not know anything about bindings.
- In October 2009, there were interfaces available for the following
- languages: Ada95, Basic, C, C++, Ch, Cocoa, D, Dylan, Eiffel, Euphoria,
- Ferite, Gambas, glib/GTK+, Haskell, ILE/RPG, Java, Lisp, Lua, Mono, .NET,
- Object-Pascal, OCaml, Pascal, Perl, PHP, PostgreSQL, Python, R, Rexx, Ruby,
- Scheme, S-Lang, Smalltalk, SP-Forth, SPL, Tcl, Visual Basic, Visual FoxPro,
- Q, wxwidgets and XBLite. By the time you read this, additional ones may have
- appeared!
+ In February 2019, there were interfaces available for the following
+ languages: Ada95, Basic, C, C++, Ch, Cocoa, D, Delphi, Dylan, Eiffel,
+ Euphoria, Falcon, Ferite, Gambas, glib/GTK+, Go, Guile, Harbour, Haskell,
+ Java, Julia, Lisp, Lua, Mono, .NET, node.js, Object-Pascal, OCaml, Pascal,
+ Perl, PHP, PostgreSQL, Python, R, Rexx, Ring, RPG, Ruby, Rust, Scheme,
+ Scilab, S-Lang, Smalltalk, SP-Forth, SPL, Tcl, Visual Basic, Visual FoxPro,
+ Q, wxwidgets, XBLite and Xoho. By the time you read this, additional ones
+ may have appeared!
3.10 What about SOAP, WebDAV, XML-RPC or similar protocols over HTTP?
@@ -745,7 +746,7 @@ FAQ
directory, you get the actual root directory.
To specify a file in your user's home directory, you need to use the correct
- URL syntax which for sftp might look similar to:
+ URL syntax which for SFTP might look similar to:
curl -O -u user:password sftp://example.com/~/file.txt
@@ -1024,7 +1025,7 @@ FAQ
speak SSL. FTPS:// connections default to port 990.
To use explicit FTPS, you use a FTP:// URL and the --ftp-ssl option (or one
- of its related flavours). This is the most common method, and the one
+ of its related flavors). This is the most common method, and the one
mandated by RFC4217. This kind of connection will then of course use the
standard FTP port 21 by default.
@@ -1115,7 +1116,7 @@ FAQ
an embedded device with only a single network connection) may want to act
immediately if its lone network connection goes down. That can be achieved
by having the application monitor the network connection on its own using an
- OS-specific mechanism, then signalling libcurl to abort (see also item 5.13).
+ OS-specific mechanism, then signaling libcurl to abort (see also item 5.13).
4.20 curl doesn't return error for HTTP non-200 responses!
diff --git a/docs/GOVERNANCE.md b/docs/GOVERNANCE.md
index 6de2eff4..d49358b9 100644
--- a/docs/GOVERNANCE.md
+++ b/docs/GOVERNANCE.md
@@ -97,7 +97,7 @@ Anyone can aspire to become a curl maintainer.
### Duties
There are no mandatory duties. We hope and wish that maintainers consider
-reviewing patches and help merching them, especially when the changes are
+reviewing patches and help merging them, especially when the changes are
within the area of personal expertise and experience.
### Requirements
@@ -108,7 +108,7 @@ within the area of personal expertise and experience.
### Recommendations
-- please enable 2fa on your github account to reduce risk of malicious sourc
+- please enable 2fa on your github account to reduce risk of malicious source
code tampering
- consider enabling signed git commits for additional verification of changes
diff --git a/docs/HTTP-COOKIES.md b/docs/HTTP-COOKIES.md
index 66e39d23..632cb4eb 100644
--- a/docs/HTTP-COOKIES.md
+++ b/docs/HTTP-COOKIES.md
@@ -18,9 +18,16 @@
original [Netscape spec from 1994](https://curl.haxx.se/rfc/cookie_spec.html).
In 2011, [RFC6265](https://www.ietf.org/rfc/rfc6265.txt) was finally
- published and details how cookies work within HTTP. In 2017, an update was
+ published and details how cookies work within HTTP. In 2016, an update which
+ added support for prefixes was
+ [proposed](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-prefixes-00),
+ and in 2017, another update was
[drafted](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-alone-01)
- to deprecate modification of 'secure' cookies from non-secure origins.
+ to deprecate modification of 'secure' cookies from non-secure origins. Both
+ of these drafs have been incorporated into a proposal to
+ [replace](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-02)
+ RFC6265. Cookie prefixes and secure cookie modification protection has been
+ implemented by curl.
## Cookies saved to disk
diff --git a/docs/INSTALL.md b/docs/INSTALL.md
index d4b01f21..f2f93227 100644
--- a/docs/INSTALL.md
+++ b/docs/INSTALL.md
@@ -101,12 +101,12 @@ The default OpenSSL configure check will also detect and use BoringSSL or
libressl.
- GnuTLS: `--without-ssl --with-gnutls`.
- - Cyassl: `--without-ssl --with-cyassl`
+ - wolfSSL: `--without-ssl --with-wolfssl`
- NSS: `--without-ssl --with-nss`
- PolarSSL: `--without-ssl --with-polarssl`
- mbedTLS: `--without-ssl --with-mbedtls`
- - schannel: `--without-ssl --with-winssl`
- - secure transport: `--without-ssl --with-darwinssl`
+ - schannel: `--without-ssl --with-schannel`
+ - secure transport: `--without-ssl --with-secure-transport`
- MesaLink: `--without-ssl --with-mesalink`
# Windows
diff --git a/docs/INTERNALS.md b/docs/INTERNALS.md
index 1633e59f..69b92d4e 100644
--- a/docs/INTERNALS.md
+++ b/docs/INTERNALS.md
@@ -314,7 +314,7 @@ FTP
<a name="kerberos"></a>
Kerberos
---------
+========
Kerberos support is mainly in lib/krb5.c and lib/security.c but also
`curl_sasl_sspi.c` and `curl_sasl_gssapi.c` for the email protocols and
@@ -590,6 +590,7 @@ Asynchronous name resolves
options that end with LARGE. The type is 64bit large on most modern
platforms.
+<a name="curlx"></a>
curlx
=====
diff --git a/docs/KNOWN_BUGS b/docs/KNOWN_BUGS
index 5363575e..875456f1 100644
--- a/docs/KNOWN_BUGS
+++ b/docs/KNOWN_BUGS
@@ -18,6 +18,7 @@ problems may have been fixed or changed somewhat since this was written!
1.4 multipart formposts file name encoding
1.5 Expect-100 meets 417
1.6 Unnecessary close when 401 received waiting for 100
+ 1.7 Deflate error after all content was received
1.9 HTTP/2 frames while in the connection pool kill reuse
1.10 Strips trailing dot from host name
1.11 CURLOPT_SEEKFUNCTION not called with CURLFORM_STREAM
@@ -29,6 +30,7 @@ problems may have been fixed or changed somewhat since this was written!
2.4 DarwinSSL won't import PKCS#12 client certificates without a password
2.5 Client cert handling with Issuer DN differs between backends
2.6 CURL_GLOBAL_SSL
+ 2.7 Client cert (MTLS) issues with Schannel
3. Email protocols
3.1 IMAP SEARCH ALL truncated response
@@ -46,6 +48,8 @@ problems may have been fixed or changed somewhat since this was written!
5. Build and portability issues
5.1 tests not compatible with python3
5.2 curl-config --libs contains private details
+ 5.3 curl compiled on OSX 10.13 failed to run on OSX 10.10
+ 5.4 Cannot compile against a static build of OpenLDAP
5.5 can't handle Unicode arguments in Windows
5.6 cmake support gaps
5.7 Visual Studio project gaps
@@ -154,6 +158,15 @@ problems may have been fixed or changed somewhat since this was written!
waiting for the the 100-continue response.
https://curl.haxx.se/mail/lib-2008-08/0462.html
+1.7 Deflate error after all content was received
+
+ There's a situation where we can get an error in a HTTP response that is
+ compressed, when that error is detected after all the actual body contents
+ have been received and delivered to the appliction. This is tricky, but is
+ ultimately a broken server.
+
+ See https://github.com/curl/curl/issues/2719
+
1.9 HTTP/2 frames while in the connection pool kill reuse
If the server sends HTTP/2 frames (like for example an HTTP/2 PING frame) to
@@ -272,6 +285,10 @@ problems may have been fixed or changed somewhat since this was written!
https://github.com/curl/curl/issues/2276
+2.7 Client cert (MTLS) issues with Schannel
+
+ See https://github.com/curl/curl/issues/3145
+
3. Email protocols
@@ -367,6 +384,14 @@ problems may have been fixed or changed somewhat since this was written!
run that might be needed only for building libcurl. Further, curl-config
--cflags suffers from the same effects with CFLAGS/CPPFLAGS.
+5.3 curl compiled on OSX 10.13 failed to run on OSX 10.10
+
+ See https://github.com/curl/curl/issues/2905
+
+5.4 Cannot compile against a static build of OpenLDAP
+
+ See https://github.com/curl/curl/issues/2367
+
5.5 can't handle Unicode arguments in Windows
If a URL or filename can't be encoded using the user's current codepage then
diff --git a/docs/MANUAL b/docs/MANUAL
deleted file mode 100644
index 59b97427..00000000
--- a/docs/MANUAL
+++ /dev/null
@@ -1,1058 +0,0 @@
-LATEST VERSION
-
- You always find news about what's going on as well as the latest versions
- from the curl web pages, located at:
-
- https://curl.haxx.se
-
-SIMPLE USAGE
-
- Get the main page from Netscape's web-server:
-
- curl http://www.netscape.com/
-
- Get the README file the user's home directory at funet's ftp-server:
-
- curl ftp://ftp.funet.fi/README
-
- Get a web page from a server using port 8000:
-
- curl http://www.weirdserver.com:8000/
-
- Get a directory listing of an FTP site:
-
- curl ftp://cool.haxx.se/
-
- Get the definition of curl from a dictionary:
-
- curl dict://dict.org/m:curl
-
- Fetch two documents at once:
-
- curl ftp://cool.haxx.se/ http://www.weirdserver.com:8000/
-
- Get a file off an FTPS server:
-
- curl ftps://files.are.secure.com/secrets.txt
-
- or use the more appropriate FTPS way to get the same file:
-
- curl --ftp-ssl ftp://files.are.secure.com/secrets.txt
-
- Get a file from an SSH server using SFTP:
-
- curl -u username sftp://example.com/etc/issue
-
- Get a file from an SSH server using SCP using a private key
- (not password-protected) to authenticate:
-
- curl -u username: --key ~/.ssh/id_rsa \
- scp://example.com/~/file.txt
-
- Get a file from an SSH server using SCP using a private key
- (password-protected) to authenticate:
-
- curl -u username: --key ~/.ssh/id_rsa --pass private_key_password \
- scp://example.com/~/file.txt
-
- Get the main page from an IPv6 web server:
-
- curl "http://[2001:1890:1112:1::20]/"
-
- Get a file from an SMB server:
-
- curl -u "domain\username:passwd" smb://server.example.com/share/file.txt
-
-DOWNLOAD TO A FILE
-
- Get a web page and store in a local file with a specific name:
-
- curl -o thatpage.html http://www.netscape.com/
-
- Get a web page and store in a local file, make the local file get the name
- of the remote document (if no file name part is specified in the URL, this
- will fail):
-
- curl -O http://www.netscape.com/index.html
-
- Fetch two files and store them with their remote names:
-
- curl -O www.haxx.se/index.html -O curl.haxx.se/download.html
-
-USING PASSWORDS
-
- FTP
-
- To ftp files using name+passwd, include them in the URL like:
-
- curl ftp://name:passwd@machine.domain:port/full/path/to/file
-
- or specify them with the -u flag like
-
- curl -u name:passwd ftp://machine.domain:port/full/path/to/file
-
- FTPS
-
- It is just like for FTP, but you may also want to specify and use
- SSL-specific options for certificates etc.
-
- Note that using FTPS:// as prefix is the "implicit" way as described in the
- standards while the recommended "explicit" way is done by using FTP:// and
- the --ftp-ssl option.
-
- SFTP / SCP
-
- This is similar to FTP, but you can use the --key option to specify a
- private key to use instead of a password. Note that the private key may
- itself be protected by a password that is unrelated to the login password
- of the remote system; this password is specified using the --pass option.
- Typically, curl will automatically extract the public key from the private
- key file, but in cases where curl does not have the proper library support,
- a matching public key file must be specified using the --pubkey option.
-
- HTTP
-
- Curl also supports user and password in HTTP URLs, thus you can pick a file
- like:
-
- curl http://name:passwd@machine.domain/full/path/to/file
-
- or specify user and password separately like in
-
- curl -u name:passwd http://machine.domain/full/path/to/file
-
- HTTP offers many different methods of authentication and curl supports
- several: Basic, Digest, NTLM and Negotiate (SPNEGO). Without telling which
- method to use, curl defaults to Basic. You can also ask curl to pick the
- most secure ones out of the ones that the server accepts for the given URL,
- by using --anyauth.
-
- NOTE! According to the URL specification, HTTP URLs can not contain a user
- and password, so that style will not work when using curl via a proxy, even
- though curl allows it at other times. When using a proxy, you _must_ use
- the -u style for user and password.
-
- HTTPS
-
- Probably most commonly used with private certificates, as explained below.
-
-PROXY
-
- curl supports both HTTP and SOCKS proxy servers, with optional authentication.
- It does not have special support for FTP proxy servers since there are no
- standards for those, but it can still be made to work with many of them. You
- can also use both HTTP and SOCKS proxies to transfer files to and from FTP
- servers.
-
- Get an ftp file using an HTTP proxy named my-proxy that uses port 888:
-
- curl -x my-proxy:888 ftp://ftp.leachsite.com/README
-
- Get a file from an HTTP server that requires user and password, using the
- same proxy as above:
-
- curl -u user:passwd -x my-proxy:888 http://www.get.this/
-
- Some proxies require special authentication. Specify by using -U as above:
-
- curl -U user:passwd -x my-proxy:888 http://www.get.this/
-
- A comma-separated list of hosts and domains which do not use the proxy can
- be specified as:
-
- curl --noproxy localhost,get.this -x my-proxy:888 http://www.get.this/
-
- If the proxy is specified with --proxy1.0 instead of --proxy or -x, then
- curl will use HTTP/1.0 instead of HTTP/1.1 for any CONNECT attempts.
-
- curl also supports SOCKS4 and SOCKS5 proxies with --socks4 and --socks5.
-
- See also the environment variables Curl supports that offer further proxy
- control.
-
- Most FTP proxy servers are set up to appear as a normal FTP server from the
- client's perspective, with special commands to select the remote FTP server.
- curl supports the -u, -Q and --ftp-account options that can be used to
- set up transfers through many FTP proxies. For example, a file can be
- uploaded to a remote FTP server using a Blue Coat FTP proxy with the
- options:
-
- curl -u "Remote-FTP-Username@remote.ftp.server Proxy-Username:Remote-Pass" \
- --ftp-account Proxy-Password --upload-file local-file \
- ftp://my-ftp.proxy.server:21/remote/upload/path/
-
- See the manual for your FTP proxy to determine the form it expects to set up
- transfers, and curl's -v option to see exactly what curl is sending.
-
-RANGES
-
- HTTP 1.1 introduced byte-ranges. Using this, a client can request
- to get only one or more subparts of a specified document. Curl supports
- this with the -r flag.
-
- Get the first 100 bytes of a document:
-
- curl -r 0-99 http://www.get.this/
-
- Get the last 500 bytes of a document:
-
- curl -r -500 http://www.get.this/
-
- Curl also supports simple ranges for FTP files as well. Then you can only
- specify start and stop position.
-
- Get the first 100 bytes of a document using FTP:
-
- curl -r 0-99 ftp://www.get.this/README
-
-UPLOADING
-
- FTP / FTPS / SFTP / SCP
-
- Upload all data on stdin to a specified server:
-
- curl -T - ftp://ftp.upload.com/myfile
-
- Upload data from a specified file, login with user and password:
-
- curl -T uploadfile -u user:passwd ftp://ftp.upload.com/myfile
-
- Upload a local file to the remote site, and use the local file name at the remote
- site too:
-
- curl -T uploadfile -u user:passwd ftp://ftp.upload.com/
-
- Upload a local file to get appended to the remote file:
-
- curl -T localfile -a ftp://ftp.upload.com/remotefile
-
- Curl also supports ftp upload through a proxy, but only if the proxy is
- configured to allow that kind of tunneling. If it does, you can run curl in
- a fashion similar to:
-
- curl --proxytunnel -x proxy:port -T localfile ftp.upload.com
-
-SMB / SMBS
-
- curl -T file.txt -u "domain\username:passwd" \
- smb://server.example.com/share/
-
- HTTP
-
- Upload all data on stdin to a specified HTTP site:
-
- curl -T - http://www.upload.com/myfile
-
- Note that the HTTP server must have been configured to accept PUT before
- this can be done successfully.
-
- For other ways to do HTTP data upload, see the POST section below.
-
-VERBOSE / DEBUG
-
- If curl fails where it isn't supposed to, if the servers don't let you in,
- if you can't understand the responses: use the -v flag to get verbose
- fetching. Curl will output lots of info and what it sends and receives in
- order to let the user see all client-server interaction (but it won't show
- you the actual data).
-
- curl -v ftp://ftp.upload.com/
-
- To get even more details and information on what curl does, try using the
- --trace or --trace-ascii options with a given file name to log to, like
- this:
-
- curl --trace trace.txt www.haxx.se
-
-
-DETAILED INFORMATION
-
- Different protocols provide different ways of getting detailed information
- about specific files/documents. To get curl to show detailed information
- about a single file, you should use -I/--head option. It displays all
- available info on a single file for HTTP and FTP. The HTTP information is a
- lot more extensive.
-
- For HTTP, you can get the header information (the same as -I would show)
- shown before the data by using -i/--include. Curl understands the
- -D/--dump-header option when getting files from both FTP and HTTP, and it
- will then store the headers in the specified file.
-
- Store the HTTP headers in a separate file (headers.txt in the example):
-
- curl --dump-header headers.txt curl.haxx.se
-
- Note that headers stored in a separate file can be very useful at a later
- time if you want curl to use cookies sent by the server. More about that in
- the cookies section.
-
-POST (HTTP)
-
- It's easy to post data using curl. This is done using the -d <data>
- option. The post data must be urlencoded.
-
- Post a simple "name" and "phone" guestbook.
-
- curl -d "name=Rafael%20Sagula&phone=3320780" \
- http://www.where.com/guest.cgi
-
- How to post a form with curl, lesson #1:
-
- Dig out all the <input> tags in the form that you want to fill in.
-
- If there's a "normal" post, you use -d to post. -d takes a full "post
- string", which is in the format
-
- <variable1>=<data1>&<variable2>=<data2>&...
-
- The 'variable' names are the names set with "name=" in the <input> tags, and
- the data is the contents you want to fill in for the inputs. The data *must*
- be properly URL encoded. That means you replace space with + and that you
- replace weird letters with %XX where XX is the hexadecimal representation of
- the letter's ASCII code.
-
- Example:
-
- (page located at http://www.formpost.com/getthis/
-
- <form action="post.cgi" method="post">
- <input name=user size=10>
- <input name=pass type=password size=10>
- <input name=id type=hidden value="blablabla">
- <input name=ding value="submit">
- </form>
-
- We want to enter user 'foobar' with password '12345'.
-
- To post to this, you enter a curl command line like:
-
- curl -d "user=foobar&pass=12345&id=blablabla&ding=submit" \
- http://www.formpost.com/getthis/post.cgi
-
-
- While -d uses the application/x-www-form-urlencoded mime-type, generally
- understood by CGI's and similar, curl also supports the more capable
- multipart/form-data type. This latter type supports things like file upload.
-
- -F accepts parameters like -F "name=contents". If you want the contents to
- be read from a file, use <@filename> as contents. When specifying a file,
- you can also specify the file content type by appending ';type=<mime type>'
- to the file name. You can also post the contents of several files in one
- field. For example, the field name 'coolfiles' is used to send three files,
- with different content types using the following syntax:
-
- curl -F "coolfiles=@fil1.gif;type=image/gif,fil2.txt,fil3.html" \
- http://www.post.com/postit.cgi
-
- If the content-type is not specified, curl will try to guess from the file
- extension (it only knows a few), or use the previously specified type (from
- an earlier file if several files are specified in a list) or else it will
- use the default type 'application/octet-stream'.
-
- Emulate a fill-in form with -F. Let's say you fill in three fields in a
- form. One field is a file name which to post, one field is your name and one
- field is a file description. We want to post the file we have written named
- "cooltext.txt". To let curl do the posting of this data instead of your
- favourite browser, you have to read the HTML source of the form page and
- find the names of the input fields. In our example, the input field names
- are 'file', 'yourname' and 'filedescription'.
-
- curl -F "file=@cooltext.txt" -F "yourname=Daniel" \
- -F "filedescription=Cool text file with cool text inside" \
- http://www.post.com/postit.cgi
-
- To send two files in one post you can do it in two ways:
-
- 1. Send multiple files in a single "field" with a single field name:
-
- curl -F "pictures=@dog.gif,cat.gif"
-
- 2. Send two fields with two field names:
-
- curl -F "docpicture=@dog.gif" -F "catpicture=@cat.gif"
-
- To send a field value literally without interpreting a leading '@'
- or '<', or an embedded ';type=', use --form-string instead of
- -F. This is recommended when the value is obtained from a user or
- some other unpredictable source. Under these circumstances, using
- -F instead of --form-string would allow a user to trick curl into
- uploading a file.
-
-REFERRER
-
- An HTTP request has the option to include information about which address
- referred it to the actual page. Curl allows you to specify the
- referrer to be used on the command line. It is especially useful to
- fool or trick stupid servers or CGI scripts that rely on that information
- being available or contain certain data.
-
- curl -e www.coolsite.com http://www.showme.com/
-
- NOTE: The Referer: [sic] field is defined in the HTTP spec to be a full URL.
-
-USER AGENT
-
- An HTTP request has the option to include information about the browser
- that generated the request. Curl allows it to be specified on the command
- line. It is especially useful to fool or trick stupid servers or CGI
- scripts that only accept certain browsers.
-
- Example:
-
- curl -A 'Mozilla/3.0 (Win95; I)' http://www.nationsbank.com/
-
- Other common strings:
- 'Mozilla/3.0 (Win95; I)' Netscape Version 3 for Windows 95
- 'Mozilla/3.04 (Win95; U)' Netscape Version 3 for Windows 95
- 'Mozilla/2.02 (OS/2; U)' Netscape Version 2 for OS/2
- 'Mozilla/4.04 [en] (X11; U; AIX 4.2; Nav)' NS for AIX
- 'Mozilla/4.05 [en] (X11; U; Linux 2.0.32 i586)' NS for Linux
-
- Note that Internet Explorer tries hard to be compatible in every way:
- 'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)' MSIE for W95
-
- Mozilla is not the only possible User-Agent name:
- 'Konqueror/1.0' KDE File Manager desktop client
- 'Lynx/2.7.1 libwww-FM/2.14' Lynx command line browser
-
-COOKIES
-
- Cookies are generally used by web servers to keep state information at the
- client's side. The server sets cookies by sending a response line in the
- headers that looks like 'Set-Cookie: <data>' where the data part then
- typically contains a set of NAME=VALUE pairs (separated by semicolons ';'
- like "NAME1=VALUE1; NAME2=VALUE2;"). The server can also specify for what
- path the "cookie" should be used for (by specifying "path=value"), when the
- cookie should expire ("expire=DATE"), for what domain to use it
- ("domain=NAME") and if it should be used on secure connections only
- ("secure").
-
- If you've received a page from a server that contains a header like:
- Set-Cookie: sessionid=boo123; path="/foo";
-
- it means the server wants that first pair passed on when we get anything in
- a path beginning with "/foo".
-
- Example, get a page that wants my name passed in a cookie:
-
- curl -b "name=Daniel" www.sillypage.com
-
- Curl also has the ability to use previously received cookies in following
- sessions. If you get cookies from a server and store them in a file in a
- manner similar to:
-
- curl --dump-header headers www.example.com
-
- ... you can then in a second connect to that (or another) site, use the
- cookies from the 'headers' file like:
-
- curl -b headers www.example.com
-
- While saving headers to a file is a working way to store cookies, it is
- however error-prone and not the preferred way to do this. Instead, make curl
- save the incoming cookies using the well-known netscape cookie format like
- this:
-
- curl -c cookies.txt www.example.com
-
- Note that by specifying -b you enable the "cookie awareness" and with -L
- you can make curl follow a location: (which often is used in combination
- with cookies). So that if a site sends cookies and a location, you can
- use a non-existing file to trigger the cookie awareness like:
-
- curl -L -b empty.txt www.example.com
-
- The file to read cookies from must be formatted using plain HTTP headers OR
- as netscape's cookie file. Curl will determine what kind it is based on the
- file contents. In the above command, curl will parse the header and store
- the cookies received from www.example.com. curl will send to the server the
- stored cookies which match the request as it follows the location. The
- file "empty.txt" may be a nonexistent file.
-
- To read and write cookies from a netscape cookie file, you can set both -b
- and -c to use the same file:
-
- curl -b cookies.txt -c cookies.txt www.example.com
-
-PROGRESS METER
-
- The progress meter exists to show a user that something actually is
- happening. The different fields in the output have the following meaning:
-
- % Total % Received % Xferd Average Speed Time Curr.
- Dload Upload Total Current Left Speed
- 0 151M 0 38608 0 0 9406 0 4:41:43 0:00:04 4:41:39 9287
-
- From left-to-right:
- % - percentage completed of the whole transfer
- Total - total size of the whole expected transfer
- % - percentage completed of the download
- Received - currently downloaded amount of bytes
- % - percentage completed of the upload
- Xferd - currently uploaded amount of bytes
- Average Speed
- Dload - the average transfer speed of the download
- Average Speed
- Upload - the average transfer speed of the upload
- Time Total - expected time to complete the operation
- Time Current - time passed since the invoke
- Time Left - expected time left to completion
- Curr.Speed - the average transfer speed the last 5 seconds (the first
- 5 seconds of a transfer is based on less time of course.)
-
- The -# option will display a totally different progress bar that doesn't
- need much explanation!
-
-SPEED LIMIT
-
- Curl allows the user to set the transfer speed conditions that must be met
- to let the transfer keep going. By using the switch -y and -Y you
- can make curl abort transfers if the transfer speed is below the specified
- lowest limit for a specified time.
-
- To have curl abort the download if the speed is slower than 3000 bytes per
- second for 1 minute, run:
-
- curl -Y 3000 -y 60 www.far-away-site.com
-
- This can very well be used in combination with the overall time limit, so
- that the above operation must be completed in whole within 30 minutes:
-
- curl -m 1800 -Y 3000 -y 60 www.far-away-site.com
-
- Forcing curl not to transfer data faster than a given rate is also possible,
- which might be useful if you're using a limited bandwidth connection and you
- don't want your transfer to use all of it (sometimes referred to as
- "bandwidth throttle").
-
- Make curl transfer data no faster than 10 kilobytes per second:
-
- curl --limit-rate 10K www.far-away-site.com
-
- or
-
- curl --limit-rate 10240 www.far-away-site.com
-
- Or prevent curl from uploading data faster than 1 megabyte per second:
-
- curl -T upload --limit-rate 1M ftp://uploadshereplease.com
-
- When using the --limit-rate option, the transfer rate is regulated on a
- per-second basis, which will cause the total transfer speed to become lower
- than the given number. Sometimes of course substantially lower, if your
- transfer stalls during periods.
-
-CONFIG FILE
-
- Curl automatically tries to read the .curlrc file (or _curlrc file on win32
- systems) from the user's home dir on startup.
-
- The config file could be made up with normal command line switches, but you
- can also specify the long options without the dashes to make it more
- readable. You can separate the options and the parameter with spaces, or
- with = or :. Comments can be used within the file. If the first letter on a
- line is a '#'-symbol the rest of the line is treated as a comment.
-
- If you want the parameter to contain spaces, you must enclose the entire
- parameter within double quotes ("). Within those quotes, you specify a
- quote as \".
-
- NOTE: You must specify options and their arguments on the same line.
-
- Example, set default time out and proxy in a config file:
-
- # We want a 30 minute timeout:
- -m 1800
- # ... and we use a proxy for all accesses:
- proxy = proxy.our.domain.com:8080
-
- White spaces ARE significant at the end of lines, but all white spaces
- leading up to the first characters of each line are ignored.
-
- Prevent curl from reading the default file by using -q as the first command
- line parameter, like:
-
- curl -q www.thatsite.com
-
- Force curl to get and display a local help page in case it is invoked
- without URL by making a config file similar to:
-
- # default url to get
- url = "http://help.with.curl.com/curlhelp.html"
-
- You can specify another config file to be read by using the -K/--config
- flag. If you set config file name to "-" it'll read the config from stdin,
- which can be handy if you want to hide options from being visible in process
- tables etc:
-
- echo "user = user:passwd" | curl -K - http://that.secret.site.com
-
-EXTRA HEADERS
-
- When using curl in your own very special programs, you may end up needing
- to pass on your own custom headers when getting a web page. You can do
- this by using the -H flag.
-
- Example, send the header "X-you-and-me: yes" to the server when getting a
- page:
-
- curl -H "X-you-and-me: yes" www.love.com
-
- This can also be useful in case you want curl to send a different text in a
- header than it normally does. The -H header you specify then replaces the
- header curl would normally send. If you replace an internal header with an
- empty one, you prevent that header from being sent. To prevent the Host:
- header from being used:
-
- curl -H "Host:" www.server.com
-
-FTP and PATH NAMES
-
- Do note that when getting files with the ftp:// URL, the given path is
- relative the directory you enter. To get the file 'README' from your home
- directory at your ftp site, do:
-
- curl ftp://user:passwd@my.site.com/README
-
- But if you want the README file from the root directory of that very same
- site, you need to specify the absolute file name:
-
- curl ftp://user:passwd@my.site.com//README
-
- (I.e with an extra slash in front of the file name.)
-
-SFTP and SCP and PATH NAMES
-
- With sftp: and scp: URLs, the path name given is the absolute name on the
- server. To access a file relative to the remote user's home directory,
- prefix the file with /~/ , such as:
-
- curl -u $USER sftp://home.example.com/~/.bashrc
-
-FTP and firewalls
-
- The FTP protocol requires one of the involved parties to open a second
- connection as soon as data is about to get transferred. There are two ways to
- do this.
-
- The default way for curl is to issue the PASV command which causes the
- server to open another port and await another connection performed by the
- client. This is good if the client is behind a firewall that doesn't allow
- incoming connections.
-
- curl ftp.download.com
-
- If the server, for example, is behind a firewall that doesn't allow connections
- on ports other than 21 (or if it just doesn't support the PASV command), the
- other way to do it is to use the PORT command and instruct the server to
- connect to the client on the given IP number and port (as parameters to the
- PORT command).
-
- The -P flag to curl supports a few different options. Your machine may have
- several IP-addresses and/or network interfaces and curl allows you to select
- which of them to use. Default address can also be used:
-
- curl -P - ftp.download.com
-
- Download with PORT but use the IP address of our 'le0' interface (this does
- not work on windows):
-
- curl -P le0 ftp.download.com
-
- Download with PORT but use 192.168.0.10 as our IP address to use:
-
- curl -P 192.168.0.10 ftp.download.com
-
-NETWORK INTERFACE
-
- Get a web page from a server using a specified port for the interface:
-
- curl --interface eth0:1 http://www.netscape.com/
-
- or
-
- curl --interface 192.168.1.10 http://www.netscape.com/
-
-HTTPS
-
- Secure HTTP requires SSL libraries to be installed and used when curl is
- built. If that is done, curl is capable of retrieving and posting documents
- using the HTTPS protocol.
-
- Example:
-
- curl https://www.secure-site.com
-
- Curl is also capable of using your personal certificates to get/post files
- from sites that require valid certificates. The only drawback is that the
- certificate needs to be in PEM-format. PEM is a standard and open format to
- store certificates with, but it is not used by the most commonly used
- browsers (Netscape and MSIE both use the so called PKCS#12 format). If you
- want curl to use the certificates you use with your (favourite) browser, you
- may need to download/compile a converter that can convert your browser's
- formatted certificates to PEM formatted ones. This kind of converter is
- included in recent versions of OpenSSL, and for older versions Dr Stephen
- N. Henson has written a patch for SSLeay that adds this functionality. You
- can get his patch (that requires an SSLeay installation) from his site at:
- https://web.archive.org/web/20170715155512/www.drh-consultancy.demon.co.uk/
-
- Example on how to automatically retrieve a document using a certificate with
- a personal password:
-
- curl -E /path/to/cert.pem:password https://secure.site.com/
-
- If you neglect to specify the password on the command line, you will be
- prompted for the correct password before any data can be received.
-
- Many older SSL-servers have problems with SSLv3 or TLS, which newer versions
- of OpenSSL etc use, therefore it is sometimes useful to specify what
- SSL-version curl should use. Use -3, -2 or -1 to specify that exact SSL
- version to use (for SSLv3, SSLv2 or TLSv1 respectively):
-
- curl -2 https://secure.site.com/
-
- Otherwise, curl will first attempt to use v3 and then v2.
-
- To use OpenSSL to convert your favourite browser's certificate into a PEM
- formatted one that curl can use, do something like this:
-
- In Netscape, you start with hitting the 'Security' menu button.
-
- Select 'certificates->yours' and then pick a certificate in the list
-
- Press the 'Export' button
-
- enter your PIN code for the certs
-
- select a proper place to save it
-
- Run the 'openssl' application to convert the certificate. If you cd to the
- openssl installation, you can do it like:
-
- # ./apps/openssl pkcs12 -in [file you saved] -clcerts -out [PEMfile]
-
- In Firefox, select Options, then Advanced, then the Encryption tab,
- View Certificates. This opens the Certificate Manager, where you can
- Export. Be sure to select PEM for the Save as type.
-
- In Internet Explorer, select Internet Options, then the Content tab, then
- Certificates. Then you can Export, and depending on the format you may
- need to convert to PEM.
-
- In Chrome, select Settings, then Show Advanced Settings. Under HTTPS/SSL
- select Manage Certificates.
-
-RESUMING FILE TRANSFERS
-
- To continue a file transfer where it was previously aborted, curl supports
- resume on HTTP(S) downloads as well as FTP uploads and downloads.
-
- Continue downloading a document:
-
- curl -C - -o file ftp://ftp.server.com/path/file
-
- Continue uploading a document(*1):
-
- curl -C - -T file ftp://ftp.server.com/path/file
-
- Continue downloading a document from a web server(*2):
-
- curl -C - -o file http://www.server.com/
-
- (*1) = This requires that the FTP server supports the non-standard command
- SIZE. If it doesn't, curl will say so.
-
- (*2) = This requires that the web server supports at least HTTP/1.1. If it
- doesn't, curl will say so.
-
-TIME CONDITIONS
-
- HTTP allows a client to specify a time condition for the document it
- requests. It is If-Modified-Since or If-Unmodified-Since. Curl allows you to
- specify them with the -z/--time-cond flag.
-
- For example, you can easily make a download that only gets performed if the
- remote file is newer than a local copy. It would be made like:
-
- curl -z local.html http://remote.server.com/remote.html
-
- Or you can download a file only if the local file is newer than the remote
- one. Do this by prepending the date string with a '-', as in:
-
- curl -z -local.html http://remote.server.com/remote.html
-
- You can specify a "free text" date as condition. Tell curl to only download
- the file if it was updated since January 12, 2012:
-
- curl -z "Jan 12 2012" http://remote.server.com/remote.html
-
- Curl will then accept a wide range of date formats. You always make the date
- check the other way around by prepending it with a dash '-'.
-
-DICT
-
- For fun try
-
- curl dict://dict.org/m:curl
- curl dict://dict.org/d:heisenbug:jargon
- curl dict://dict.org/d:daniel:web1913
-
- Aliases for 'm' are 'match' and 'find', and aliases for 'd' are 'define'
- and 'lookup'. For example,
-
- curl dict://dict.org/find:curl
-
- Commands that break the URL description of the RFC (but not the DICT
- protocol) are
-
- curl dict://dict.org/show:db
- curl dict://dict.org/show:strat
-
- Authentication is still missing (but this is not required by the RFC)
-
-LDAP
-
- If you have installed the OpenLDAP library, curl can take advantage of it
- and offer ldap:// support.
- On Windows, curl will use WinLDAP from Platform SDK by default.
-
- Default protocol version used by curl is LDAPv3. LDAPv2 will be used as
- fallback mechanism in case if LDAPv3 will fail to connect.
-
- LDAP is a complex thing and writing an LDAP query is not an easy task. I do
- advise you to dig up the syntax description for that elsewhere. One such
- place might be:
-
- RFC 2255, "The LDAP URL Format" https://curl.haxx.se/rfc/rfc2255.txt
-
- To show you an example, this is how I can get all people from my local LDAP
- server that has a certain sub-domain in their email address:
-
- curl -B "ldap://ldap.frontec.se/o=frontec??sub?mail=*sth.frontec.se"
-
- If I want the same info in HTML format, I can get it by not using the -B
- (enforce ASCII) flag.
-
- You also can use authentication when accessing LDAP catalog:
-
- curl -u user:passwd "ldap://ldap.frontec.se/o=frontec??sub?mail=*"
- curl "ldap://user:passwd@ldap.frontec.se/o=frontec??sub?mail=*"
-
- By default, if user and password provided, OpenLDAP/WinLDAP will use basic
- authentication. On Windows you can control this behavior by providing
- one of --basic, --ntlm or --digest option in curl command line
-
- curl --ntlm "ldap://user:passwd@ldap.frontec.se/o=frontec??sub?mail=*"
-
- On Windows, if no user/password specified, auto-negotiation mechanism will
- be used with current logon credentials (SSPI/SPNEGO).
-
-ENVIRONMENT VARIABLES
-
- Curl reads and understands the following environment variables:
-
- http_proxy, HTTPS_PROXY, FTP_PROXY
-
- They should be set for protocol-specific proxies. General proxy should be
- set with
-
- ALL_PROXY
-
- A comma-separated list of host names that shouldn't go through any proxy is
- set in (only an asterisk, '*' matches all hosts)
-
- NO_PROXY
-
- If the host name matches one of these strings, or the host is within the
- domain of one of these strings, transactions with that node will not be
- proxied. When a domain is used, it needs to start with a period. A user can
- specify that both www.example.com and foo.example.com should not use a
- proxy by setting NO_PROXY to ".example.com". By including the full name you
- can exclude specific host names, so to make www.example.com not use a proxy
- but still have foo.example.com do it, set NO_PROXY to "www.example.com"
-
- The usage of the -x/--proxy flag overrides the environment variables.
-
-NETRC
-
- Unix introduced the .netrc concept a long time ago. It is a way for a user
- to specify name and password for commonly visited FTP sites in a file so
- that you don't have to type them in each time you visit those sites. You
- realize this is a big security risk if someone else gets hold of your
- passwords, so therefore most unix programs won't read this file unless it is
- only readable by yourself (curl doesn't care though).
-
- Curl supports .netrc files if told to (using the -n/--netrc and
- --netrc-optional options). This is not restricted to just FTP,
- so curl can use it for all protocols where authentication is used.
-
- A very simple .netrc file could look something like:
-
- machine curl.haxx.se login iamdaniel password mysecret
-
-CUSTOM OUTPUT
-
- To better allow script programmers to get to know about the progress of
- curl, the -w/--write-out option was introduced. Using this, you can specify
- what information from the previous transfer you want to extract.
-
- To display the amount of bytes downloaded together with some text and an
- ending newline:
-
- curl -w 'We downloaded %{size_download} bytes\n' www.download.com
-
-KERBEROS FTP TRANSFER
-
- Curl supports kerberos4 and kerberos5/GSSAPI for FTP transfers. You need
- the kerberos package installed and used at curl build time for it to be
- available.
-
- First, get the krb-ticket the normal way, like with the kinit/kauth tool.
- Then use curl in way similar to:
-
- curl --krb private ftp://krb4site.com -u username:fakepwd
-
- There's no use for a password on the -u switch, but a blank one will make
- curl ask for one and you already entered the real password to kinit/kauth.
-
-TELNET
-
- The curl telnet support is basic and very easy to use. Curl passes all data
- passed to it on stdin to the remote server. Connect to a remote telnet
- server using a command line similar to:
-
- curl telnet://remote.server.com
-
- And enter the data to pass to the server on stdin. The result will be sent
- to stdout or to the file you specify with -o.
-
- You might want the -N/--no-buffer option to switch off the buffered output
- for slow connections or similar.
-
- Pass options to the telnet protocol negotiation, by using the -t option. To
- tell the server we use a vt100 terminal, try something like:
-
- curl -tTTYPE=vt100 telnet://remote.server.com
-
- Other interesting options for it -t include:
-
- - XDISPLOC=<X display> Sets the X display location.
-
- - NEW_ENV=<var,val> Sets an environment variable.
-
- NOTE: The telnet protocol does not specify any way to login with a specified
- user and password so curl can't do that automatically. To do that, you need
- to track when the login prompt is received and send the username and
- password accordingly.
-
-PERSISTENT CONNECTIONS
-
- Specifying multiple files on a single command line will make curl transfer
- all of them, one after the other in the specified order.
-
- libcurl will attempt to use persistent connections for the transfers so that
- the second transfer to the same host can use the same connection that was
- already initiated and was left open in the previous transfer. This greatly
- decreases connection time for all but the first transfer and it makes a far
- better use of the network.
-
- Note that curl cannot use persistent connections for transfers that are used
- in subsequence curl invokes. Try to stuff as many URLs as possible on the
- same command line if they are using the same host, as that'll make the
- transfers faster. If you use an HTTP proxy for file transfers, practically
- all transfers will be persistent.
-
-MULTIPLE TRANSFERS WITH A SINGLE COMMAND LINE
-
- As is mentioned above, you can download multiple files with one command line
- by simply adding more URLs. If you want those to get saved to a local file
- instead of just printed to stdout, you need to add one save option for each
- URL you specify. Note that this also goes for the -O option (but not
- --remote-name-all).
-
- For example: get two files and use -O for the first and a custom file
- name for the second:
-
- curl -O http://url.com/file.txt ftp://ftp.com/moo.exe -o moo.jpg
-
- You can also upload multiple files in a similar fashion:
-
- curl -T local1 ftp://ftp.com/moo.exe -T local2 ftp://ftp.com/moo2.txt
-
-IPv6
-
- curl will connect to a server with IPv6 when a host lookup returns an IPv6
- address and fall back to IPv4 if the connection fails. The --ipv4 and --ipv6
- options can specify which address to use when both are available. IPv6
- addresses can also be specified directly in URLs using the syntax:
-
- http://[2001:1890:1112:1::20]/overview.html
-
- When this style is used, the -g option must be given to stop curl from
- interpreting the square brackets as special globbing characters. Link local
- and site local addresses including a scope identifier, such as fe80::1234%1,
- may also be used, but the scope portion must be numeric or match an existing
- network interface on Linux and the percent character must be URL escaped. The
- previous example in an SFTP URL might look like:
-
- sftp://[fe80::1234%251]/
-
- IPv6 addresses provided other than in URLs (e.g. to the --proxy, --interface
- or --ftp-port options) should not be URL encoded.
-
-METALINK
-
- Curl supports Metalink (both version 3 and 4 (RFC 5854) are supported), a way
- to list multiple URIs and hashes for a file. Curl will make use of the mirrors
- listed within for failover if there are errors (such as the file or server not
- being available). It will also verify the hash of the file after the download
- completes. The Metalink file itself is downloaded and processed in memory and
- not stored in the local file system.
-
- Example to use a remote Metalink file:
-
- curl --metalink http://www.example.com/example.metalink
-
- To use a Metalink file in the local file system, use FILE protocol (file://):
-
- curl --metalink file://example.metalink
-
- Please note that if FILE protocol is disabled, there is no way to use a local
- Metalink file at the time of this writing. Also note that if --metalink and
- --include are used together, --include will be ignored. This is because including
- headers in the response will break Metalink parser and if the headers are included
- in the file described in Metalink file, hash check will fail.
-
-MAILING LISTS
-
- For your convenience, we have several open mailing lists to discuss curl,
- its development and things relevant to this. Get all info at
- https://curl.haxx.se/mail/. Some of the lists available are:
-
- curl-users
-
- Users of the command line tool. How to use it, what doesn't work, new
- features, related tools, questions, news, installations, compilations,
- running, porting etc.
-
- curl-library
-
- Developers using or developing libcurl. Bugs, extensions, improvements.
-
- curl-announce
-
- Low-traffic. Only receives announcements of new public versions. At worst,
- that makes something like one or two mails per month, but usually only one
- mail every second month.
-
- curl-and-php
-
- Using the curl functions in PHP. Everything curl with a PHP angle. Or PHP
- with a curl angle.
-
- curl-and-python
-
- Python hackers using curl with or without the python binding pycurl.
-
- Please direct curl questions, feature requests and trouble reports to one of
- these mailing lists instead of mailing any individual.
diff --git a/docs/Makefile.am b/docs/Makefile.am
index dadf64f3..8eeabd47 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -42,6 +42,7 @@ CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES) $(MANDISTPAGES) curl.1
EXTRA_DIST = \
$(noinst_man_MANS) \
+ ALTSVC.md \
BINDINGS.md \
BUGS \
CHECKSRC.md \
@@ -65,7 +66,6 @@ EXTRA_DIST = \
KNOWN_BUGS \
LICENSE-MIXING.md \
MAIL-ETIQUETTE \
- MANUAL \
README.cmake \
README.md \
README.netware \
diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md
index 497c45b5..10e7effe 100644
--- a/docs/ROADMAP.md
+++ b/docs/ROADMAP.md
@@ -5,35 +5,55 @@ Roadmap of things Daniel Stenberg wants to work on next. It is intended to
serve as a guideline for others for information, feedback and possible
participation.
-QUIC
+HTTP/3
+------
+
+ See the [QUIC and HTTP/3 wiki page](https://github.com/curl/curl/wiki/QUIC).
+
+ESNI (Encrypted SNI)
+--------------------
+
+ See Daniel's post on [Support of Encrypted
+ SNI](https://curl.haxx.se/mail/lib-2019-03/0000.html) on the mailing list.
+
+HSTS
----
- See the [QUIC wiki page](https://github.com/curl/curl/wiki/QUIC).
+Complete and merge [the existing PR](https://github.com/curl/curl/pull/2682).
+
+Parallel transfers for the curl tool
+------------------------------------
+
+This will require several new command line options to enable and control.
-HTTP cookies
-------------
+ 1. switch to creating a list of all the transfers first before any transfer
+ is done
+ 2. make the transfers using the multi interface
+ 3. optionally fire up more transfers before the previous has completed
-On top of what we already support, the prefix cookie draft has been adopted by
-the httpwg in IETF and we should support it as the popular browsers will:
+Option to refuse HTTPS => HTTP redirects
+----------------------------------------
-[Cookie Prefixes](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-prefixes-00)
+Possibly as a new bit to `CURLOPT_FOLLOWLOCATION` ?
-[Firefox bug report about secure cookies](https://bugzilla.mozilla.org/show_bug.cgi?id=976073)
+Option to let CURLOPT_CUSTOMREQUEST be overridden on redirect
+-------------------------------------------------------------
-SRV records
------------
+(This is a common problem for people using `-X` and `-L` together.)
-How to find services for specific domains/hosts.
+Possibly as a new bit to `CURLOPT_FOLLOWLOCATION` ?
-Improve
--------
+Hardcode “localhostâ€
+--------------------
-1. curl -h output (considered overwhelming to users).
+No need to resolve it. Avoid a risk where this is resolved over the network
+and actually responds with something else than a local address. Some operating
+systems already do this. Also:
+https://tools.ietf.org/html/draft-ietf-dnsop-let-localhost-be-localhost-02
-2. We have > 200 command line options, is there a way to redo things to
- simplify or improve the situation as we are likely to keep adding
- features/options in the future too.
+Consider "menu config"-style build feature selection
+----------------------------------------------------
-3. Perform some of the clean up from the TODO document, removing old
- definitions and such like that are currently earmarked to be removed years
- ago.
+Allow easier building of custom libcurl versions with only a selected feature
+where the available features are easily browsable and toggle-able ON/OFF or
+similar.
diff --git a/docs/THANKS b/docs/THANKS
index 58a8322b..bf6ad755 100644
--- a/docs/THANKS
+++ b/docs/THANKS
@@ -152,6 +152,7 @@ Arkadiusz Miskiewicz
Armel Asselin
Arnaud Compan
Arnaud Ebalard
+Arnaud Rebillout
Aron Bergman
Artak Galoyan
Arthur Murray
@@ -193,6 +194,7 @@ Benoit Neil
Benoit Sigoure
Bernard Leak
Bernard Spil
+Bernd Mueller
Bernhard Iselborn
Bernhard M. Wiedemann
Bernhard Reutner-Fischer
@@ -358,6 +360,7 @@ Daniel Johnson
Daniel Kahn Gillmor
Daniel Krügler
Daniel Lee Hwang
+Daniel Lublin
Daniel Melani
Daniel Mentz
Daniel Romero
@@ -508,6 +511,7 @@ Enrico Scholz
Enrik Berkhan
Eramoto Masaya
Eric Cooper
+Eric Curtin
Eric Gallager
Eric Hu
Eric Landes
@@ -726,6 +730,7 @@ Jaime Fullaondo
Jakub Wilk
Jakub Zakrzewski
James Atwill
+James Brown
James Bursa
James Cheng
James Clancy
@@ -1040,6 +1045,7 @@ Luz Paz
Luật Nguyễn
Lyman Epp
Lyndon Hill
+MAntoniak on github
Maciej Karpiuk
Maciej Puzio
Maciej W. Rozycki
@@ -1060,6 +1066,7 @@ Marc Hesse
Marc Hörsken
Marc Kleine-Budde
Marc Renault
+Marc Schlatter
Marc-Antoine Perennou
Marcel Raad
Marcel Roelofs
@@ -1126,6 +1133,7 @@ Mats Lidell
Matt Arsenault
Matt Ford
Matt Kraai
+Matt McClure
Matt Veenstra
Matt Witherspoon
Matt Wixson
@@ -1176,6 +1184,7 @@ Michael Maltese
Michael Mealling
Michael Mueller
Michael Osipov
+Michael Schmid
Michael Smith
Michael Stapelberg
Michael Steuer
@@ -1184,6 +1193,7 @@ Michael Wallner
Michal Bonino
Michal Marek
Michal Trybus
+Michał Antoniak
Michał Fita
Michał Górny
Michał Janiszewski
@@ -1250,6 +1260,7 @@ Nico Baggus
Nicolas Berloquin
Nicolas Croiset
Nicolas François
+Nicolas Grekas
Nicolas Morey-Chaisemartin
Niels van Tongeren
Nikita Schmidt
@@ -1312,6 +1323,7 @@ Patrick Watson
Patrik Thunstrom
Pau Garcia i Quiles
Paul Donohue
+Paul Groke
Paul Harrington
Paul Harris
Paul Howarth
@@ -1325,6 +1337,7 @@ Paul Querna
Paul Saab
Pavel Cenek
Pavel Gushchin
+Pavel Löbl
Pavel Orehov
Pavel Pavlov
Pavel Raiskup
@@ -1426,6 +1439,7 @@ Remco van Hooff
Remi Gacogne
Remo E
Renato Botelho
+Renaud Allard
Renaud Chaillat
Renaud Duhaut
Renaud Guillard
@@ -1499,6 +1513,7 @@ Roland Zimmermann
Rolland Dudemaine
Romain Coltel
Romain Fliedel
+Romain Geissler
Roman Koifman
Roman Mamedov
Romulo A. Ceccon
@@ -1588,6 +1603,7 @@ Siegfried Gyuricsko
Simon Dick
Simon H.
Simon Josefsson
+Simon Legner
Simon Liu
Simon Warta
Somnath Kundu
@@ -1783,6 +1799,7 @@ Vladimir Lazarenko
Vojtech Janota
Vojtech Minarik
Vojtěch Král
+Volker Schmid
Vsevolod Novikov
W. Mark Kubacki
Waldek Kozba
@@ -1837,6 +1854,7 @@ Zhibiao Wu
Zhouyihai Ding
Zmey Petroff
Zvi Har'El
+accountantM on github
adnn on github
afrind on github
ahodesuka on github
@@ -1846,9 +1864,11 @@ asavah on github
baumanj on github
bobmitchell1956 on github
bsammon on github
+buzo-ffm on github
cbartl on github
clbr on github
cmfrolick on github
+d912e3 on github
daboul on github
dasimx on github
destman on github
@@ -1866,6 +1886,7 @@ infinnovation-dev on github
iz8mbw on github
jakirkham on github
jasal82 on github
+jnbr on github
jonrumsey on github
joshhe on github
jungle-boogie on github
@@ -1880,8 +1901,10 @@ masbug on github
mccormickt12 on github
mkzero on github
moohoorama on github
+nedres on github
neex on github
neheb on github
+nianxuejie on github
nk
nopjmp on github
olesteban on github
@@ -1895,10 +1918,12 @@ steini2000 on github
stootill on github
swalkaus at yahoo.com
tarek112 on github
+tholin on github
tommink[at]post.pl
tonystz on Github
tpaukrt on github
vanillajonathan on github
+wesinator on github
wmsch on github
wncboy on github
youngchopin on github
diff --git a/docs/TODO b/docs/TODO
index 323bbb77..40bc726f 100644
--- a/docs/TODO
+++ b/docs/TODO
@@ -17,6 +17,7 @@
All bugs documented in the KNOWN_BUGS document are subject for fixing!
1. libcurl
+ 1.1 TFO support on Windows
1.2 More data sharing
1.3 struct lifreq
1.4 signal-based resolver timeouts
@@ -44,6 +45,8 @@
1.26 CURL_REFUSE_CLEARTEXT
1.27 hardcode the "localhost" addresses
1.28 FD_CLOEXEC
+ 1.29 Upgrade to websockets
+ 1.30 config file parsing
2. libcurl - multi interface
2.1 More non-blocking
@@ -70,6 +73,7 @@
5.1 Better persistency for HTTP 1.0
5.2 support FF3 sqlite cookie files
5.3 Rearrange request header order
+ 5.4 Allow SAN names in HTTP/2 server push
5.5 auth= in URLs
5.6 Refuse "downgrade" redirects
5.7 QUIC
@@ -164,6 +168,7 @@
19. Build
19.1 roffit
19.2 Enable PIE and RELRO by default
+ 19.3 cmake test suite improvements
20. Test suite
20.1 SSL tunnel
@@ -192,6 +197,13 @@
1. libcurl
+1.1 TFO support on Windows
+
+ TCP Fast Open is supported on several platforms but not on Windows. Work on
+ this was once started but never finished.
+
+ See https://github.com/curl/curl/pull/3378
+
1.2 More data sharing
curl_share_* functions already exist and work, and they can be extended to
@@ -440,6 +452,22 @@
https://github.com/curl/curl/issues/2252
+1.29 Upgrade to websockets
+
+ libcurl could offer a smoother path to get to a websocket connection.
+ See https://github.com/curl/curl/issues/3523
+
+ Michael Kaufmann suggestion here:
+ https://curl.haxx.se/video/curlup-2017/2017-03-19_05_Michael_Kaufmann_Websocket_support_for_curl.mp4
+
+1.30 config file parsing
+
+ Consider providing an API, possibly in a separate companion library, for
+ parsing a config file like curl's -K/--config option to allow applications to
+ get the same ability to read curl options from files.
+
+ See https://github.com/curl/curl/issues/3698
+
2. libcurl - multi interface
2.1 More non-blocking
@@ -577,6 +605,15 @@
headers use a default value so only headers that need to be moved have to be
specified.
+5.4 Allow SAN names in HTTP/2 server push
+
+ curl only allows HTTP/2 push promise if the provided :autority header value
+ exactly matches the host name given in the URL. It could be extended to allow
+ any name that would match the Subject Alternative Names in the server's TLS
+ certificate.
+
+ See https://github.com/curl/curl/pull/3581
+
5.5 auth= in URLs
Add the ability to specify the preferred authentication mechanism to use by
@@ -1144,6 +1181,13 @@ that doesn't exist on the server, just like --ftp-create-dirs.
to no impact, neither on the performance nor on the general functionality of
curl.
+19.3 cmake test suite improvements
+
+ The cmake build doesn't support 'make show' so it doesn't know which tests
+ are in the makefile or not (making appveyor builds do many false warnings
+ about it) nor does it support running the test suite if building out-of-tree.
+
+ See https://github.com/curl/curl/issues/3109
20. Test suite
diff --git a/docs/cmdline-opts/Makefile.inc b/docs/cmdline-opts/Makefile.inc
index b99a142e..7a8af6f9 100644
--- a/docs/cmdline-opts/Makefile.inc
+++ b/docs/cmdline-opts/Makefile.inc
@@ -2,6 +2,7 @@
DPAGES = \
abstract-unix-socket.d \
+ alt-svc.d \
anyauth.d \
append.d basic.d \
cacert.d capath.d \
diff --git a/docs/cmdline-opts/alt-svc.d b/docs/cmdline-opts/alt-svc.d
new file mode 100644
index 00000000..dfe636cf
--- /dev/null
+++ b/docs/cmdline-opts/alt-svc.d
@@ -0,0 +1,17 @@
+Long: alt-svc
+Arg: <file name>
+Protocols: HTTPS
+Help: Enable alt-svc with this cache file
+Added: 7.64.1
+---
+WARNING: this option is experiemental. Do not use in production.
+
+This option enables the alt-svc parser in curl. If the file name points to an
+existing alt-svc cache file, that will be used. After a completed transfer,
+the cache will be saved to the file name again if it has been modified.
+
+Specifiy a "" file name (zero length) to avoid loading/saving and make curl
+just handle the cache in memory.
+
+If this option is used several times, curl will load contents from all the
+files but the the last one will be used for saving.
diff --git a/docs/cmdline-opts/cookie.d b/docs/cmdline-opts/cookie.d
index 3ae69754..1e990697 100644
--- a/docs/cmdline-opts/cookie.d
+++ b/docs/cmdline-opts/cookie.d
@@ -1,6 +1,6 @@
Short: b
Long: cookie
-Arg: <data>
+Arg: <data|filename>
Protocols: HTTP
Help: Send cookies from string/file
---
diff --git a/docs/cmdline-opts/max-redirs.d b/docs/cmdline-opts/max-redirs.d
index 04b824bd..a97860a8 100644
--- a/docs/cmdline-opts/max-redirs.d
+++ b/docs/cmdline-opts/max-redirs.d
@@ -4,8 +4,7 @@ Help: Maximum number of redirects allowed
Protocols: HTTP
---
Set maximum number of redirection-followings allowed. When --location is used,
-is used to prevent curl from following redirections \&"in absurdum". By
-default, the limit is set to 50 redirections. Set this option to -1 to make it
-unlimited.
+is used to prevent curl from following redirections too much. By default, the
+limit is set to 50 redirections. Set this option to -1 to make it unlimited.
If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/proxy-user.d b/docs/cmdline-opts/proxy-user.d
index b1f6f6e0..152466da 100644
--- a/docs/cmdline-opts/proxy-user.d
+++ b/docs/cmdline-opts/proxy-user.d
@@ -9,4 +9,10 @@ If you use a Windows SSPI-enabled curl binary and do either Negotiate or NTLM
authentication then you can tell curl to select the user name and password
from your environment by specifying a single colon with this option: "-U :".
+On systems where it works, curl will hide the given option argument from
+process listings. This is not enough to protect credentials from possibly
+getting seen by other users on the same system as they will still be visible
+for a brief moment before cleared. Such sensitive data should be retrieved
+from a file instead or similar and never used in clear text in a command line.
+
If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/proxytunnel.d b/docs/cmdline-opts/proxytunnel.d
index 42aee2bb..1f587f12 100644
--- a/docs/cmdline-opts/proxytunnel.d
+++ b/docs/cmdline-opts/proxytunnel.d
@@ -3,11 +3,10 @@ Short: p
Help: Operate through an HTTP proxy tunnel (using CONNECT)
See-also: proxy
---
-When an HTTP proxy is used --proxy, this option will cause non-HTTP protocols
-to attempt to tunnel through the proxy instead of merely using it to do
-HTTP-like operations. The tunnel approach is made with the HTTP proxy CONNECT
-request and requires that the proxy allows direct connect to the remote port
-number curl wants to tunnel through to.
+When an HTTP proxy is used --proxy, this option will make curl tunnel through
+the proxy. The tunnel approach is made with the HTTP proxy CONNECT request and
+requires that the proxy allows direct connect to the remote port number curl
+wants to tunnel through to.
To suppress proxy CONNECT response headers when curl is set to output headers
use --suppress-connect-headers.
diff --git a/docs/cmdline-opts/user.d b/docs/cmdline-opts/user.d
index 439def34..7001d28a 100644
--- a/docs/cmdline-opts/user.d
+++ b/docs/cmdline-opts/user.d
@@ -12,6 +12,12 @@ The user name and passwords are split up on the first colon, which makes it
impossible to use a colon in the user name with this option. The password can,
still.
+On systems where it works, curl will hide the given option argument from
+process listings. This is not enough to protect credentials from possibly
+getting seen by other users on the same system as they will still be visible
+for a brief moment before cleared. Such sensitive data should be retrieved
+from a file instead or similar and never used in clear text in a command line.
+
When using Kerberos V5 with a Windows based server you should include the
Windows domain name in the user name, in order for the server to successfully
obtain a Kerberos Ticket. If you don't then the initial authentication
diff --git a/docs/curl-config.1 b/docs/curl-config.1
index 2b8167c6..dd2cf116 100644
--- a/docs/curl-config.1
+++ b/docs/curl-config.1
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH curl-config 1 "November 30, 2017" "Curl 7.64.0" "curl-config manual"
+.TH curl-config 1 "November 30, 2017" "Curl 7.64.1" "curl-config manual"
.SH NAME
curl-config \- Get information about a libcurl installation
diff --git a/docs/curl.1 b/docs/curl.1
index 4f58dad3..2b7a5895 100644
--- a/docs/curl.1
+++ b/docs/curl.1
@@ -22,7 +22,7 @@
.\"
.\" DO NOT EDIT. Generated by the curl project gen.pl man page generator.
.\"
-.TH curl 1 "November 16, 2016" "Curl 7.64.0" "Curl Manual"
+.TH curl 1 "November 16, 2016" "Curl 7.64.1" "Curl Manual"
.SH NAME
curl \- transfer a URL
@@ -146,6 +146,20 @@ Note: netstat shows the path of an abstract socket prefixed with '@', however
the <path> argument should not have this leading character.
Added in 7.53.0.
+.IP "--alt-svc <file name>"
+(HTTPS) WARNING: this option is experiemental. Do not use in production.
+
+This option enables the alt-svc parser in curl. If the file name points to an
+existing alt-svc cache file, that will be used. After a completed transfer,
+the cache will be saved to the file name again if it has been modified.
+
+Specifiy a "" file name (zero length) to avoid loading/saving and make curl
+just handle the cache in memory.
+
+If this option is used several times, curl will load contents from all the
+files but the the last one will be used for saving.
+
+Added in 7.64.1.
.IP "--anyauth"
(HTTP) Tells curl to figure out authentication method by itself, and use the most
secure one the remote site claims to support. This is done by first doing a
@@ -409,7 +423,7 @@ lethal situation.
If this option is used several times, the last specified file name will be
used.
-.IP "-b, --cookie <data>"
+.IP "-b, --cookie <data|filename>"
(HTTP) Pass the data to the HTTP server in the Cookie header. It is supposedly
the data previously received from the server in a "Set-Cookie:" line. The
data should be in the format "NAME1=VALUE1; NAME2=VALUE2".
@@ -1295,9 +1309,8 @@ than this given limit. This concerns both FTP and HTTP transfers.
See also \fI--limit-rate\fP.
.IP "--max-redirs <num>"
(HTTP) Set maximum number of redirection-followings allowed. When \fI-L, --location\fP is used,
-is used to prevent curl from following redirections \&"in absurdum". By
-default, the limit is set to 50 redirections. Set this option to -1 to make it
-unlimited.
+is used to prevent curl from following redirections too much. By default, the
+limit is set to 50 redirections. Set this option to -1 to make it unlimited.
If this option is used several times, the last one will be used.
.IP "-m, --max-time <seconds>"
@@ -1789,6 +1802,12 @@ If you use a Windows SSPI-enabled curl binary and do either Negotiate or NTLM
authentication then you can tell curl to select the user name and password
from your environment by specifying a single colon with this option: "-U :".
+On systems where it works, curl will hide the given option argument from
+process listings. This is not enough to protect credentials from possibly
+getting seen by other users on the same system as they will still be visible
+for a brief moment before cleared. Such sensitive data should be retrieved
+from a file instead or similar and never used in clear text in a command line.
+
If this option is used several times, the last one will be used.
.IP "-x, --proxy [protocol://]host[:port]"
Use the specified proxy.
@@ -1833,11 +1852,10 @@ The only difference between this and the HTTP proxy option \fI-x, --proxy\fP, is
attempts to use CONNECT through the proxy will specify an HTTP 1.0 protocol
instead of the default HTTP 1.1.
.IP "-p, --proxytunnel"
-When an HTTP proxy is used \fI-x, --proxy\fP, this option will cause non-HTTP protocols
-to attempt to tunnel through the proxy instead of merely using it to do
-HTTP-like operations. The tunnel approach is made with the HTTP proxy CONNECT
-request and requires that the proxy allows direct connect to the remote port
-number curl wants to tunnel through to.
+When an HTTP proxy is used \fI-x, --proxy\fP, this option will make curl tunnel through
+the proxy. The tunnel approach is made with the HTTP proxy CONNECT request and
+requires that the proxy allows direct connect to the remote port number curl
+wants to tunnel through to.
To suppress proxy CONNECT response headers when curl is set to output headers
use \fI--suppress-connect-headers\fP.
@@ -2527,6 +2545,12 @@ The user name and passwords are split up on the first colon, which makes it
impossible to use a colon in the user name with this option. The password can,
still.
+On systems where it works, curl will hide the given option argument from
+process listings. This is not enough to protect credentials from possibly
+getting seen by other users on the same system as they will still be visible
+for a brief moment before cleared. Such sensitive data should be retrieved
+from a file instead or similar and never used in clear text in a command line.
+
When using Kerberos V5 with a Windows based server you should include the
Windows domain name in the user name, in order for the server to successfully
obtain a Kerberos Ticket. If you don't then the initial authentication
diff --git a/docs/examples/10-at-a-time.c b/docs/examples/10-at-a-time.c
index 638f425f..b50eaa68 100644
--- a/docs/examples/10-at-a-time.c
+++ b/docs/examples/10-at-a-time.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,10 +20,8 @@
*
***************************************************************************/
/* <DESC>
- * Source code using the multi interface to download many
- * files, with a capped maximum amount of simultaneous transfers.
+ * Download many files in parallel, in the same thread.
* </DESC>
- * Written by Michael Wallner
*/
#include <errno.h>
@@ -32,7 +30,7 @@
#ifndef WIN32
# include <unistd.h>
#endif
-#include <curl/multi.h>
+#include <curl/curl.h>
static const char *urls[] = {
"https://www.microsoft.com",
@@ -84,27 +82,23 @@ static const char *urls[] = {
"https://www.un.org",
};
-#define MAX 10 /* number of simultaneous transfers */
-#define CNT sizeof(urls)/sizeof(char *) /* total number of transfers to do */
+#define MAX_PARALLEL 10 /* number of simultaneous transfers */
+#define NUM_URLS sizeof(urls)/sizeof(char *)
-static size_t cb(char *d, size_t n, size_t l, void *p)
+static size_t write_cb(char *data, size_t n, size_t l, void *userp)
{
/* take care of the data here, ignored in this example */
- (void)d;
- (void)p;
+ (void)data;
+ (void)userp;
return n*l;
}
-static void init(CURLM *cm, int i)
+static void add_transfer(CURLM *cm, int i)
{
CURL *eh = curl_easy_init();
-
- curl_easy_setopt(eh, CURLOPT_WRITEFUNCTION, cb);
- curl_easy_setopt(eh, CURLOPT_HEADER, 0L);
+ curl_easy_setopt(eh, CURLOPT_WRITEFUNCTION, write_cb);
curl_easy_setopt(eh, CURLOPT_URL, urls[i]);
curl_easy_setopt(eh, CURLOPT_PRIVATE, urls[i]);
- curl_easy_setopt(eh, CURLOPT_VERBOSE, 0L);
-
curl_multi_add_handle(cm, eh);
}
@@ -112,64 +106,23 @@ int main(void)
{
CURLM *cm;
CURLMsg *msg;
- long L;
- unsigned int C = 0;
- int M, Q, U = -1;
- fd_set R, W, E;
- struct timeval T;
+ unsigned int transfers = 0;
+ int msgs_left = -1;
+ int still_alive = 1;
curl_global_init(CURL_GLOBAL_ALL);
-
cm = curl_multi_init();
- /* we can optionally limit the total amount of connections this multi handle
- uses */
- curl_multi_setopt(cm, CURLMOPT_MAXCONNECTS, (long)MAX);
+ /* Limit the amount of simultaneous connections curl should allow: */
+ curl_multi_setopt(cm, CURLMOPT_MAXCONNECTS, (long)MAX_PARALLEL);
- for(C = 0; C < MAX; ++C) {
- init(cm, C);
- }
+ for(transfers = 0; transfers < MAX_PARALLEL; transfers++)
+ add_transfer(cm, transfers);
- while(U) {
- curl_multi_perform(cm, &U);
+ do {
+ curl_multi_perform(cm, &still_alive);
- if(U) {
- FD_ZERO(&R);
- FD_ZERO(&W);
- FD_ZERO(&E);
-
- if(curl_multi_fdset(cm, &R, &W, &E, &M)) {
- fprintf(stderr, "E: curl_multi_fdset\n");
- return EXIT_FAILURE;
- }
-
- if(curl_multi_timeout(cm, &L)) {
- fprintf(stderr, "E: curl_multi_timeout\n");
- return EXIT_FAILURE;
- }
- if(L == -1)
- L = 100;
-
- if(M == -1) {
-#ifdef WIN32
- Sleep(L);
-#else
- sleep((unsigned int)L / 1000);
-#endif
- }
- else {
- T.tv_sec = L/1000;
- T.tv_usec = (L%1000)*1000;
-
- if(0 > select(M + 1, &R, &W, &E, &T)) {
- fprintf(stderr, "E: select(%i,,,,%li): %i: %s\n",
- M + 1, L, errno, strerror(errno));
- return EXIT_FAILURE;
- }
- }
- }
-
- while((msg = curl_multi_info_read(cm, &Q))) {
+ while((msg = curl_multi_info_read(cm, &msgs_left))) {
if(msg->msg == CURLMSG_DONE) {
char *url;
CURL *e = msg->easy_handle;
@@ -182,13 +135,13 @@ int main(void)
else {
fprintf(stderr, "E: CURLMsg (%d)\n", msg->msg);
}
- if(C < CNT) {
- init(cm, C++);
- U++; /* just to prevent it from remaining at 0 if there are more
- URLs to get */
- }
+ if(transfers < NUM_URLS)
+ add_transfer(cm, transfers++);
}
- }
+ if(still_alive)
+ curl_multi_wait(cm, NULL, 0, 1000, NULL);
+
+ } while(still_alive || (transfers < NUM_URLS));
curl_multi_cleanup(cm);
curl_global_cleanup();
diff --git a/docs/examples/Makefile.am b/docs/examples/Makefile.am
index e3845e02..53867cb2 100644
--- a/docs/examples/Makefile.am
+++ b/docs/examples/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -61,5 +61,10 @@ include Makefile.inc
all: $(check_PROGRAMS)
+CHECKSRC = $(CS_$(V))
+CS_0 = @echo " RUN " $@;
+CS_1 =
+CS_ = $(CS_0)
+
checksrc:
- @PERL@ $(top_srcdir)/lib/checksrc.pl -ASNPRINTF $(srcdir)/*.c
+ $(CHECKSRC)(@PERL@ $(top_srcdir)/lib/checksrc.pl -ASNPRINTF $(srcdir)/*.c)
diff --git a/docs/examples/cacertinmem.c b/docs/examples/cacertinmem.c
index 6f4c61cb..9e15eb79 100644
--- a/docs/examples/cacertinmem.c
+++ b/docs/examples/cacertinmem.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -29,7 +29,7 @@
#include <curl/curl.h>
#include <stdio.h>
-size_t writefunction(void *ptr, size_t size, size_t nmemb, void *stream)
+static size_t writefunction(void *ptr, size_t size, size_t nmemb, void *stream)
{
fwrite(ptr, size, nmemb, (FILE *)stream);
return (nmemb*size);
@@ -38,88 +38,86 @@ size_t writefunction(void *ptr, size_t size, size_t nmemb, void *stream)
static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
{
CURLcode rv = CURLE_ABORTED_BY_CALLBACK;
- X509_STORE *store = NULL;
- X509 *cert = NULL;
- BIO *bio = NULL;
- char *mypem =
- /* CA for example.com. CN = DigiCert High Assurance EV Root CA */
+
+ /** This example uses two (fake) certificates **/
+ static const char mypem[] =
+ "-----BEGIN CERTIFICATE-----\n"
+ "MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE\n"
+ "AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw\n"
+ "CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ\n"
+ "BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND\n"
+ "VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb\n"
+ "qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY\n"
+ "HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo\n"
+ "G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA\n"
+ "0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH\n"
+ "k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47\n"
+ "JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m\n"
+ "AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD\n"
+ "vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms\n"
+ "tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH\n"
+ "7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h\n"
+ "I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA\n"
+ "h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF\n"
+ "d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H\n"
+ "pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7\n"
+ "-----END CERTIFICATE-----\n"
"-----BEGIN CERTIFICATE-----\n"
- "MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs\n"
- "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n"
- "d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j\n"
- "ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL\n"
- "MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3\n"
- "LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug\n"
- "RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm\n"
- "+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW\n"
- "PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM\n"
- "xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB\n"
- "Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3\n"
- "hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg\n"
- "EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF\n"
- "MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA\n"
- "FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec\n"
- "nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z\n"
- "eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF\n"
- "hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2\n"
- "Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe\n"
- "vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep\n"
- "+OkuE6N36B9K\n"
+ "MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UE\n"
+ "AwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00x\n"
+ "CzAJBgNVBAYTAkVTMB4XDTA4MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEW\n"
+ "MBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZF\n"
+ "RElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC\n"
+ "AgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHkWLn7\n"
+ "09gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7\n"
+ "XBZXehuDYAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5P\n"
+ "gvoFNTPhNahXwOf9jU8/kzJPeGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKe\n"
+ "I6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1PwkzQSulgUV1qzOMPPKC8W64iLgpq0i\n"
+ "5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1ThCojz2GuHURwCRi\n"
+ "ipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oIKiMn\n"
+ "MCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZ\n"
+ "o5NjEFIqnxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6\n"
+ "zqylfDJKZ0DcMDQj3dcEI2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacN\n"
+ "GHk0vFQYXlPKNFHtRQrmjseCNj6nOGOpMCwXEGCSn1WHElkQwg9naRHMTh5+Spqt\n"
+ "r0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3otkYNbn5XOmeUwssfnHdK\n"
+ "Z05phkOTOPu220+DkdRgfks+KzgHVZhepA==\n"
"-----END CERTIFICATE-----\n";
- /* clear the current thread's OpenSSL error queue */
- ERR_clear_error();
+ BIO *cbio = BIO_new_mem_buf(mypem, sizeof(mypem));
+ X509_STORE *cts = SSL_CTX_get_cert_store((SSL_CTX *)sslctx);
+ X509_INFO *itmp;
+ int i, count = 0;
+ STACK_OF(X509_INFO) *inf;
+ (void)curl;
+ (void)parm;
- /* get a BIO */
- bio = BIO_new_mem_buf(mypem, -1);
- if(!bio)
- goto err;
-
- /* use it to read the PEM formatted certificate from memory into an X509
- * structure that SSL can use
- */
- if(!PEM_read_bio_X509(bio, &cert, 0, NULL))
- goto err;
-
- /* get a pointer to the X509 certificate store (which may be empty!) */
- store = SSL_CTX_get_cert_store((SSL_CTX *)sslctx);
- if(!store)
- goto err;
-
- /* add our certificate to this store */
- if(!X509_STORE_add_cert(store, cert)) {
- unsigned long error = ERR_peek_last_error();
-
- /* Ignore error X509_R_CERT_ALREADY_IN_HASH_TABLE which means the
- * certificate is already in the store. That could happen if
- * libcurl already loaded the certificate from a ca cert bundle
- * set at libcurl build-time or runtime.
- */
- if(ERR_GET_LIB(error) != ERR_LIB_X509 ||
- ERR_GET_REASON(error) != X509_R_CERT_ALREADY_IN_HASH_TABLE)
- goto err;
-
- ERR_clear_error();
+ if(!cts || !cbio) {
+ return rv;
}
- rv = CURLE_OK;
+ inf = PEM_X509_INFO_read_bio(cbio, NULL, NULL, NULL);
-err:
- if(rv != CURLE_OK) {
- char errbuf[256];
- unsigned long error = ERR_peek_last_error();
+ if(!inf) {
+ BIO_free(cbio);
+ return rv;
+ }
- fprintf(stderr, "error adding certificate\n");
- if(error) {
- ERR_error_string_n(error, errbuf, sizeof(errbuf));
- fprintf(stderr, "%s\n", errbuf);
+ for(i = 0; i < sk_X509_INFO_num(inf); i++) {
+ itmp = sk_X509_INFO_value(inf, i);
+ if(itmp->x509) {
+ X509_STORE_add_cert(cts, itmp->x509);
+ count++;
+ }
+ if(itmp->crl) {
+ X509_STORE_add_crl(cts, itmp->crl);
+ count++;
}
}
- X509_free(cert);
- BIO_free(bio);
- ERR_clear_error();
+ sk_X509_INFO_pop_free(inf, X509_INFO_free);
+ BIO_free(cbio);
+ rv = CURLE_OK;
return rv;
}
@@ -142,9 +140,9 @@ int main(void)
rv = curl_easy_setopt(ch, CURLOPT_SSL_VERIFYPEER, 1L);
rv = curl_easy_setopt(ch, CURLOPT_URL, "https://www.example.com/");
- /* turn off the default CA locations (optional)
- * otherwise libcurl will load CA certificates from the locations that
- * were detected/specified at build-time
+ /* Turn off the default CA locations, otherwise libcurl will load CA
+ * certificates from the locations that were detected/specified at
+ * build-time
*/
rv = curl_easy_setopt(ch, CURLOPT_CAINFO, NULL);
rv = curl_easy_setopt(ch, CURLOPT_CAPATH, NULL);
diff --git a/docs/examples/crawler.c b/docs/examples/crawler.c
index d8fa5a45..496d88c9 100644
--- a/docs/examples/crawler.c
+++ b/docs/examples/crawler.c
@@ -81,7 +81,7 @@ CURL *make_handle(char *url)
curl_easy_setopt(handle, CURLOPT_PRIVATE, mem);
/* For completeness */
- curl_easy_setopt(handle, CURLOPT_ENCODING, "gzip, deflate");
+ curl_easy_setopt(handle, CURLOPT_ACCEPT_ENCODING, "");
curl_easy_setopt(handle, CURLOPT_TIMEOUT, 5L);
curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(handle, CURLOPT_MAXREDIRS, 10L);
diff --git a/docs/examples/ephiperfifo.c b/docs/examples/ephiperfifo.c
index efb27b1b..35991de7 100644
--- a/docs/examples/ephiperfifo.c
+++ b/docs/examples/ephiperfifo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -72,7 +72,6 @@ callback.
#include <unistd.h>
#include <curl/curl.h>
-#include <curl/multi.h>
#ifdef __GNUC__
#define _Unused __attribute__((unused))
@@ -153,23 +152,26 @@ static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g)
fprintf(MSG_OUT, "multi_timer_cb: Setting timeout to %ld ms\n", timeout_ms);
- timerfd_settime(g->tfd, /*flags=*/0, &its, NULL);
if(timeout_ms > 0) {
its.it_interval.tv_sec = 1;
its.it_interval.tv_nsec = 0;
its.it_value.tv_sec = timeout_ms / 1000;
- its.it_value.tv_nsec = (timeout_ms % 1000) * 1000;
- timerfd_settime(g->tfd, /*flags=*/0, &its, NULL);
+ its.it_value.tv_nsec = (timeout_ms % 1000) * 1000 * 1000;
}
else if(timeout_ms == 0) {
- rc = curl_multi_socket_action(g->multi,
- CURL_SOCKET_TIMEOUT, 0, &g->still_running);
- mcode_or_die("multi_timer_cb: curl_multi_socket_action", rc);
+ /* libcurl wants us to timeout now, however setting both fields of
+ * new_value.it_value to zero disarms the timer. The closest we can
+ * do is to schedule the timer to fire in 1 ns. */
+ its.it_interval.tv_sec = 1;
+ its.it_interval.tv_nsec = 0;
+ its.it_value.tv_sec = 0;
+ its.it_value.tv_nsec = 1;
}
else {
memset(&its, 0, sizeof(struct itimerspec));
- timerfd_settime(g->tfd, /*flags=*/0, &its, NULL);
}
+
+ timerfd_settime(g->tfd, /*flags=*/0, &its, NULL);
return 0;
}
@@ -206,8 +208,8 @@ static void event_cb(GlobalInfo *g, int fd, int revents)
CURLMcode rc;
struct itimerspec its;
- int action = (revents & EPOLLIN ? CURL_POLL_IN : 0) |
- (revents & EPOLLOUT ? CURL_POLL_OUT : 0);
+ int action = (revents & EPOLLIN ? CURL_CSELECT_IN : 0) |
+ (revents & EPOLLOUT ? CURL_CSELECT_OUT : 0);
rc = curl_multi_socket_action(g->multi, fd, action, &g->still_running);
mcode_or_die("event_cb: curl_multi_socket_action", rc);
diff --git a/docs/examples/evhiperfifo.c b/docs/examples/evhiperfifo.c
index c0c230b2..6474e352 100644
--- a/docs/examples/evhiperfifo.c
+++ b/docs/examples/evhiperfifo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -119,13 +119,12 @@ static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g)
{
DPRINT("%s %li\n", __PRETTY_FUNCTION__, timeout_ms);
ev_timer_stop(g->loop, &g->timer_event);
- if(timeout_ms > 0) {
+ if(timeout_ms >= 0) {
+ /* -1 means delete, other values are timeout times in milliseconds */
double t = timeout_ms / 1000;
ev_timer_init(&g->timer_event, timer_cb, t, 0.);
ev_timer_start(g->loop, &g->timer_event);
}
- else if(timeout_ms == 0)
- timer_cb(g->loop, &g->timer_event, 0);
return 0;
}
diff --git a/docs/examples/externalsocket.c b/docs/examples/externalsocket.c
index 0ac113db..d89b041b 100644
--- a/docs/examples/externalsocket.c
+++ b/docs/examples/externalsocket.c
@@ -124,8 +124,10 @@ int main(void)
servaddr.sin_port = htons(PORTNUM);
servaddr.sin_addr.s_addr = inet_addr(IPADDR);
- if(INADDR_NONE == servaddr.sin_addr.s_addr)
+ if(INADDR_NONE == servaddr.sin_addr.s_addr) {
+ close(sockfd);
return 2;
+ }
if(connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) ==
-1) {
@@ -157,10 +159,16 @@ int main(void)
curl_easy_cleanup(curl);
+ close(sockfd);
+
if(res) {
printf("libcurl error: %d\n", res);
return 4;
}
}
+
+#ifdef WIN32
+ WSACleanup();
+#endif
return 0;
}
diff --git a/docs/examples/ftpget.c b/docs/examples/ftpget.c
index a2a7da0c..fc7ab4a3 100644
--- a/docs/examples/ftpget.c
+++ b/docs/examples/ftpget.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -36,7 +36,7 @@ struct FtpFile {
static size_t my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream)
{
struct FtpFile *out = (struct FtpFile *)stream;
- if(out && !out->stream) {
+ if(!out->stream) {
/* open file for writing */
out->stream = fopen(out->filename, "wb");
if(!out->stream)
diff --git a/docs/examples/ftpsget.c b/docs/examples/ftpsget.c
index fb7489f0..91162e62 100644
--- a/docs/examples/ftpsget.c
+++ b/docs/examples/ftpsget.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2015, 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -38,7 +38,7 @@ static size_t my_fwrite(void *buffer, size_t size, size_t nmemb,
void *stream)
{
struct FtpFile *out = (struct FtpFile *)stream;
- if(out && !out->stream) {
+ if(!out->stream) {
/* open file for writing */
out->stream = fopen(out->filename, "wb");
if(!out->stream)
diff --git a/docs/examples/ghiper.c b/docs/examples/ghiper.c
index fd643fc3..cb013afd 100644
--- a/docs/examples/ghiper.c
+++ b/docs/examples/ghiper.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -163,16 +163,14 @@ static int update_timeout_cb(CURLM *multi, long timeout_ms, void *userp)
MSG_OUT("*** update_timeout_cb %ld => %ld:%ld ***\n",
timeout_ms, timeout.tv_sec, timeout.tv_usec);
- /* TODO
- *
- * if timeout_ms is 0, call curl_multi_socket_action() at once!
- *
+ /*
* if timeout_ms is -1, just delete the timer
*
- * for all other values of timeout_ms, this should set or *update*
- * the timer to the new value
+ * For other values of timeout_ms, this should set or *update* the timer to
+ * the new value
*/
- g->timer_event = g_timeout_add(timeout_ms, timer_cb, g);
+ if(timeout_ms >= 0)
+ g->timer_event = g_timeout_add(timeout_ms, timer_cb, g);
return 0;
}
diff --git a/docs/examples/hiperfifo.c b/docs/examples/hiperfifo.c
index fec62b85..f3c1bbc7 100644
--- a/docs/examples/hiperfifo.c
+++ b/docs/examples/hiperfifo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -152,23 +152,15 @@ static int multi_timer_cb(CURLM *multi _Unused, long timeout_ms, GlobalInfo *g)
timeout.tv_usec = (timeout_ms%1000)*1000;
fprintf(MSG_OUT, "multi_timer_cb: Setting timeout to %ld ms\n", timeout_ms);
- /* TODO
- *
- * if timeout_ms is 0, call curl_multi_socket_action() at once!
- *
+ /*
* if timeout_ms is -1, just delete the timer
*
- * for all other values of timeout_ms, this should set or *update*
- * the timer to the new value
+ * For all other values of timeout_ms, this should set or *update* the timer
+ * to the new value
*/
- if(timeout_ms == 0) {
- rc = curl_multi_socket_action(g->multi,
- CURL_SOCKET_TIMEOUT, 0, &g->still_running);
- mcode_or_die("multi_timer_cb: curl_multi_socket_action", rc);
- }
- else if(timeout_ms == -1)
+ if(timeout_ms == -1)
evtimer_del(&g->timer_event);
- else
+ else /* includes timeout zero */
evtimer_add(&g->timer_event, &timeout);
return 0;
}
diff --git a/docs/examples/http2-download.c b/docs/examples/http2-download.c
index b4ac7c93..b4358fb6 100644
--- a/docs/examples/http2-download.c
+++ b/docs/examples/http2-download.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -41,22 +41,13 @@
#define CURLPIPE_MULTIPLEX 0
#endif
-#define NUM_HANDLES 1000
-
-static void *curl_hnd[NUM_HANDLES];
-static int num_transfers;
+struct transfer {
+ CURL *easy;
+ unsigned int num;
+ FILE *out;
+};
-/* a handle to number lookup, highly ineffective when we do many
- transfers... */
-static int hnd2num(CURL *hnd)
-{
- int i;
- for(i = 0; i< num_transfers; i++) {
- if(curl_hnd[i] == hnd)
- return i;
- }
- return 0; /* weird, but just a fail-safe */
-}
+#define NUM_HANDLES 1000
static
void dump(const char *text, int num, unsigned char *ptr, size_t size,
@@ -113,9 +104,10 @@ int my_trace(CURL *handle, curl_infotype type,
void *userp)
{
const char *text;
- int num = hnd2num(handle);
+ struct transfer *t = (struct transfer *)userp;
+ unsigned int num = t->num;
(void)handle; /* prevent compiler warning */
- (void)userp;
+
switch(type) {
case CURLINFO_TEXT:
fprintf(stderr, "== %d Info: %s", num, data);
@@ -147,17 +139,19 @@ int my_trace(CURL *handle, curl_infotype type,
return 0;
}
-static void setup(CURL *hnd, int num)
+static void setup(struct transfer *t, int num)
{
- FILE *out;
char filename[128];
+ CURL *hnd;
+
+ hnd = t->easy = curl_easy_init();
snprintf(filename, 128, "dl-%d", num);
- out = fopen(filename, "wb");
+ t->out = fopen(filename, "wb");
/* write to this file */
- curl_easy_setopt(hnd, CURLOPT_WRITEDATA, out);
+ curl_easy_setopt(hnd, CURLOPT_WRITEDATA, t->out);
/* set the same URL */
curl_easy_setopt(hnd, CURLOPT_URL, "https://localhost:8443/index.html");
@@ -165,6 +159,7 @@ static void setup(CURL *hnd, int num)
/* please be verbose */
curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(hnd, CURLOPT_DEBUGFUNCTION, my_trace);
+ curl_easy_setopt(hnd, CURLOPT_DEBUGDATA, t);
/* HTTP/2 please */
curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
@@ -177,37 +172,35 @@ static void setup(CURL *hnd, int num)
/* wait for pipe connection to confirm */
curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
#endif
-
- curl_hnd[num] = hnd;
}
/*
- * Simply download two files over HTTP/2, using the same physical connection!
+ * Download many transfers over HTTP/2, using the same connection!
*/
int main(int argc, char **argv)
{
- CURL *easy[NUM_HANDLES];
+ struct transfer trans[NUM_HANDLES];
CURLM *multi_handle;
int i;
int still_running = 0; /* keep number of running handles */
-
- if(argc > 1)
+ int num_transfers;
+ if(argc > 1) {
/* if given a number, do that many transfers */
num_transfers = atoi(argv[1]);
-
- if(!num_transfers || (num_transfers > NUM_HANDLES))
- num_transfers = 3; /* a suitable low default */
+ if((num_transfers < 1) || (num_transfers > NUM_HANDLES))
+ num_transfers = 3; /* a suitable low default */
+ }
+ else
+ num_transfers = 3; /* suitable default */
/* init a multi stack */
multi_handle = curl_multi_init();
- for(i = 0; i<num_transfers; i++) {
- easy[i] = curl_easy_init();
- /* set options */
- setup(easy[i], i);
+ for(i = 0; i < num_transfers; i++) {
+ setup(&trans[i], i);
/* add the individual transfer */
- curl_multi_add_handle(multi_handle, easy[i]);
+ curl_multi_add_handle(multi_handle, trans[i].easy);
}
curl_multi_setopt(multi_handle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
@@ -286,10 +279,12 @@ int main(int argc, char **argv)
}
}
- curl_multi_cleanup(multi_handle);
+ for(i = 0; i < num_transfers; i++) {
+ curl_multi_remove_handle(multi_handle, trans[i].easy);
+ curl_easy_cleanup(trans[i].easy);
+ }
- for(i = 0; i<num_transfers; i++)
- curl_easy_cleanup(easy[i]);
+ curl_multi_cleanup(multi_handle);
return 0;
}
diff --git a/docs/examples/http2-serverpush.c b/docs/examples/http2-serverpush.c
index 66abb0f9..63dff4ce 100644
--- a/docs/examples/http2-serverpush.c
+++ b/docs/examples/http2-serverpush.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -128,9 +128,12 @@ int my_trace(CURL *handle, curl_infotype type,
#define OUTPUTFILE "dl"
-static void setup(CURL *hnd)
+static int setup(CURL *hnd)
{
FILE *out = fopen(OUTPUTFILE, "wb");
+ if(!out)
+ /* failed */
+ return 1;
/* write to this file */
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, out);
@@ -153,7 +156,7 @@ static void setup(CURL *hnd)
/* wait for pipe connection to confirm */
curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
#endif
-
+ return 0; /* all is good */
}
/* called when there's an incoming push */
@@ -176,6 +179,11 @@ static int server_push_callback(CURL *parent,
/* here's a new stream, save it in a new file for each new push */
out = fopen(filename, "wb");
+ if(!out) {
+ /* if we can't save it, deny it */
+ fprintf(stderr, "Failed to create output file for push\n");
+ return CURL_PUSH_DENY;
+ }
/* write to this file */
curl_easy_setopt(easy, CURLOPT_WRITEDATA, out);
@@ -215,7 +223,10 @@ int main(void)
easy = curl_easy_init();
/* set options */
- setup(easy);
+ if(setup(easy)) {
+ fprintf(stderr, "failed\n");
+ return 1;
+ }
/* add the easy transfer */
curl_multi_add_handle(multi_handle, easy);
diff --git a/docs/examples/http2-upload.c b/docs/examples/http2-upload.c
index 2717998c..45864cf3 100644
--- a/docs/examples/http2-upload.c
+++ b/docs/examples/http2-upload.c
@@ -45,20 +45,12 @@
#define NUM_HANDLES 1000
-static void *curl_hnd[NUM_HANDLES];
-static int num_transfers;
-
-/* a handle to number lookup, highly ineffective when we do many
- transfers... */
-static int hnd2num(CURL *hnd)
-{
- int i;
- for(i = 0; i< num_transfers; i++) {
- if(curl_hnd[i] == hnd)
- return i;
- }
- return 0; /* weird, but just a fail-safe */
-}
+struct input {
+ FILE *in;
+ size_t bytes_read; /* count up */
+ CURL *hnd;
+ int num;
+};
static
void dump(const char *text, int num, unsigned char *ptr, size_t size,
@@ -115,15 +107,14 @@ int my_trace(CURL *handle, curl_infotype type,
{
char timebuf[60];
const char *text;
- int num = hnd2num(handle);
+ struct input *i = (struct input *)userp;
+ int num = i->num;
static time_t epoch_offset;
static int known_offset;
struct timeval tv;
time_t secs;
struct tm *now;
-
(void)handle; /* prevent compiler warning */
- (void)userp;
gettimeofday(&tv, NULL);
if(!known_offset) {
@@ -166,12 +157,6 @@ int my_trace(CURL *handle, curl_infotype type,
return 0;
}
-struct input {
- FILE *in;
- size_t bytes_read; /* count up */
- CURL *hnd;
-};
-
static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp)
{
struct input *i = userp;
@@ -180,16 +165,17 @@ static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp)
return retcode;
}
-static struct input indata[NUM_HANDLES];
-
-static void setup(CURL *hnd, int num, const char *upload)
+static void setup(struct input *i, int num, const char *upload)
{
FILE *out;
char url[256];
char filename[128];
struct stat file_info;
curl_off_t uploadsize;
+ CURL *hnd;
+ hnd = i->hnd = curl_easy_init();
+ i->num = num;
snprintf(filename, 128, "dl-%d", num);
out = fopen(filename, "wb");
@@ -199,8 +185,7 @@ static void setup(CURL *hnd, int num, const char *upload)
stat(upload, &file_info);
uploadsize = file_info.st_size;
- indata[num].in = fopen(upload, "rb");
- indata[num].hnd = hnd;
+ i->in = fopen(upload, "rb");
/* write to this file */
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, out);
@@ -208,7 +193,7 @@ static void setup(CURL *hnd, int num, const char *upload)
/* we want to use our own read function */
curl_easy_setopt(hnd, CURLOPT_READFUNCTION, read_callback);
/* read from this file */
- curl_easy_setopt(hnd, CURLOPT_READDATA, &indata[num]);
+ curl_easy_setopt(hnd, CURLOPT_READDATA, i);
/* provide the size of the upload */
curl_easy_setopt(hnd, CURLOPT_INFILESIZE_LARGE, uploadsize);
@@ -221,6 +206,7 @@ static void setup(CURL *hnd, int num, const char *upload)
/* please be verbose */
curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(hnd, CURLOPT_DEBUGFUNCTION, my_trace);
+ curl_easy_setopt(hnd, CURLOPT_DEBUGDATA, i);
/* HTTP/2 please */
curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
@@ -233,8 +219,6 @@ static void setup(CURL *hnd, int num, const char *upload)
/* wait for pipe connection to confirm */
curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
#endif
-
- curl_hnd[num] = hnd;
}
/*
@@ -242,33 +226,35 @@ static void setup(CURL *hnd, int num, const char *upload)
*/
int main(int argc, char **argv)
{
- CURL *easy[NUM_HANDLES];
+ struct input trans[NUM_HANDLES];
CURLM *multi_handle;
int i;
int still_running = 0; /* keep number of running handles */
const char *filename = "index.html";
+ int num_transfers;
- if(argc > 1)
+ if(argc > 1) {
/* if given a number, do that many transfers */
num_transfers = atoi(argv[1]);
- if(argc > 2)
- /* if given a file name, upload this! */
- filename = argv[2];
+ if(!num_transfers || (num_transfers > NUM_HANDLES))
+ num_transfers = 3; /* a suitable low default */
- if(!num_transfers || (num_transfers > NUM_HANDLES))
- num_transfers = 3; /* a suitable low default */
+ if(argc > 2)
+ /* if given a file name, upload this! */
+ filename = argv[2];
+ }
+ else
+ num_transfers = 3;
/* init a multi stack */
multi_handle = curl_multi_init();
for(i = 0; i<num_transfers; i++) {
- easy[i] = curl_easy_init();
- /* set options */
- setup(easy[i], i, filename);
+ setup(&trans[i], i, filename);
/* add the individual transfer */
- curl_multi_add_handle(multi_handle, easy[i]);
+ curl_multi_add_handle(multi_handle, trans[i].hnd);
}
curl_multi_setopt(multi_handle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
@@ -352,8 +338,10 @@ int main(int argc, char **argv)
curl_multi_cleanup(multi_handle);
- for(i = 0; i<num_transfers; i++)
- curl_easy_cleanup(easy[i]);
+ for(i = 0; i<num_transfers; i++) {
+ curl_multi_remove_handle(multi_handle, trans[i].hnd);
+ curl_easy_cleanup(trans[i].hnd);
+ }
return 0;
}
diff --git a/docs/examples/httpcustomheader.c b/docs/examples/httpcustomheader.c
index d22b7bc5..6712f8c6 100644
--- a/docs/examples/httpcustomheader.c
+++ b/docs/examples/httpcustomheader.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -49,7 +49,7 @@ int main(void)
chunk = curl_slist_append(chunk, "X-silly-header;");
/* set our custom set of headers */
- res = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
+ curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
curl_easy_setopt(curl, CURLOPT_URL, "localhost");
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
diff --git a/docs/examples/postinmemory.c b/docs/examples/postinmemory.c
index 25a1e8ea..376f3345 100644
--- a/docs/examples/postinmemory.c
+++ b/docs/examples/postinmemory.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -67,7 +67,6 @@ int main(void)
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if(curl) {
-
curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.org/");
/* send all data to this function */
@@ -106,10 +105,9 @@ int main(void)
/* always cleanup */
curl_easy_cleanup(curl);
- free(chunk.memory);
-
/* we're done with libcurl, so clean it up */
curl_global_cleanup();
}
+ free(chunk.memory);
return 0;
}
diff --git a/docs/examples/sftpget.c b/docs/examples/sftpget.c
index 44a3caf2..e5a74b9e 100644
--- a/docs/examples/sftpget.c
+++ b/docs/examples/sftpget.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -47,7 +47,7 @@ static size_t my_fwrite(void *buffer, size_t size, size_t nmemb,
void *stream)
{
struct FtpFile *out = (struct FtpFile *)stream;
- if(out && !out->stream) {
+ if(!out->stream) {
/* open file for writing */
out->stream = fopen(out->filename, "wb");
if(!out->stream)
diff --git a/docs/examples/sftpuploadresume.c b/docs/examples/sftpuploadresume.c
index 6e60c1e5..98f3b62f 100644
--- a/docs/examples/sftpuploadresume.c
+++ b/docs/examples/sftpuploadresume.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -65,6 +65,8 @@ static curl_off_t sftpGetRemoteFileSize(const char *i_remoteFile)
result = curl_easy_getinfo(curlHandlePtr,
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T,
&remoteFileSizeByte);
+ if(result)
+ return -1;
printf("filesize: %" CURL_FORMAT_CURL_OFF_T "\n", remoteFileSizeByte);
}
curl_easy_cleanup(curlHandlePtr);
diff --git a/docs/libcurl/curl_easy_cleanup.3 b/docs/libcurl/curl_easy_cleanup.3
index c5d92fa3..87c703a1 100644
--- a/docs/libcurl/curl_easy_cleanup.3
+++ b/docs/libcurl/curl_easy_cleanup.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_cleanup 3 "August 09, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_easy_cleanup 3 "August 09, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_easy_cleanup - End a libcurl easy handle
diff --git a/docs/libcurl/curl_easy_duphandle.3 b/docs/libcurl/curl_easy_duphandle.3
index e8560279..ec6ab768 100644
--- a/docs/libcurl/curl_easy_duphandle.3
+++ b/docs/libcurl/curl_easy_duphandle.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_easy_duphandle 3 "September 23, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_easy_duphandle 3 "March 01, 2019" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_easy_duphandle - Clone a libcurl session handle
@@ -40,10 +40,12 @@ will be pointed to by the new handle as well. You must therefore make sure to
keep the data around until both handles have been cleaned up.
The new handle will \fBnot\fP inherit any state information, no connections,
-no SSL sessions and no cookies.
+no SSL sessions and no cookies. It also will not inherit any share object
+states or options (it will be made as if \fICURLOPT_SHARE(3)\fP was set to
+NULL).
-\fBNote\fP that even in multi-threaded programs, this function must be called
-in a synchronous way, the input handle may not be in use when cloned.
+In multi-threaded programs, this function must be called in a synchronous way,
+the input handle may not be in use when cloned.
.SH RETURN VALUE
If this function returns NULL, something went wrong and no valid handle was
returned.
diff --git a/docs/libcurl/curl_easy_escape.3 b/docs/libcurl/curl_easy_escape.3
index 341a748a..e3000c6c 100644
--- a/docs/libcurl/curl_easy_escape.3
+++ b/docs/libcurl/curl_easy_escape.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_escape 3 "August 12, 2017" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_easy_escape 3 "August 12, 2017" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_easy_escape - URL encodes the given string
diff --git a/docs/libcurl/curl_easy_getinfo.3 b/docs/libcurl/curl_easy_getinfo.3
index a16bc9a7..162c0331 100644
--- a/docs/libcurl/curl_easy_getinfo.3
+++ b/docs/libcurl/curl_easy_getinfo.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_getinfo 3 "May 17, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_easy_getinfo 3 "May 17, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_easy_getinfo - extract information from a curl handle
diff --git a/docs/libcurl/curl_easy_init.3 b/docs/libcurl/curl_easy_init.3
index 17040112..0d96c612 100644
--- a/docs/libcurl/curl_easy_init.3
+++ b/docs/libcurl/curl_easy_init.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_easy_init 3 "February 03, 2016" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_easy_init 3 "February 03, 2016" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_easy_init - Start a libcurl easy session
diff --git a/docs/libcurl/curl_easy_pause.3 b/docs/libcurl/curl_easy_pause.3
index d983d8c1..4e651c7f 100644
--- a/docs/libcurl/curl_easy_pause.3
+++ b/docs/libcurl/curl_easy_pause.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_easy_pause 3 "May 01, 2016" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_easy_pause 3 "May 01, 2016" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_easy_pause - pause and unpause a connection
diff --git a/docs/libcurl/curl_easy_perform.3 b/docs/libcurl/curl_easy_perform.3
index 0c18408e..46e7586e 100644
--- a/docs/libcurl/curl_easy_perform.3
+++ b/docs/libcurl/curl_easy_perform.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_easy_perform 3 "September 23, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_easy_perform 3 "September 23, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_easy_perform - perform a blocking file transfer
diff --git a/docs/libcurl/curl_easy_recv.3 b/docs/libcurl/curl_easy_recv.3
index 0e1a4983..0b95c563 100644
--- a/docs/libcurl/curl_easy_recv.3
+++ b/docs/libcurl/curl_easy_recv.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_recv 3 "December 18, 2016" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_easy_recv 3 "December 18, 2016" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_easy_recv - receives raw data on an "easy" connection
diff --git a/docs/libcurl/curl_easy_reset.3 b/docs/libcurl/curl_easy_reset.3
index 278e6ec7..7837683a 100644
--- a/docs/libcurl/curl_easy_reset.3
+++ b/docs/libcurl/curl_easy_reset.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_easy_reset 3 "September 23, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_easy_reset 3 "September 23, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_easy_reset - reset all options of a libcurl session handle
diff --git a/docs/libcurl/curl_easy_send.3 b/docs/libcurl/curl_easy_send.3
index df059460..a71fede1 100644
--- a/docs/libcurl/curl_easy_send.3
+++ b/docs/libcurl/curl_easy_send.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_send 3 "December 18, 2016" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_easy_send 3 "December 18, 2016" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_easy_send - sends raw data over an "easy" connection
diff --git a/docs/libcurl/curl_easy_setopt.3 b/docs/libcurl/curl_easy_setopt.3
index be668bec..a40eb84c 100644
--- a/docs/libcurl/curl_easy_setopt.3
+++ b/docs/libcurl/curl_easy_setopt.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_setopt 3 "December 17, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_easy_setopt 3 "March 03, 2019" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_easy_setopt \- set options for a curl easy handle
@@ -314,6 +314,10 @@ File to write cookies to. See \fICURLOPT_COOKIEJAR(3)\fP
Start a new cookie session. See \fICURLOPT_COOKIESESSION(3)\fP
.IP CURLOPT_COOKIELIST
Add or control cookies. See \fICURLOPT_COOKIELIST(3)\fP
+.IP CURLOPT_ALTSVC
+Specify the Alt-Svc: cache file name. See \fICURLOPT_ALTSVC(3)\fP
+.IP CURLOPT_ALTSVC_CTRL
+Enable and configure Alt-Svc: treatment. See \fICURLOPT_ALTSVC_CTRL(3)\fP
.IP CURLOPT_HTTPGET
Do an HTTP GET request. See \fICURLOPT_HTTPGET(3)\fP
.IP CURLOPT_REQUEST_TARGET
diff --git a/docs/libcurl/curl_easy_strerror.3 b/docs/libcurl/curl_easy_strerror.3
index c1de059d..e388520a 100644
--- a/docs/libcurl/curl_easy_strerror.3
+++ b/docs/libcurl/curl_easy_strerror.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_easy_strerror 3 "February 03, 2016" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_easy_strerror 3 "February 03, 2016" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_easy_strerror - return string describing error code
diff --git a/docs/libcurl/curl_easy_unescape.3 b/docs/libcurl/curl_easy_unescape.3
index 41c0a384..87823536 100644
--- a/docs/libcurl/curl_easy_unescape.3
+++ b/docs/libcurl/curl_easy_unescape.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_unescape 3 "October 04, 2016" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_easy_unescape 3 "October 04, 2016" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_easy_unescape - URL decodes the given string
diff --git a/docs/libcurl/curl_escape.3 b/docs/libcurl/curl_escape.3
index f3b2546d..c13ab0a4 100644
--- a/docs/libcurl/curl_escape.3
+++ b/docs/libcurl/curl_escape.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_escape 3 "February 03, 2016" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_escape 3 "February 03, 2016" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_escape - URL encodes the given string
diff --git a/docs/libcurl/curl_formadd.3 b/docs/libcurl/curl_formadd.3
index 9fecf53b..f679735f 100644
--- a/docs/libcurl/curl_formadd.3
+++ b/docs/libcurl/curl_formadd.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_formadd 3 "December 11, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_formadd 3 "December 11, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_formadd - add a section to a multipart/formdata HTTP POST
diff --git a/docs/libcurl/curl_formfree.3 b/docs/libcurl/curl_formfree.3
index 13c3bf84..22d6ce2b 100644
--- a/docs/libcurl/curl_formfree.3
+++ b/docs/libcurl/curl_formfree.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_formfree 3 "August 09, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_formfree 3 "August 09, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_formfree - free a previously build multipart/formdata HTTP POST chain
diff --git a/docs/libcurl/curl_formget.3 b/docs/libcurl/curl_formget.3
index c1c91add..5e86f5df 100644
--- a/docs/libcurl/curl_formget.3
+++ b/docs/libcurl/curl_formget.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_formget 3 "September 02, 2017" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_formget 3 "September 02, 2017" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_formget - serialize a previously built multipart/formdata HTTP POST chain
diff --git a/docs/libcurl/curl_free.3 b/docs/libcurl/curl_free.3
index 6f0b9b31..b809b23b 100644
--- a/docs/libcurl/curl_free.3
+++ b/docs/libcurl/curl_free.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_free 3 "August 09, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_free 3 "August 09, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_free - reclaim memory that has been obtained through a libcurl call
diff --git a/docs/libcurl/curl_getdate.3 b/docs/libcurl/curl_getdate.3
index 532ae393..1e8c470e 100644
--- a/docs/libcurl/curl_getdate.3
+++ b/docs/libcurl/curl_getdate.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_getdate 3 "January 18, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_getdate 3 "January 18, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_getdate - Convert a date string to number of seconds
diff --git a/docs/libcurl/curl_getenv.3 b/docs/libcurl/curl_getenv.3
index 1c459ecd..d1628f95 100644
--- a/docs/libcurl/curl_getenv.3
+++ b/docs/libcurl/curl_getenv.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_getenv 3 "February 03, 2016" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_getenv 3 "February 03, 2016" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_getenv - return value for environment name
diff --git a/docs/libcurl/curl_global_cleanup.3 b/docs/libcurl/curl_global_cleanup.3
index 034d7416..97113d16 100644
--- a/docs/libcurl/curl_global_cleanup.3
+++ b/docs/libcurl/curl_global_cleanup.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_global_cleanup 3 "September 20, 2016" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_global_cleanup 3 "September 20, 2016" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_global_cleanup - global libcurl cleanup
diff --git a/docs/libcurl/curl_global_init.3 b/docs/libcurl/curl_global_init.3
index 64c01048..1117a541 100644
--- a/docs/libcurl/curl_global_init.3
+++ b/docs/libcurl/curl_global_init.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_global_init 3 "April 17, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_global_init 3 "April 17, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_global_init - Global libcurl initialisation
diff --git a/docs/libcurl/curl_global_init_mem.3 b/docs/libcurl/curl_global_init_mem.3
index 19908126..53cce2ad 100644
--- a/docs/libcurl/curl_global_init_mem.3
+++ b/docs/libcurl/curl_global_init_mem.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_global_init_mem 3 "September 23, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_global_init_mem 3 "September 23, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_global_init_mem - Global libcurl initialisation with memory callbacks
diff --git a/docs/libcurl/curl_global_sslset.3 b/docs/libcurl/curl_global_sslset.3
index 4be1692b..e89463ab 100644
--- a/docs/libcurl/curl_global_sslset.3
+++ b/docs/libcurl/curl_global_sslset.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_global_sslset 3 "October 30, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_global_sslset 3 "October 30, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_global_sslset - Select SSL backend to use with libcurl
diff --git a/docs/libcurl/curl_mime_addpart.3 b/docs/libcurl/curl_mime_addpart.3
index 60f8bb16..9ff2032e 100644
--- a/docs/libcurl/curl_mime_addpart.3
+++ b/docs/libcurl/curl_mime_addpart.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_addpart 3 "September 22, 2017" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_mime_addpart 3 "September 22, 2017" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_mime_addpart - append a new empty part to a mime structure
diff --git a/docs/libcurl/curl_mime_data.3 b/docs/libcurl/curl_mime_data.3
index 7f792aa2..d58171a9 100644
--- a/docs/libcurl/curl_mime_data.3
+++ b/docs/libcurl/curl_mime_data.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_data 3 "September 22, 2017" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_mime_data 3 "September 22, 2017" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_mime_data - set a mime part's body data from memory
diff --git a/docs/libcurl/curl_mime_data_cb.3 b/docs/libcurl/curl_mime_data_cb.3
index aad93db5..8397b186 100644
--- a/docs/libcurl/curl_mime_data_cb.3
+++ b/docs/libcurl/curl_mime_data_cb.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_data_cb 3 "April 17, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_mime_data_cb 3 "April 17, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_mime_data_cb - set a callback-based data source for a mime part's body
diff --git a/docs/libcurl/curl_mime_encoder.3 b/docs/libcurl/curl_mime_encoder.3
index 0811cd8d..b87da378 100644
--- a/docs/libcurl/curl_mime_encoder.3
+++ b/docs/libcurl/curl_mime_encoder.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_encoder 3 "September 05, 2017" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_mime_encoder 3 "September 05, 2017" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_mime_encoder - set a mime part's encoder and content transfer encoding
diff --git a/docs/libcurl/curl_mime_filedata.3 b/docs/libcurl/curl_mime_filedata.3
index 60f1f052..7d0315de 100644
--- a/docs/libcurl/curl_mime_filedata.3
+++ b/docs/libcurl/curl_mime_filedata.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_filedata 3 "April 17, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_mime_filedata 3 "April 17, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_mime_filedata - set a mime part's body data from a file contents
diff --git a/docs/libcurl/curl_mime_filename.3 b/docs/libcurl/curl_mime_filename.3
index b72d9bb6..ed322aa0 100644
--- a/docs/libcurl/curl_mime_filename.3
+++ b/docs/libcurl/curl_mime_filename.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_filename 3 "September 22, 2017" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_mime_filename 3 "September 22, 2017" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_mime_filename - set a mime part's remote file name
diff --git a/docs/libcurl/curl_mime_free.3 b/docs/libcurl/curl_mime_free.3
index dc2a1b57..392a9379 100644
--- a/docs/libcurl/curl_mime_free.3
+++ b/docs/libcurl/curl_mime_free.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_free 3 "August 09, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_mime_free 3 "August 09, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_mime_free - free a previously built mime structure
diff --git a/docs/libcurl/curl_mime_headers.3 b/docs/libcurl/curl_mime_headers.3
index 0ae3ee60..6e9821b5 100644
--- a/docs/libcurl/curl_mime_headers.3
+++ b/docs/libcurl/curl_mime_headers.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_headers 3 "September 22, 2017" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_mime_headers 3 "September 22, 2017" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_mime_headers - set a mime part's custom headers
diff --git a/docs/libcurl/curl_mime_init.3 b/docs/libcurl/curl_mime_init.3
index 3e3bf257..410da1ff 100644
--- a/docs/libcurl/curl_mime_init.3
+++ b/docs/libcurl/curl_mime_init.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_init 3 "September 22, 2017" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_mime_init 3 "September 22, 2017" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_mime_init - create a mime handle
diff --git a/docs/libcurl/curl_mime_name.3 b/docs/libcurl/curl_mime_name.3
index 67fdefb2..86419fe1 100644
--- a/docs/libcurl/curl_mime_name.3
+++ b/docs/libcurl/curl_mime_name.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_name 3 "September 22, 2017" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_mime_name 3 "September 22, 2017" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_mime_name - set a mime part's name
diff --git a/docs/libcurl/curl_mime_subparts.3 b/docs/libcurl/curl_mime_subparts.3
index 67265603..eb6cc793 100644
--- a/docs/libcurl/curl_mime_subparts.3
+++ b/docs/libcurl/curl_mime_subparts.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_subparts 3 "September 05, 2017" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_mime_subparts 3 "September 05, 2017" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_mime_subparts - set subparts of a multipart mime part
diff --git a/docs/libcurl/curl_mime_type.3 b/docs/libcurl/curl_mime_type.3
index 9d31b278..3245987c 100644
--- a/docs/libcurl/curl_mime_type.3
+++ b/docs/libcurl/curl_mime_type.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_type 3 "April 17, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_mime_type 3 "April 17, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_mime_type - set a mime part's content type
diff --git a/docs/libcurl/curl_mprintf.3 b/docs/libcurl/curl_mprintf.3
index 9e556831..cc0a05a5 100644
--- a/docs/libcurl/curl_mprintf.3
+++ b/docs/libcurl/curl_mprintf.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_printf 3 "April 01, 2016" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_printf 3 "April 01, 2016" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_maprintf, curl_mfprintf, curl_mprintf, curl_msnprintf, curl_msprintf
diff --git a/docs/libcurl/curl_multi_add_handle.3 b/docs/libcurl/curl_multi_add_handle.3
index 5601b74e..52e7a995 100644
--- a/docs/libcurl/curl_multi_add_handle.3
+++ b/docs/libcurl/curl_multi_add_handle.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_add_handle 3 "June 30, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_multi_add_handle 3 "June 30, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_multi_add_handle - add an easy handle to a multi session
diff --git a/docs/libcurl/curl_multi_assign.3 b/docs/libcurl/curl_multi_assign.3
index 8df43064..cbb20503 100644
--- a/docs/libcurl/curl_multi_assign.3
+++ b/docs/libcurl/curl_multi_assign.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_assign 3 "February 03, 2016" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_multi_assign 3 "February 03, 2016" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_multi_assign \- set data to associate with an internal socket
diff --git a/docs/libcurl/curl_multi_cleanup.3 b/docs/libcurl/curl_multi_cleanup.3
index fb887208..55d7a102 100644
--- a/docs/libcurl/curl_multi_cleanup.3
+++ b/docs/libcurl/curl_multi_cleanup.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_cleanup 3 "August 09, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_multi_cleanup 3 "August 09, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_multi_cleanup - close down a multi session
diff --git a/docs/libcurl/curl_multi_fdset.3 b/docs/libcurl/curl_multi_fdset.3
index f09e021c..7cf078c9 100644
--- a/docs/libcurl/curl_multi_fdset.3
+++ b/docs/libcurl/curl_multi_fdset.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_fdset 3 "November 09, 2017" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_multi_fdset 3 "November 09, 2017" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_multi_fdset - extracts file descriptor information from a multi handle
diff --git a/docs/libcurl/curl_multi_info_read.3 b/docs/libcurl/curl_multi_info_read.3
index 7e3de838..51bcec30 100644
--- a/docs/libcurl/curl_multi_info_read.3
+++ b/docs/libcurl/curl_multi_info_read.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_info_read 3 "February 03, 2016" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_multi_info_read 3 "February 03, 2016" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_multi_info_read - read multi stack informationals
diff --git a/docs/libcurl/curl_multi_init.3 b/docs/libcurl/curl_multi_init.3
index dec8769a..2325dee4 100644
--- a/docs/libcurl/curl_multi_init.3
+++ b/docs/libcurl/curl_multi_init.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_init 3 "September 23, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_multi_init 3 "September 23, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_multi_init - create a multi handle
diff --git a/docs/libcurl/curl_multi_perform.3 b/docs/libcurl/curl_multi_perform.3
index 4cad2ff3..21b67a00 100644
--- a/docs/libcurl/curl_multi_perform.3
+++ b/docs/libcurl/curl_multi_perform.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_perform 3 "February 03, 2016" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_multi_perform 3 "February 03, 2016" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_multi_perform - reads/writes available data from each easy handle
diff --git a/docs/libcurl/curl_multi_remove_handle.3 b/docs/libcurl/curl_multi_remove_handle.3
index a202b6dc..accb07f5 100644
--- a/docs/libcurl/curl_multi_remove_handle.3
+++ b/docs/libcurl/curl_multi_remove_handle.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_remove_handle 3 "February 03, 2016" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_multi_remove_handle 3 "February 19, 2019" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_multi_remove_handle - remove an easy handle from a multi session
@@ -38,6 +38,9 @@ perfectly legal to invoke \fIcurl_easy_perform(3)\fP on this easy handle.
Removing an easy handle while being used is perfectly legal and will
effectively halt the transfer in progress involving that easy handle. All
other easy handles and transfers will remain unaffected.
+
+It is fine to remove a handle at any time during a transfer, just not from
+within any libcurl callback function.
.SH RETURN VALUE
CURLMcode type, general libcurl multi interface error code.
.SH "SEE ALSO"
diff --git a/docs/libcurl/curl_multi_setopt.3 b/docs/libcurl/curl_multi_setopt.3
index 55eb0781..61c466ff 100644
--- a/docs/libcurl/curl_multi_setopt.3
+++ b/docs/libcurl/curl_multi_setopt.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_setopt 3 "February 03, 2016" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_multi_setopt 3 "February 03, 2016" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_multi_setopt \- set options for a curl multi handle
diff --git a/docs/libcurl/curl_multi_socket.3 b/docs/libcurl/curl_multi_socket.3
index 4e72392a..6967acf6 100644
--- a/docs/libcurl/curl_multi_socket.3
+++ b/docs/libcurl/curl_multi_socket.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_socket 3 "June 30, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_multi_socket 3 "June 30, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_multi_socket \- reads/writes available data
diff --git a/docs/libcurl/curl_multi_socket_action.3 b/docs/libcurl/curl_multi_socket_action.3
index 04efe6a5..8b4ce700 100644
--- a/docs/libcurl/curl_multi_socket_action.3
+++ b/docs/libcurl/curl_multi_socket_action.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_socket_action 3 "June 30, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_multi_socket_action 3 "June 30, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_multi_socket_action \- reads/writes available data given an action
diff --git a/docs/libcurl/curl_multi_strerror.3 b/docs/libcurl/curl_multi_strerror.3
index 456c3b5e..e486e8f3 100644
--- a/docs/libcurl/curl_multi_strerror.3
+++ b/docs/libcurl/curl_multi_strerror.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_strerror 3 "February 03, 2016" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_multi_strerror 3 "February 03, 2016" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_multi_strerror - return string describing error code
diff --git a/docs/libcurl/curl_multi_timeout.3 b/docs/libcurl/curl_multi_timeout.3
index 9e0ee495..39d20676 100644
--- a/docs/libcurl/curl_multi_timeout.3
+++ b/docs/libcurl/curl_multi_timeout.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_timeout 3 "September 23, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_multi_timeout 3 "September 23, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_multi_timeout \- how long to wait for action before proceeding
diff --git a/docs/libcurl/curl_multi_wait.3 b/docs/libcurl/curl_multi_wait.3
index 1bfb118c..0651243b 100644
--- a/docs/libcurl/curl_multi_wait.3
+++ b/docs/libcurl/curl_multi_wait.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_wait 3 "March 09, 2016" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_multi_wait 3 "March 09, 2016" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_multi_wait - polls on all easy handles in a multi handle
diff --git a/docs/libcurl/curl_share_cleanup.3 b/docs/libcurl/curl_share_cleanup.3
index a7f8303d..ab5c5c98 100644
--- a/docs/libcurl/curl_share_cleanup.3
+++ b/docs/libcurl/curl_share_cleanup.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_share_cleanup 3 "August 09, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_share_cleanup 3 "August 09, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_share_cleanup - Clean up a shared object
diff --git a/docs/libcurl/curl_share_init.3 b/docs/libcurl/curl_share_init.3
index 5b2e5191..34b650bd 100644
--- a/docs/libcurl/curl_share_init.3
+++ b/docs/libcurl/curl_share_init.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_share_init 3 "September 23, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_share_init 3 "September 23, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_share_init - Create a shared object
diff --git a/docs/libcurl/curl_share_setopt.3 b/docs/libcurl/curl_share_setopt.3
index b499b5d7..fe000141 100644
--- a/docs/libcurl/curl_share_setopt.3
+++ b/docs/libcurl/curl_share_setopt.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_share_setopt 3 "May 28, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_share_setopt 3 "May 28, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_share_setopt - Set options for a shared object
diff --git a/docs/libcurl/curl_share_strerror.3 b/docs/libcurl/curl_share_strerror.3
index 8c421488..04e0d63e 100644
--- a/docs/libcurl/curl_share_strerror.3
+++ b/docs/libcurl/curl_share_strerror.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_share_strerror 3 "February 03, 2016" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_share_strerror 3 "February 03, 2016" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_share_strerror - return string describing error code
diff --git a/docs/libcurl/curl_slist_append.3 b/docs/libcurl/curl_slist_append.3
index 255e0eb4..46797e27 100644
--- a/docs/libcurl/curl_slist_append.3
+++ b/docs/libcurl/curl_slist_append.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_slist_append 3 "January 02, 2019" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_slist_append 3 "January 02, 2019" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_slist_append - add a string to an slist
diff --git a/docs/libcurl/curl_slist_free_all.3 b/docs/libcurl/curl_slist_free_all.3
index 0377db6f..cdda0fc6 100644
--- a/docs/libcurl/curl_slist_free_all.3
+++ b/docs/libcurl/curl_slist_free_all.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_slist_free_all 3 "September 23, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_slist_free_all 3 "September 23, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_slist_free_all - free an entire curl_slist list
diff --git a/docs/libcurl/curl_strequal.3 b/docs/libcurl/curl_strequal.3
index c4ef460b..ae144292 100644
--- a/docs/libcurl/curl_strequal.3
+++ b/docs/libcurl/curl_strequal.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_strequal 3 "June 29, 2017" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_strequal 3 "June 29, 2017" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_strequal, curl_strnequal - case insensitive string comparisons
diff --git a/docs/libcurl/curl_unescape.3 b/docs/libcurl/curl_unescape.3
index 753b6e8b..3c3bab3c 100644
--- a/docs/libcurl/curl_unescape.3
+++ b/docs/libcurl/curl_unescape.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_unescape 3 "February 03, 2016" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_unescape 3 "February 03, 2016" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_unescape - URL decodes the given string
diff --git a/docs/libcurl/curl_url.3 b/docs/libcurl/curl_url.3
index d044ee9e..8f2e7495 100644
--- a/docs/libcurl/curl_url.3
+++ b/docs/libcurl/curl_url.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_url 3 "January 29, 2019" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_url 3 "March 22, 2019" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_url - returns a new CURLU handle
@@ -27,14 +27,6 @@ curl_url - returns a new CURLU handle
.B #include <curl/curl.h>
CURLU *curl_url();
-.SH EXPERIMENTAL
-The URL API is considered \fBEXPERIMENTAL\fP until further notice. Please test
-it, report bugs and help us perfect it. Once proven to be reliable, the
-experimental label will be removed.
-
-While this API is marked experimental, we reserve the right to modify the API
-slightly if we deem it necessary and it makes it notably better or easier to
-use.
.SH DESCRIPTION
This function will allocates and returns a pointer to a fresh CURLU handle, to
be used for further use of the URL API.
diff --git a/docs/libcurl/curl_url_cleanup.3 b/docs/libcurl/curl_url_cleanup.3
index 54bb3102..f79e83b9 100644
--- a/docs/libcurl/curl_url_cleanup.3
+++ b/docs/libcurl/curl_url_cleanup.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_url_cleanup 3 "September 08, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_url_cleanup 3 "September 08, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_url_cleanup - free a CURLU handle
diff --git a/docs/libcurl/curl_url_dup.3 b/docs/libcurl/curl_url_dup.3
index 07d3e87f..5bd75ff2 100644
--- a/docs/libcurl/curl_url_dup.3
+++ b/docs/libcurl/curl_url_dup.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_url_dup 3 "September 08, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_url_dup 3 "September 08, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_url_dup - duplicate a CURLU handle
diff --git a/docs/libcurl/curl_url_get.3 b/docs/libcurl/curl_url_get.3
index 5a02a192..4cf32a5d 100644
--- a/docs/libcurl/curl_url_get.3
+++ b/docs/libcurl/curl_url_get.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_url_get 3 "October 08, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_url_get 3 "October 08, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_url_get - extract a part from a URL
diff --git a/docs/libcurl/curl_url_set.3 b/docs/libcurl/curl_url_set.3
index 630a6e10..e1b3c33e 100644
--- a/docs/libcurl/curl_url_set.3
+++ b/docs/libcurl/curl_url_set.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_url_set 3 "November 06, 2018" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_url_set 3 "November 06, 2018" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_url_set - set a URL part
diff --git a/docs/libcurl/curl_version.3 b/docs/libcurl/curl_version.3
index 31a3d704..5e58b530 100644
--- a/docs/libcurl/curl_version.3
+++ b/docs/libcurl/curl_version.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_version 3 "February 03, 2016" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_version 3 "February 03, 2016" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_version - returns the libcurl version string
diff --git a/docs/libcurl/curl_version_info.3 b/docs/libcurl/curl_version_info.3
index 4b690930..e47eb6e2 100644
--- a/docs/libcurl/curl_version_info.3
+++ b/docs/libcurl/curl_version_info.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH curl_version_info 3 "January 29, 2019" "libcurl 7.64.0" "libcurl Manual"
+.TH curl_version_info 3 "January 29, 2019" "libcurl 7.64.1" "libcurl Manual"
.SH NAME
curl_version_info - returns run-time libcurl version info
diff --git a/docs/libcurl/libcurl-easy.3 b/docs/libcurl/libcurl-easy.3
index aa3dd00e..9c03567f 100644
--- a/docs/libcurl/libcurl-easy.3
+++ b/docs/libcurl/libcurl-easy.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH libcurl 3 "February 03, 2016" "libcurl 7.64.0" "libcurl easy interface"
+.TH libcurl 3 "February 03, 2016" "libcurl 7.64.1" "libcurl easy interface"
.SH NAME
libcurl-easy \- easy interface overview
diff --git a/docs/libcurl/libcurl-env.3 b/docs/libcurl/libcurl-env.3
index 5697b4a8..f750976e 100644
--- a/docs/libcurl/libcurl-env.3
+++ b/docs/libcurl/libcurl-env.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH libcurl-env 3 "April 17, 2018" "libcurl 7.64.0" "libcurl environment variables"
+.TH libcurl-env 3 "April 17, 2018" "libcurl 7.64.1" "libcurl environment variables"
.SH NAME
libcurl-env \- environment variables libcurl understands
diff --git a/docs/libcurl/libcurl-errors.3 b/docs/libcurl/libcurl-errors.3
index b3280c93..3a4b8534 100644
--- a/docs/libcurl/libcurl-errors.3
+++ b/docs/libcurl/libcurl-errors.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH libcurl-errors 3 "November 19, 2018" "libcurl 7.64.0" "libcurl errors"
+.TH libcurl-errors 3 "November 19, 2018" "libcurl 7.64.1" "libcurl errors"
.SH NAME
libcurl-errors \- error codes in libcurl
diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3
index 1d2bc970..5d4216ba 100644
--- a/docs/libcurl/libcurl-multi.3
+++ b/docs/libcurl/libcurl-multi.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH libcurl-multi 3 "June 30, 2018" "libcurl 7.64.0" "libcurl multi interface"
+.TH libcurl-multi 3 "June 30, 2018" "libcurl 7.64.1" "libcurl multi interface"
.SH NAME
libcurl-multi \- how to use the multi interface
diff --git a/docs/libcurl/libcurl-security.3 b/docs/libcurl/libcurl-security.3
index c72a95d8..16d7995f 100644
--- a/docs/libcurl/libcurl-security.3
+++ b/docs/libcurl/libcurl-security.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH libcurl-security 3 "September 23, 2018" "libcurl 7.64.0" "libcurl security"
+.TH libcurl-security 3 "September 23, 2018" "libcurl 7.64.1" "libcurl security"
.SH NAME
libcurl-security \- security considerations when using libcurl
diff --git a/docs/libcurl/libcurl-share.3 b/docs/libcurl/libcurl-share.3
index e995715d..9f5aa18d 100644
--- a/docs/libcurl/libcurl-share.3
+++ b/docs/libcurl/libcurl-share.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH libcurl-share 3 "November 27, 2017" "libcurl 7.64.0" "libcurl share interface"
+.TH libcurl-share 3 "November 27, 2017" "libcurl 7.64.1" "libcurl share interface"
.SH NAME
libcurl-share \- how to use the share interface
diff --git a/docs/libcurl/libcurl-symbols.3 b/docs/libcurl/libcurl-symbols.3
index 42821341..9fc0653d 100644
--- a/docs/libcurl/libcurl-symbols.3
+++ b/docs/libcurl/libcurl-symbols.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH libcurl-symbols 3 "feb 6, 2019" "libcurl 7.41.0" "libcurl symbols"
+.TH libcurl-symbols 3 "mar 27, 2019" "libcurl 7.41.0" "libcurl symbols"
.SH NAME
libcurl-symbols \- libcurl symbol version information
.SH "libcurl symbols"
@@ -35,6 +35,18 @@ The last version that featured the specific symbol. Using the symbol in source
code will make it no longer compile error-free after that specified version.
This man page is automatically generated from the symbols-in-versions file.
+.IP CURLALTSVC_ALTUSED
+Introduced in 7.64.1
+.IP CURLALTSVC_H1
+Introduced in 7.64.1
+.IP CURLALTSVC_H2
+Introduced in 7.64.1
+.IP CURLALTSVC_H3
+Introduced in 7.64.1
+.IP CURLALTSVC_IMMEDIATELY
+Introduced in 7.64.1
+.IP CURLALTSVC_READONLYFILE
+Introduced in 7.64.1
.IP CURLAUTH_ANY
Introduced in 7.10.6
.IP CURLAUTH_ANYSAFE
@@ -751,6 +763,10 @@ Introduced in 7.24.0
Introduced in 7.21.6
.IP CURLOPT_ADDRESS_SCOPE
Introduced in 7.19.0
+.IP CURLOPT_ALTSVC
+Introduced in 7.64.1
+.IP CURLOPT_ALTSVC_CTRL
+Introduced in 7.64.1
.IP CURLOPT_APPEND
Introduced in 7.17.0
.IP CURLOPT_AUTOREFERER
@@ -940,10 +956,6 @@ Introduced in 7.16.2
Introduced in 7.16.2
.IP CURLOPT_HTTP_VERSION
Introduced in 7.9.1
-.IP CURLOPT_TRAILERFUNCTION
-Introduced in 7.64.0
-.IP CURLOPT_TRAILERDATA
-Introduced in 7.64.0
.IP CURLOPT_IGNORE_CONTENT_LENGTH
Introduced in 7.14.1
.IP CURLOPT_INFILE
@@ -1323,6 +1335,10 @@ Introduced in 7.21.4
Introduced in 7.21.4
.IP CURLOPT_TLSAUTH_USERNAME
Introduced in 7.21.4
+.IP CURLOPT_TRAILERDATA
+Introduced in 7.64.0
+.IP CURLOPT_TRAILERFUNCTION
+Introduced in 7.64.0
.IP CURLOPT_TRANSFERTEXT
Introduced in 7.1.1
.IP CURLOPT_TRANSFER_ENCODING
@@ -1510,6 +1526,7 @@ Introduced in 7.49.0
Introduced in 7.34.0
.IP CURLSSLBACKEND_DARWINSSL
Introduced in 7.34.0
+Deprecated since 7.64.1
.IP CURLSSLBACKEND_GNUTLS
Introduced in 7.34.0
.IP CURLSSLBACKEND_GSKIT
@@ -1532,6 +1549,8 @@ Introduced in 7.34.0
Introduced in 7.34.0
.IP CURLSSLBACKEND_SCHANNEL
Introduced in 7.34.0
+.IP CURLSSLBACKEND_SECURETRANSPORT
+Introduced in 7.64.1
.IP CURLSSLBACKEND_WOLFSSL
Introduced in 7.49.0
.IP CURLSSLOPT_ALLOW_BEAST
@@ -1810,10 +1829,6 @@ Introduced in 7.44.0
Introduced in 7.12.1
.IP CURL_READFUNC_PAUSE
Introduced in 7.18.0
-.IP CURL_TRAILERFUNC_OK
-Introduced in 7.64.0
-.IP CURL_TRAILERFUNC_ABORT
-Introduced in 7.64.0
.IP CURL_REDIR_GET_ALL
Introduced in 7.19.1
.IP CURL_REDIR_POST_301
@@ -1906,8 +1921,14 @@ Introduced in 7.9.7
Introduced in 7.21.4
.IP CURL_TLSAUTH_SRP
Introduced in 7.21.4
+.IP CURL_TRAILERFUNC_ABORT
+Introduced in 7.64.0
+.IP CURL_TRAILERFUNC_OK
+Introduced in 7.64.0
.IP CURL_UPKEEP_INTERVAL_DEFAULT
Introduced in 7.62.0
+.IP CURL_VERSION_ALTSVC
+Introduced in 7.64.1
.IP CURL_VERSION_ASYNCHDNS
Introduced in 7.10.7
.IP CURL_VERSION_BROTLI
diff --git a/docs/libcurl/libcurl-thread.3 b/docs/libcurl/libcurl-thread.3
index ec7900e7..73b00deb 100644
--- a/docs/libcurl/libcurl-thread.3
+++ b/docs/libcurl/libcurl-thread.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH libcurl-thread 3 "October 30, 2018" "libcurl 7.64.0" "libcurl thread safety"
+.TH libcurl-thread 3 "October 30, 2018" "libcurl 7.64.1" "libcurl thread safety"
.SH NAME
libcurl-thread \- libcurl thread safety
diff --git a/docs/libcurl/libcurl-tutorial.3 b/docs/libcurl/libcurl-tutorial.3
index ef10d2a6..bf578689 100644
--- a/docs/libcurl/libcurl-tutorial.3
+++ b/docs/libcurl/libcurl-tutorial.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH libcurl-tutorial 3 "September 23, 2018" "libcurl 7.64.0" "libcurl programming"
+.TH libcurl-tutorial 3 "September 23, 2018" "libcurl 7.64.1" "libcurl programming"
.SH NAME
libcurl-tutorial \- libcurl programming tutorial
diff --git a/docs/libcurl/libcurl-url.3 b/docs/libcurl/libcurl-url.3
index 2c04cbbb..63972f64 100644
--- a/docs/libcurl/libcurl-url.3
+++ b/docs/libcurl/libcurl-url.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH libcurl 3 "September 10, 2018" "libcurl 7.64.0" "libcurl url interface"
+.TH libcurl 3 "September 10, 2018" "libcurl 7.64.1" "libcurl url interface"
.SH NAME
libcurl-url \- URL interface overview
diff --git a/docs/libcurl/libcurl.3 b/docs/libcurl/libcurl.3
index da5ddfbf..37671959 100644
--- a/docs/libcurl/libcurl.3
+++ b/docs/libcurl/libcurl.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH libcurl 3 "July 15, 2017" "libcurl 7.64.0" "libcurl overview"
+.TH libcurl 3 "July 15, 2017" "libcurl 7.64.1" "libcurl overview"
.SH NAME
libcurl \- client-side URL transfers
diff --git a/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3 b/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3
index d06cdc41..1f4be789 100644
--- a/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3
+++ b/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_ACTIVESOCKET 3 "May 06, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_ACTIVESOCKET 3 "May 06, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_ACTIVESOCKET \- get the active socket
diff --git a/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3 b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
index c866716f..0a9dbd67 100644
--- a/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_APPCONNECT_TIME 3 "May 17, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_APPCONNECT_TIME 3 "May 17, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_APPCONNECT_TIME \- get the time until the SSL/SSH handshake is completed
diff --git a/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3 b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3
index c1510546..d71fbf7a 100644
--- a/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_APPCONNECT_TIME_T 3 "May 17, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_APPCONNECT_TIME_T 3 "May 17, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_APPCONNECT_TIME_T \- get the time until the SSL/SSH handshake is completed
diff --git a/docs/libcurl/opts/CURLINFO_CERTINFO.3 b/docs/libcurl/opts/CURLINFO_CERTINFO.3
index ef9a5825..6ce996b1 100644
--- a/docs/libcurl/opts/CURLINFO_CERTINFO.3
+++ b/docs/libcurl/opts/CURLINFO_CERTINFO.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CERTINFO 3 "November 07, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_CERTINFO 3 "November 07, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CERTINFO \- get the TLS certificate chain
diff --git a/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3 b/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3
index 48f90798..c60a954b 100644
--- a/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3
+++ b/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONDITION_UNMET 3 "February 23, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONDITION_UNMET 3 "February 23, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONDITION_UNMET \- get info on unmet time conditional
diff --git a/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3 b/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
index 88e3d139..7b78f363 100644
--- a/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONNECT_TIME 3 "May 17, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONNECT_TIME 3 "May 17, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONNECT_TIME \- get the time until connect
diff --git a/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3 b/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3
index 37cab1b9..42a4038a 100644
--- a/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONNECT_TIME_T 3 "May 17, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONNECT_TIME_T 3 "May 17, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONNECT_TIME_T \- get the time until connect
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
index d89b7a2e..5a41f2d8 100644
--- a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "June 15, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "June 15, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD \- get content-length of download
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3 b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3
index c57a676f..669c4e5f 100644
--- a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T \- get content-length of download
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3 b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3
index 8ae78702..e5671dfa 100644
--- a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "June 15, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "June 15, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD \- get the specified size of the upload
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3 b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3
index 4cbef128..12d889db 100644
--- a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "March 31, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "March 31, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD_T \- get the specified size of the upload
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3 b/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3
index 8cdad62e..9147031e 100644
--- a/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONTENT_TYPE 3 "May 06, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_TYPE 3 "May 06, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONTENT_TYPE \- get Content-Type
diff --git a/docs/libcurl/opts/CURLINFO_COOKIELIST.3 b/docs/libcurl/opts/CURLINFO_COOKIELIST.3
index db349056..646ee245 100644
--- a/docs/libcurl/opts/CURLINFO_COOKIELIST.3
+++ b/docs/libcurl/opts/CURLINFO_COOKIELIST.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_COOKIELIST 3 "March 20, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_COOKIELIST 3 "March 20, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_COOKIELIST \- get all known cookies
diff --git a/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3 b/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3
index 7e91e12a..041fd47d 100644
--- a/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3
+++ b/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_EFFECTIVE_URL 3 "May 04, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_EFFECTIVE_URL 3 "May 04, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_EFFECTIVE_URL \- get the last used URL
diff --git a/docs/libcurl/opts/CURLINFO_FILETIME.3 b/docs/libcurl/opts/CURLINFO_FILETIME.3
index 28cfa056..25665f40 100644
--- a/docs/libcurl/opts/CURLINFO_FILETIME.3
+++ b/docs/libcurl/opts/CURLINFO_FILETIME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_FILETIME 3 "January 25, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_FILETIME 3 "January 25, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_FILETIME \- get the remote time of the retrieved document
diff --git a/docs/libcurl/opts/CURLINFO_FILETIME_T.3 b/docs/libcurl/opts/CURLINFO_FILETIME_T.3
index 946ea311..3bcfa8b2 100644
--- a/docs/libcurl/opts/CURLINFO_FILETIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_FILETIME_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_FILETIME 3 "January 25, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_FILETIME 3 "January 25, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_FILETIME_T \- get the remote time of the retrieved document
diff --git a/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3 b/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3
index 0ccc7c07..ed10101b 100644
--- a/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3
+++ b/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_FTP_ENTRY_PATH 3 "May 06, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_FTP_ENTRY_PATH 3 "May 06, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_FTP_ENTRY_PATH \- get entry path in FTP server
diff --git a/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3 b/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3
index 973cdd85..bca7d006 100644
--- a/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3
+++ b/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_HEADER_SIZE 3 "May 06, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_HEADER_SIZE 3 "May 06, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_HEADER_SIZE \- get size of retrieved headers
diff --git a/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3 b/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3
index d48003fc..5c07e8b8 100644
--- a/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3
+++ b/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_HTTPAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_HTTPAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_HTTPAUTH_AVAIL \- get available HTTP authentication methods
diff --git a/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3 b/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3
index f71cb2cb..9e0b4195 100644
--- a/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3
+++ b/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_HTTP_CONNECTCODE 3 "May 06, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_HTTP_CONNECTCODE 3 "May 06, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_HTTP_CONNECTCODE \- get the CONNECT response code
diff --git a/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3 b/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3
index 96b86661..39956fa4 100644
--- a/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3
+++ b/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_HTTP_VERSION 3 "May 11, 2016" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_HTTP_VERSION 3 "May 11, 2016" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_HTTP_VERSION \- get the http version used in the connection
diff --git a/docs/libcurl/opts/CURLINFO_LASTSOCKET.3 b/docs/libcurl/opts/CURLINFO_LASTSOCKET.3
index e766e4b2..f4a7e9d4 100644
--- a/docs/libcurl/opts/CURLINFO_LASTSOCKET.3
+++ b/docs/libcurl/opts/CURLINFO_LASTSOCKET.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_LASTSOCKET 3 "May 06, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_LASTSOCKET 3 "May 06, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_LASTSOCKET \- get the last socket used
diff --git a/docs/libcurl/opts/CURLINFO_LOCAL_IP.3 b/docs/libcurl/opts/CURLINFO_LOCAL_IP.3
index 928fe2c3..fc6f93d2 100644
--- a/docs/libcurl/opts/CURLINFO_LOCAL_IP.3
+++ b/docs/libcurl/opts/CURLINFO_LOCAL_IP.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_LOCAL_IP 3 "May 05, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_LOCAL_IP 3 "May 05, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_LOCAL_IP \- get local IP address of last connection
diff --git a/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3 b/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3
index 6914d817..fdb0402d 100644
--- a/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3
+++ b/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_LOCAL_PORT 3 "March 16, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_LOCAL_PORT 3 "March 16, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_LOCAL_PORT \- get the latest local port number
diff --git a/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3 b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
index 6900d171..d9121312 100644
--- a/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_NAMELOOKUP_TIME 3 "May 17, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_NAMELOOKUP_TIME 3 "May 17, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_NAMELOOKUP_TIME \- get the name lookup time
diff --git a/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3 b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3
index 700a80fc..ec760ef9 100644
--- a/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_NAMELOOKUP_TIME_T 3 "May 17, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_NAMELOOKUP_TIME_T 3 "May 17, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_NAMELOOKUP_TIME_T \- get the name lookup time in microseconds
diff --git a/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3 b/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3
index ecd66e80..18b08ef8 100644
--- a/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3
+++ b/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_NUM_CONNECTS 3 "May 06, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_NUM_CONNECTS 3 "May 06, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_NUM_CONNECTS \- get number of created connections
diff --git a/docs/libcurl/opts/CURLINFO_OS_ERRNO.3 b/docs/libcurl/opts/CURLINFO_OS_ERRNO.3
index f34a67bc..3cb4bb08 100644
--- a/docs/libcurl/opts/CURLINFO_OS_ERRNO.3
+++ b/docs/libcurl/opts/CURLINFO_OS_ERRNO.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_OS_ERRNO 3 "November 07, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_OS_ERRNO 3 "November 07, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_OS_ERRNO \- get errno number from last connect failure
diff --git a/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3 b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
index 71e37a96..349d6f1d 100644
--- a/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PRETRANSFER_TIME 3 "May 17, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_PRETRANSFER_TIME 3 "May 17, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PRETRANSFER_TIME \- get the time until the file transfer start
diff --git a/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3 b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3
index 7c308297..3ff7109a 100644
--- a/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PRETRANSFER_TIME_T 3 "May 17, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_PRETRANSFER_TIME_T 3 "May 17, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PRETRANSFER_TIME_T \- get the time until the file transfer start
diff --git a/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3 b/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3
index 6b57c550..ea8d736e 100644
--- a/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3
+++ b/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PRIMARY_IP 3 "March 22, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_PRIMARY_IP 3 "March 22, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PRIMARY_IP \- get IP address of last connection
diff --git a/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3 b/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3
index c90f87f5..22fb2880 100644
--- a/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3
+++ b/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PRIMARY_PORT 3 "May 06, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_PRIMARY_PORT 3 "May 06, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PRIMARY_PORT \- get the latest destination port number
diff --git a/docs/libcurl/opts/CURLINFO_PRIVATE.3 b/docs/libcurl/opts/CURLINFO_PRIVATE.3
index 7fc6efce..09e37ca9 100644
--- a/docs/libcurl/opts/CURLINFO_PRIVATE.3
+++ b/docs/libcurl/opts/CURLINFO_PRIVATE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PRIVATE 3 "May 05, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_PRIVATE 3 "May 05, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PRIVATE \- get the private pointer
diff --git a/docs/libcurl/opts/CURLINFO_PROTOCOL.3 b/docs/libcurl/opts/CURLINFO_PROTOCOL.3
index 3f98da8b..cbe1211d 100644
--- a/docs/libcurl/opts/CURLINFO_PROTOCOL.3
+++ b/docs/libcurl/opts/CURLINFO_PROTOCOL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PROTOCOL 3 "April 27, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_PROTOCOL 3 "April 27, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PROTOCOL \- get the protocol used in the connection
diff --git a/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3 b/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3
index 3d380392..6bfbf153 100644
--- a/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3
+++ b/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PROXYAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_PROXYAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PROXYAUTH_AVAIL \- get available HTTP proxy authentication methods
diff --git a/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3 b/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3
index 0e25634c..4bd9603b 100644
--- a/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3
+++ b/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PROXY_SSL_VERIFYRESULT \- get the result of the proxy certificate verification
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3
index 58783102..b5bb1888 100644
--- a/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_REDIRECT_COUNT 3 "May 05, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_REDIRECT_COUNT 3 "May 05, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_REDIRECT_COUNT \- get the number of redirects
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
index 3d685665..f33fa456 100644
--- a/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_REDIRECT_TIME 3 "May 17, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_REDIRECT_TIME 3 "May 17, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_REDIRECT_TIME \- get the time for all redirection steps
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3
index d7837f6e..c79a896b 100644
--- a/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_REDIRECT_TIME_T 3 "May 17, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_REDIRECT_TIME_T 3 "May 17, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_REDIRECT_TIME_T \- get the time for all redirection steps
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3
index 3f4cb1c9..5319044a 100644
--- a/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_REDIRECT_URL 3 "June 24, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_REDIRECT_URL 3 "June 24, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_REDIRECT_URL \- get the URL a redirect would go to
diff --git a/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3 b/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3
index 7ac0f8b1..16747311 100644
--- a/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3
+++ b/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_REQUEST_SIZE 3 "May 06, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_REQUEST_SIZE 3 "May 06, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_REQUEST_SIZE \- get size of sent request
diff --git a/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3 b/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3
index 9e68a18f..6b18edc6 100644
--- a/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3
+++ b/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_RESPONSE_CODE 3 "February 03, 2016" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_RESPONSE_CODE 3 "February 03, 2016" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_RESPONSE_CODE \- get the last response code
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3 b/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3
index f44c0f36..9cc04a80 100644
--- a/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3
+++ b/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_RTSP_CLIENT_CSEQ \- get the next RTSP client CSeq
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3 b/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3
index 318ba5d0..8d4de170 100644
--- a/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3
+++ b/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_RTSP_CSEQ_RECV 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_RTSP_CSEQ_RECV 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_RTSP_CSEQ_RECV \- get the recently received CSeq
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3 b/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3
index 1e4d84ee..936ae83d 100644
--- a/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3
+++ b/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_RTSP_SERVER_CSEQ \- get the next RTSP server CSeq
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3 b/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3
index ad053943..a8591c3d 100644
--- a/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3
+++ b/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_RTSP_SESSION_ID \- get RTSP session ID
diff --git a/docs/libcurl/opts/CURLINFO_SCHEME.3 b/docs/libcurl/opts/CURLINFO_SCHEME.3
index bf685a63..2c6c4291 100644
--- a/docs/libcurl/opts/CURLINFO_SCHEME.3
+++ b/docs/libcurl/opts/CURLINFO_SCHEME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SCHEME 3 "April 08, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_SCHEME 3 "April 08, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SCHEME \- get the URL scheme (sometimes called protocol) used in the connection
diff --git a/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3 b/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3
index 5ab87e50..0ef6ca32 100644
--- a/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SIZE_DOWNLOAD 3 "June 15, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_SIZE_DOWNLOAD 3 "June 15, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SIZE_DOWNLOAD \- get the number of downloaded bytes
diff --git a/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3 b/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3
index a92b854d..629e65ae 100644
--- a/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SIZE_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_SIZE_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SIZE_DOWNLOAD_T \- get the number of downloaded bytes
diff --git a/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3 b/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3
index 5ae824d5..b0008ea7 100644
--- a/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SIZE_UPLOAD 3 "June 15, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_SIZE_UPLOAD 3 "June 15, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SIZE_UPLOAD \- get the number of uploaded bytes
diff --git a/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3 b/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3
index d4fce60a..5ced02c1 100644
--- a/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SIZE_UPLOAD_T 3 "March 31, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_SIZE_UPLOAD_T 3 "March 31, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SIZE_UPLOAD_T \- get the number of uploaded bytes
diff --git a/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3 b/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3
index 03815766..4e4b222d 100644
--- a/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SPEED_DOWNLOAD 3 "June 15, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_SPEED_DOWNLOAD 3 "June 15, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SPEED_DOWNLOAD \- get download speed
diff --git a/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3 b/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3
index 1066c682..168f1561 100644
--- a/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SPEED_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_SPEED_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SPEED_DOWNLOAD_T \- get download speed
diff --git a/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3 b/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3
index f876fbb6..e49d3980 100644
--- a/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SPEED_UPLOAD 3 "June 15, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_SPEED_UPLOAD 3 "June 15, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SPEED_UPLOAD \- get upload speed
diff --git a/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3 b/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3
index 7e968b8b..63da414d 100644
--- a/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SPEED_UPLOAD_T 3 "March 31, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_SPEED_UPLOAD_T 3 "March 31, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SPEED_UPLOAD_T \- get upload speed
diff --git a/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3 b/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3
index 2e67a12e..e3194a9f 100644
--- a/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3
+++ b/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SSL_ENGINES 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_SSL_ENGINES 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SSL_ENGINES \- get an slist of OpenSSL crypto-engines
diff --git a/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3 b/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3
index 2a8caaf5..66faaedf 100644
--- a/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3
+++ b/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SSL_VERIFYRESULT 3 "March 21, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_SSL_VERIFYRESULT 3 "March 21, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SSL_VERIFYRESULT \- get the result of the certificate verification
diff --git a/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3 b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
index 919709da..f460c770 100644
--- a/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_STARTTRANSFER_TIME 3 "May 17, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_STARTTRANSFER_TIME 3 "May 17, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_STARTTRANSFER_TIME \- get the time until the first byte is received
diff --git a/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3 b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3
index 46724d7a..c2793f1c 100644
--- a/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_STARTTRANSFER_TIME_T 3 "May 17, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_STARTTRANSFER_TIME_T 3 "May 17, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_STARTTRANSFER_TIME_T \- get the time until the first byte is received
diff --git a/docs/libcurl/opts/CURLINFO_TLS_SESSION.3 b/docs/libcurl/opts/CURLINFO_TLS_SESSION.3
index b8ed4027..34f18fb8 100644
--- a/docs/libcurl/opts/CURLINFO_TLS_SESSION.3
+++ b/docs/libcurl/opts/CURLINFO_TLS_SESSION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_TLS_SESSION 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_TLS_SESSION 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_TLS_SESSION \- get TLS session info
diff --git a/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3 b/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3
index 07d5c0f4..7033f61f 100644
--- a/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3
+++ b/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_TLS_SSL_PTR 3 "January 29, 2019" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_TLS_SSL_PTR 3 "January 29, 2019" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_TLS_SESSION, CURLINFO_TLS_SSL_PTR \- get TLS session info
diff --git a/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3 b/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
index c2a8b34b..122f0bf3 100644
--- a/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_TOTAL_TIME 3 "May 17, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_TOTAL_TIME 3 "May 17, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_TOTAL_TIME \- get total time of previous transfer
diff --git a/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3 b/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3
index 854f6545..9037104b 100644
--- a/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_TOTAL_TIME_T 3 "May 17, 2018" "libcurl 7.64.0" "curl_easy_getinfo options"
+.TH CURLINFO_TOTAL_TIME_T 3 "May 17, 2018" "libcurl 7.64.1" "curl_easy_getinfo options"
.SH NAME
CURLINFO_TOTAL_TIME_T \- get total time of previous transfer in microseconds
diff --git a/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
index fbe094ec..810eea17 100644
--- a/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
+++ b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "May 27, 2017" "libcurl 7.64.0" "curl_multi_setopt options"
+.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "May 27, 2017" "libcurl 7.64.1" "curl_multi_setopt options"
.SH NAME
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE \- chunk length threshold for pipelining
diff --git a/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
index 9cd599ec..7ae02d63 100644
--- a/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
+++ b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "May 27, 2017" "libcurl 7.64.0" "curl_multi_setopt options"
+.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "May 27, 2017" "libcurl 7.64.1" "curl_multi_setopt options"
.SH NAME
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE \- size threshold for pipelining penalty
diff --git a/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3 b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3
index 814bb1e2..967709a4 100644
--- a/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3
+++ b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_MAXCONNECTS 3 "September 23, 2018" "libcurl 7.64.0" "curl_multi_setopt options"
+.TH CURLMOPT_MAXCONNECTS 3 "September 23, 2018" "libcurl 7.64.1" "curl_multi_setopt options"
.SH NAME
CURLMOPT_MAXCONNECTS \- set size of connection cache
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3 b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
index 54905a64..cbb16fa2 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
+++ b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "May 27, 2017" "libcurl 7.64.0" "curl_multi_setopt options"
+.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "May 27, 2017" "libcurl 7.64.1" "curl_multi_setopt options"
.SH NAME
CURLMOPT_MAX_HOST_CONNECTIONS \- set max number of connections to a single host
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 b/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3
index e5b5057e..f35c52ad 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3
+++ b/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "May 27, 2017" "libcurl 7.64.0" "curl_multi_setopt options"
+.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "May 27, 2017" "libcurl 7.64.1" "curl_multi_setopt options"
.SH NAME
CURLMOPT_MAX_PIPELINE_LENGTH \- maximum number of requests in a pipeline
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3 b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
index 25f5390a..72e3254a 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
+++ b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "May 27, 2017" "libcurl 7.64.0" "curl_multi_setopt options"
+.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "May 27, 2017" "libcurl 7.64.1" "curl_multi_setopt options"
.SH NAME
CURLMOPT_MAX_TOTAL_CONNECTIONS \- max simultaneously open connections
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING.3
index 0c56d4d4..caeb2f62 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_PIPELINING 3 "September 05, 2018" "libcurl 7.64.0" "curl_multi_setopt options"
+.TH CURLMOPT_PIPELINING 3 "March 25, 2019" "libcurl 7.64.1" "curl_multi_setopt options"
.SH NAME
CURLMOPT_PIPELINING \- enable HTTP pipelining and multiplexing
@@ -64,7 +64,7 @@ This bit is deprecated and has no effect since version 7.62.0.
If this bit is set, libcurl will try to multiplex the new transfer over an
existing connection if possible. This requires HTTP/2.
.SH DEFAULT
-Since 7.62.0, \fBCURLPIPE_MULTIPLEX\bP is enabled by default.
+Since 7.62.0, \fBCURLPIPE_MULTIPLEX\fP is enabled by default.
Before that, default was \fBCURLPIPE_NOTHING\fP.
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
index 45ff9bd4..1da208c9 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_PIPELINING_SERVER_BL 3 "September 23, 2018" "libcurl 7.64.0" "curl_multi_setopt options"
+.TH CURLMOPT_PIPELINING_SERVER_BL 3 "September 23, 2018" "libcurl 7.64.1" "curl_multi_setopt options"
.SH NAME
CURLMOPT_PIPELINING_SERVER_BL \- pipelining server blacklist
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
index 90bf853d..5b24a1b3 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_PIPELINING_SITE_BL 3 "February 03, 2016" "libcurl 7.64.0" "curl_multi_setopt options"
+.TH CURLMOPT_PIPELINING_SITE_BL 3 "February 03, 2016" "libcurl 7.64.1" "curl_multi_setopt options"
.SH NAME
CURLMOPT_PIPELINING_SITE_BL \- pipelining host blacklist
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHDATA.3 b/docs/libcurl/opts/CURLMOPT_PUSHDATA.3
index f37df33c..f514cef5 100644
--- a/docs/libcurl/opts/CURLMOPT_PUSHDATA.3
+++ b/docs/libcurl/opts/CURLMOPT_PUSHDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_PUSHDATA 3 "May 27, 2017" "libcurl 7.64.0" "curl_multi_setopt options"
+.TH CURLMOPT_PUSHDATA 3 "May 27, 2017" "libcurl 7.64.1" "curl_multi_setopt options"
.SH NAME
CURLMOPT_PUSHDATA \- pointer to pass to push callback
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
index b6cc4193..c6a972a8 100644
--- a/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
+++ b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_PUSHFUNCTION 3 "February 03, 2016" "libcurl 7.64.0" "curl_multi_setopt options"
+.TH CURLMOPT_PUSHFUNCTION 3 "February 03, 2016" "libcurl 7.64.1" "curl_multi_setopt options"
.SH NAME
CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3 b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3
index db1b6990..84cb64d4 100644
--- a/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3
+++ b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_SOCKETDATA 3 "May 31, 2017" "libcurl 7.64.0" "curl_multi_setopt options"
+.TH CURLMOPT_SOCKETDATA 3 "May 31, 2017" "libcurl 7.64.1" "curl_multi_setopt options"
.SH NAME
CURLMOPT_SOCKETDATA \- custom pointer passed to the socket callback
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
index e3b4d5ed..91f0552e 100644
--- a/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
+++ b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_SOCKETFUNCTION 3 "September 23, 2018" "libcurl 7.64.0" "curl_multi_setopt options"
+.TH CURLMOPT_SOCKETFUNCTION 3 "September 23, 2018" "libcurl 7.64.1" "curl_multi_setopt options"
.SH NAME
CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERDATA.3 b/docs/libcurl/opts/CURLMOPT_TIMERDATA.3
index 15056b34..7b6f5742 100644
--- a/docs/libcurl/opts/CURLMOPT_TIMERDATA.3
+++ b/docs/libcurl/opts/CURLMOPT_TIMERDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_TIMERDATA 3 "May 27, 2017" "libcurl 7.64.0" "curl_multi_setopt options"
+.TH CURLMOPT_TIMERDATA 3 "May 27, 2017" "libcurl 7.64.1" "curl_multi_setopt options"
.SH NAME
CURLMOPT_TIMERDATA \- custom pointer to pass to timer callback
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
index 5abdf9f3..6b2409bf 100644
--- a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
+++ b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_TIMERFUNCTION 3 "May 27, 2017" "libcurl 7.64.0" "curl_multi_setopt options"
+.TH CURLMOPT_TIMERFUNCTION 3 "February 22, 2019" "libcurl 7.64.1" "curl_multi_setopt options"
.SH NAME
CURLMOPT_TIMERFUNCTION \- set callback to receive timeout values
@@ -29,7 +29,7 @@ CURLMOPT_TIMERFUNCTION \- set callback to receive timeout values
#include <curl/curl.h>
int timer_callback(CURLM *multi, /* multi handle */
- long timeout_ms, /* see above */
+ long timeout_ms, /* timeout in number of ms */
void *userp); /* private callback pointer */
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_TIMERFUNCTION, timer_callback);
@@ -41,17 +41,15 @@ Certain features, such as timeouts and retries, require you to call libcurl
even when there is no activity on the file descriptors.
Your callback function \fBtimer_callback\fP should install a non-repeating
-timer with an interval of \fBtimeout_ms\fP. Each time that timer fires, call
+timer with an interval of \fBtimeout_ms\fP. When time that timer fires, call
either \fIcurl_multi_socket_action(3)\fP or \fIcurl_multi_perform(3)\fP,
depending on which interface you use.
-A \fBtimeout_ms\fP value of -1 means you should delete your timer.
+A \fBtimeout_ms\fP value of -1 passed to this callback means you should delete
+the timer. All other values are valid expire times in number of milliseconds.
-A \fBtimeout_ms\fP value of 0 means you should call
-\fIcurl_multi_socket_action(3)\fP or \fIcurl_multi_perform(3)\fP (once) as soon
-as possible.
-
-\fBtimer_callback\fP will only be called when the \fBtimeout_ms\fP changes.
+The \fBtimer_callback\fP will only be called when the timeout expire time is
+changed.
The \fBuserp\fP pointer is set with \fICURLMOPT_TIMERDATA(3)\fP.
diff --git a/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3 b/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3
index 3a4fba5f..83e3ba1b 100644
--- a/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3
+++ b/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "January 09, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "January 09, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_ABSTRACT_UNIX_SOCKET \- set an abstract Unix domain socket
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
index 247216de..13a6c94f 100644
--- a/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "March 06, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "March 06, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_ACCEPTTIMEOUT_MS \- timeout waiting for FTP server to connect back
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3 b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
index d6b3aaf0..5c371733 100644
--- a/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
+++ b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ACCEPT_ENCODING 3 "August 27, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_ACCEPT_ENCODING 3 "August 27, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_ACCEPT_ENCODING \- enables automatic decompression of HTTP downloads
diff --git a/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3 b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3
index 04d62074..21b758d3 100644
--- a/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3
+++ b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ADDRESS_SCOPE 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_ADDRESS_SCOPE 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_ADDRESS_SCOPE \- set scope for local IPv6 addresses
diff --git a/docs/libcurl/opts/CURLOPT_ALTSVC.3 b/docs/libcurl/opts/CURLOPT_ALTSVC.3
new file mode 100644
index 00000000..19fb263a
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_ALTSVC.3
@@ -0,0 +1,62 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_ALTSVC 3 "March 03, 2019" "libcurl 7.64.1" "curl_easy_setopt options"
+
+.SH NAME
+CURLOPT_ALTSVC \- set alt-svc cache file name
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ALTSVC, char *filename);
+.fi
+.SH EXPERIMENTAL
+Warning: this feature is early code and is marked as experimental. It can only
+be enabled by explictly telling configure with \fB--enable-alt-svc\fP. You are
+advised to not ship this in production before the experimental label is
+removed.
+.SH DESCRIPTION
+Pass in a pointer to a \fIfilename\fP to instruct libcurl to use that file as
+the Alt-Svc cache to read existing cache contents from and possibly also write
+it back to a after a transfer, unless \fBCURLALTSVC_READONLYFILE\fP is set in
+\fICURLOPT_ALTSVC_CTRL(3)\fP.
+.SH DEFAULT
+NULL. The alt-svc cache is not read nor written to file.
+.SH PROTOCOLS
+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);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.64.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_ALTSVC_CTRL "(3), " CURLOPT_CONNECT_TO "(3), " CURLOPT_RESOLVE "(3), "
+.BR CURLOPT_COOKIEFILE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3 b/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3
new file mode 100644
index 00000000..9415f8bf
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3
@@ -0,0 +1,93 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_ALTSVC_CTRL 3 "March 03, 2019" "libcurl 7.64.1" "curl_easy_setopt options"
+
+.SH NAME
+CURLOPT_ALTSVC_CTRL \- control alt-svc behavior
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+#define CURLALTSVC_IMMEDIATELY (1<<0)
+#define CURLALTSVC_ALTUSED (1<<1)
+#define CURLALTSVC_READONLYFILE (1<<2)
+#define CURLALTSVC_H1 (1<<3)
+#define CURLALTSVC_H2 (1<<4)
+#define CURLALTSVC_H3 (1<<5)
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ALTSVC_CTRL, long bitmask);
+.fi
+.SH EXPERIMENTAL
+Warning: this feature is early code and is marked as experimental. It can only
+be enabled by explictly telling configure with \fB--enable-alt-svc\fP. You are
+advised to not ship this in production before the experimental label is
+removed.
+.SH DESCRIPTION
+Populate the long \fIbitmask\fP with the correct set of features to instruct
+libcurl how to handle Alt-Svc for the transfers using this handle.
+
+libcurl will only accept Alt-Svc headers over a secure transport, meaning
+HTTPS. It will also only complete a request to an alternative origin if that
+origin is properly hosted over HTTPS. These requirements are there to make
+sure both the source and the destination are legitimate.
+
+Setting any bit will enable the alt-svc engine.
+.IP "CURLALTSVC_IMMEDIATELY"
+If an Alt-Svc: header is received, this instructs libcurl to switch to one of
+those alternatives asap rather than to save it and use for the next request.
+.IP "CURLALTSVC_ALTUSED"
+Issue the Alt-Used: header in all requests that have been redirected by
+alt-svc.
+.IP "CURLALTSVC_READONLYFILE"
+Do not write the alt-svc cache back to the file specified with
+\fICURLOPT_ALTSVC(3)\fP even if it gets updated. By default a file specified
+with that option will be read and written to as deemed necessary.
+.IP "CURLALTSVC_H1"
+Accept alternative services offered over HTTP/1.1.
+.IP "CURLALTSVC_H2"
+Accept alternative services offered over HTTP/2. This will only be used if
+libcurl was also built to actually support HTTP/2, otherwise this bit will be
+ignored.
+.IP "CURLALTSVC_H3"
+Accept alternative services offered over HTTP/3. This will only be used if
+libcurl was also built to actually support HTTP/3, otherwise this bit will be
+ignored.
+.SH DEFAULT
+0. No Alt-Svc treatment.
+.SH PROTOCOLS
+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);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.64.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_ALTSVC "(3), " CURLOPT_CONNECT_TO "(3), " CURLOPT_RESOLVE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_APPEND.3 b/docs/libcurl/opts/CURLOPT_APPEND.3
index 6383dc6b..7034f8eb 100644
--- a/docs/libcurl/opts/CURLOPT_APPEND.3
+++ b/docs/libcurl/opts/CURLOPT_APPEND.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_APPEND 3 "March 06, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_APPEND 3 "March 06, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_APPEND \- enable appending to the remote file
diff --git a/docs/libcurl/opts/CURLOPT_AUTOREFERER.3 b/docs/libcurl/opts/CURLOPT_AUTOREFERER.3
index f5d9990b..1d8a19be 100644
--- a/docs/libcurl/opts/CURLOPT_AUTOREFERER.3
+++ b/docs/libcurl/opts/CURLOPT_AUTOREFERER.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_AUTOREFERER 3 "May 05, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_AUTOREFERER 3 "May 05, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_AUTOREFERER \- automatically update the referer header
diff --git a/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3 b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
index 36fe11ce..a359361b 100644
--- a/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_BUFFERSIZE 3 "May 13, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_BUFFERSIZE 3 "May 13, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_BUFFERSIZE \- set preferred receive buffer size
diff --git a/docs/libcurl/opts/CURLOPT_CAINFO.3 b/docs/libcurl/opts/CURLOPT_CAINFO.3
index b370f058..cb216c05 100644
--- a/docs/libcurl/opts/CURLOPT_CAINFO.3
+++ b/docs/libcurl/opts/CURLOPT_CAINFO.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CAINFO 3 "January 29, 2019" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_CAINFO 3 "January 29, 2019" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_CAINFO \- path to Certificate Authority (CA) bundle
diff --git a/docs/libcurl/opts/CURLOPT_CAPATH.3 b/docs/libcurl/opts/CURLOPT_CAPATH.3
index 04c1595f..a60fa06c 100644
--- a/docs/libcurl/opts/CURLOPT_CAPATH.3
+++ b/docs/libcurl/opts/CURLOPT_CAPATH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CAPATH 3 "September 10, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_CAPATH 3 "September 10, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_CAPATH \- specify directory holding CA certificates
diff --git a/docs/libcurl/opts/CURLOPT_CERTINFO.3 b/docs/libcurl/opts/CURLOPT_CERTINFO.3
index 37f80f3e..1549926b 100644
--- a/docs/libcurl/opts/CURLOPT_CERTINFO.3
+++ b/docs/libcurl/opts/CURLOPT_CERTINFO.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CERTINFO 3 "January 29, 2019" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_CERTINFO 3 "January 29, 2019" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_CERTINFO \- request SSL certificate information
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3
index f42917b8..c1637adf 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "November 07, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "November 07, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_CHUNK_BGN_FUNCTION \- callback before a transfer with FTP wildcardmatch
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3 b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
index e519be7a..42c76e20 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CHUNK_DATA 3 "November 07, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_CHUNK_DATA 3 "November 07, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_CHUNK_DATA \- custom pointer to the FTP chunk callbacks
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3
index 78c6c531..28844335 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CHUNK_END_FUNCTION 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_CHUNK_END_FUNCTION 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_CHUNK_END_FUNCTION \- callback after a transfer with FTP wildcardmatch
diff --git a/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3 b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3
index a53317e4..5143c679 100644
--- a/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3
+++ b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CLOSESOCKETDATA 3 "November 07, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_CLOSESOCKETDATA 3 "November 07, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_CLOSESOCKETDATA \- pointer passed to the socket close callback
diff --git a/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3 b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3
index 1d4bea5b..5b5651f0 100644
--- a/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CLOSESOCKETFUNCTION 3 "November 07, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_CLOSESOCKETFUNCTION 3 "November 07, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_CLOSESOCKETFUNCTION \- callback to socket close replacement function
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3 b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
index af9e0677..fbb55cad 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONNECTTIMEOUT 3 "October 03, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_CONNECTTIMEOUT 3 "October 03, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONNECTTIMEOUT \- timeout for the connect phase
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
index f99a2ce2..dc424aef 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONNECTTIMEOUT_MS 3 "September 23, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_CONNECTTIMEOUT_MS 3 "September 23, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONNECTTIMEOUT_MS \- timeout for the connect phase
diff --git a/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3 b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3
index aee073a0..174e86cc 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONNECT_ONLY 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_CONNECT_ONLY 3 "February 18, 2019" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONNECT_ONLY \- stop when connected to target server
@@ -38,6 +38,9 @@ useful when used with the \fICURLINFO_ACTIVESOCKET(3)\fP option to
\fIcurl_easy_getinfo(3)\fP as the library can set up the connection and then
the application can obtain the most recently used socket for special data
transfers.
+
+Transfers marked connect only will not reuse any existing connections and
+connections marked connect only will not be allowed to get reused.
.SH DEFAULT
0
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_CONNECT_TO.3 b/docs/libcurl/opts/CURLOPT_CONNECT_TO.3
index 98713adf..3ea60b6b 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECT_TO.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECT_TO.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONNECT_TO 3 "May 05, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_CONNECT_TO 3 "May 05, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONNECT_TO \- Connect to a specific host and port instead of the URL's host and port
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
index 63ed2987..78d25776 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONV_FROM_NETWORK_FUNCTION \- convert data from network to host encoding
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3
index 0b214f63..9096ce37 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONV_FROM_UTF8_FUNCTION \- convert data from UTF8 to host encoding
diff --git a/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
index b0f89e7c..2b510c1b 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONV_TO_NETWORK_FUNCTION \- convert data to network from host encoding
diff --git a/docs/libcurl/opts/CURLOPT_COOKIE.3 b/docs/libcurl/opts/CURLOPT_COOKIE.3
index 9966b27a..e1540315 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIE.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_COOKIE 3 "December 21, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_COOKIE 3 "December 21, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_COOKIE \- set contents of HTTP Cookie header
diff --git a/docs/libcurl/opts/CURLOPT_COOKIEFILE.3 b/docs/libcurl/opts/CURLOPT_COOKIEFILE.3
index a6ab4e15..8d643cfb 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIEFILE.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIEFILE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_COOKIEFILE 3 "March 13, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_COOKIEFILE 3 "March 13, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_COOKIEFILE \- file name to read cookies from
diff --git a/docs/libcurl/opts/CURLOPT_COOKIEJAR.3 b/docs/libcurl/opts/CURLOPT_COOKIEJAR.3
index b22bea8c..b45e0493 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIEJAR.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIEJAR.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_COOKIEJAR 3 "May 05, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_COOKIEJAR 3 "May 05, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_COOKIEJAR \- file name to store cookies to
diff --git a/docs/libcurl/opts/CURLOPT_COOKIELIST.3 b/docs/libcurl/opts/CURLOPT_COOKIELIST.3
index 5f7bf942..1b145785 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIELIST.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIELIST.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_COOKIELIST 3 "April 26, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_COOKIELIST 3 "April 26, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_COOKIELIST \- add to or manipulate cookies held in memory
diff --git a/docs/libcurl/opts/CURLOPT_COOKIESESSION.3 b/docs/libcurl/opts/CURLOPT_COOKIESESSION.3
index 6f13f2f4..4dcb3665 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIESESSION.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIESESSION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_COOKIESESSION 3 "May 05, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_COOKIESESSION 3 "May 05, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_COOKIESESSION \- start a new cookie session
diff --git a/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3 b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3
index c413f51f..8b963fcf 100644
--- a/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3
+++ b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_COPYPOSTFIELDS 3 "February 03, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_COPYPOSTFIELDS 3 "February 03, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_COPYPOSTFIELDS \- have libcurl copy data to POST
diff --git a/docs/libcurl/opts/CURLOPT_CRLF.3 b/docs/libcurl/opts/CURLOPT_CRLF.3
index a8ca4f7f..c024ba69 100644
--- a/docs/libcurl/opts/CURLOPT_CRLF.3
+++ b/docs/libcurl/opts/CURLOPT_CRLF.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CRLF 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_CRLF 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_CRLF \- enable/disable CRLF conversion
diff --git a/docs/libcurl/opts/CURLOPT_CRLFILE.3 b/docs/libcurl/opts/CURLOPT_CRLFILE.3
index 4dd6ceda..30db545d 100644
--- a/docs/libcurl/opts/CURLOPT_CRLFILE.3
+++ b/docs/libcurl/opts/CURLOPT_CRLFILE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CRLFILE 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_CRLFILE 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_CRLFILE \- specify a Certificate Revocation List file
diff --git a/docs/libcurl/opts/CURLOPT_CURLU.3 b/docs/libcurl/opts/CURLOPT_CURLU.3
index a4e64942..03ecb78d 100644
--- a/docs/libcurl/opts/CURLOPT_CURLU.3
+++ b/docs/libcurl/opts/CURLOPT_CURLU.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CURLU 3 "January 16, 2019" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_CURLU 3 "January 16, 2019" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_CURLU \- set URL with CURLU *
diff --git a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3 b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
index 83cd6135..3b735ca7 100644
--- a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
+++ b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CUSTOMREQUEST 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_CUSTOMREQUEST 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_CUSTOMREQUEST \- custom string for request
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGDATA.3 b/docs/libcurl/opts/CURLOPT_DEBUGDATA.3
index d8e4f5f0..321de515 100644
--- a/docs/libcurl/opts/CURLOPT_DEBUGDATA.3
+++ b/docs/libcurl/opts/CURLOPT_DEBUGDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DEBUGDATA 3 "February 03, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_DEBUGDATA 3 "February 03, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_DEBUGDATA \- custom pointer for debug callback
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3 b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3
index b1e557e4..176f6fbe 100644
--- a/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DEBUGFUNCTION 3 "October 06, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_DEBUGFUNCTION 3 "October 06, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_DEBUGFUNCTION \- debug callback
diff --git a/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3 b/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3
index 869f2da4..dc785458 100644
--- a/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3
+++ b/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DEFAULT_PROTOCOL 3 "December 21, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_DEFAULT_PROTOCOL 3 "December 21, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_DEFAULT_PROTOCOL \- default protocol to use if the URL is missing a
diff --git a/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3 b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3
index 21ccc247..b1513137 100644
--- a/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3
+++ b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DIRLISTONLY 3 "May 05, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_DIRLISTONLY 3 "May 05, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_DIRLISTONLY \- ask for names only in a directory listing
diff --git a/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3 b/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3
index b8d780e9..e3d2c984 100644
--- a/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3
+++ b/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "February 25, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "February 25, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_DISALLOW_USERNAME_IN_URL \- disallow specifying username in the url
diff --git a/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3
index bf88cce9..bb3f01a2 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "December 09, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "December 09, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_CACHE_TIMEOUT \- set life-time for DNS cache entries
diff --git a/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3 b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3
index 2b78c78d..d2ac4cf4 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_INTERFACE 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_INTERFACE 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_INTERFACE \- set interface to speak DNS over
diff --git a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3 b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3
index f7435b2b..50cdba68 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_LOCAL_IP4 3 "December 10, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_LOCAL_IP4 3 "December 10, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_LOCAL_IP4 \- IPv4 address to bind DNS resolves to
diff --git a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3 b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3
index bb650104..2e3f25e7 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_LOCAL_IP6 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_LOCAL_IP6 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_LOCAL_IP6 \- IPv6 address to bind DNS resolves to
diff --git a/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3 b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3
index e8c92245..03ac41f3 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_SERVERS 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_SERVERS 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_SERVERS \- set preferred DNS servers
diff --git a/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3 b/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3
index b3706384..437a8773 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "March 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "March 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_SHUFFLE_ADDRESSES \- Shuffle addresses when a hostname returns more than one
diff --git a/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3 b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3
index b31d3185..b80aa9b7 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_USE_GLOBAL_CACHE \- enable/disable global DNS cache
diff --git a/docs/libcurl/opts/CURLOPT_DOH_URL.3 b/docs/libcurl/opts/CURLOPT_DOH_URL.3
index d4d47029..07bff696 100644
--- a/docs/libcurl/opts/CURLOPT_DOH_URL.3
+++ b/docs/libcurl/opts/CURLOPT_DOH_URL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DOH_URL 3 "September 06, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_DOH_URL 3 "September 06, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_DOH_URL \- provide the DNS-over-HTTPS URL
diff --git a/docs/libcurl/opts/CURLOPT_EGDSOCKET.3 b/docs/libcurl/opts/CURLOPT_EGDSOCKET.3
index 3310e53e..6ff0e28f 100644
--- a/docs/libcurl/opts/CURLOPT_EGDSOCKET.3
+++ b/docs/libcurl/opts/CURLOPT_EGDSOCKET.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_EGDSOCKET 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_EGDSOCKET 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_EGDSOCKET \- set EGD socket path
diff --git a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3 b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
index b9b5049d..99d2be56 100644
--- a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
+++ b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ERRORBUFFER 3 "March 13, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_ERRORBUFFER 3 "March 13, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_ERRORBUFFER \- set error buffer for error messages
diff --git a/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3
index 2657ebc3..59592d10 100644
--- a/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_EXPECT_100_TIMEOUT_MS \- timeout for Expect: 100-continue response
diff --git a/docs/libcurl/opts/CURLOPT_FAILONERROR.3 b/docs/libcurl/opts/CURLOPT_FAILONERROR.3
index a6580ea6..1cdeb9db 100644
--- a/docs/libcurl/opts/CURLOPT_FAILONERROR.3
+++ b/docs/libcurl/opts/CURLOPT_FAILONERROR.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FAILONERROR 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_FAILONERROR 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_FAILONERROR \- request failure on HTTP response >= 400
diff --git a/docs/libcurl/opts/CURLOPT_FILETIME.3 b/docs/libcurl/opts/CURLOPT_FILETIME.3
index ee0eb8ee..371574e4 100644
--- a/docs/libcurl/opts/CURLOPT_FILETIME.3
+++ b/docs/libcurl/opts/CURLOPT_FILETIME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FILETIME 3 "April 03, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_FILETIME 3 "April 03, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_FILETIME \- get the modification time of the remote resource
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3 b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
index 3341b122..e0105ced 100644
--- a/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FNMATCH_DATA 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_FNMATCH_DATA 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_FNMATCH_DATA \- custom pointer to fnmatch callback
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3
index 93de55aa..3c0e09f8 100644
--- a/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FNMATCH_FUNCTION 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_FNMATCH_FUNCTION 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_FNMATCH_FUNCTION \- wildcard matching function callback
diff --git a/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3 b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
index c7032df4..fc49834a 100644
--- a/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
+++ b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FOLLOWLOCATION 3 "May 02, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_FOLLOWLOCATION 3 "May 02, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects
diff --git a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3
index 36be66f6..199fa47b 100644
--- a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3
+++ b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FORBID_REUSE 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_FORBID_REUSE 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_FORBID_REUSE \- make connection get closed at once after use
diff --git a/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3 b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3
index 06e773fe..42bf6983 100644
--- a/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3
+++ b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FRESH_CONNECT 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_FRESH_CONNECT 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_FRESH_CONNECT \- force a new connection to be used
diff --git a/docs/libcurl/opts/CURLOPT_FTPPORT.3 b/docs/libcurl/opts/CURLOPT_FTPPORT.3
index 85a7ec94..cf22af8f 100644
--- a/docs/libcurl/opts/CURLOPT_FTPPORT.3
+++ b/docs/libcurl/opts/CURLOPT_FTPPORT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTPPORT 3 "May 30, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_FTPPORT 3 "May 30, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTPPORT \- make FTP transfer active
diff --git a/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3 b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3
index 6ef01462..4b1d1a57 100644
--- a/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3
+++ b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTPSSLAUTH 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_FTPSSLAUTH 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTPSSLAUTH \- set order in which to attempt TLS vs SSL when using FTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3 b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3
index 176019d1..351f2914 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_ACCOUNT 3 "May 05, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_ACCOUNT 3 "May 05, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_ACCOUNT \- set account info for FTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3 b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3
index f8cc0d14..b280376c 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "May 05, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "May 05, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_ALTERNATIVE_TO_USER \- command to use instead of USER with FTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3 b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3
index 25457302..912a42ab 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "May 05, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "May 05, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_CREATE_MISSING_DIRS \- create missing dirs for FTP and SFTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3 b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3
index 4d0c5828..f4eff8ea 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_FILEMETHOD 3 "May 05, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_FILEMETHOD 3 "May 05, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_FILEMETHOD \- select directory traversing method for FTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3
index b25f064f..1ebd3216 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_RESPONSE_TIMEOUT 3 "October 03, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_RESPONSE_TIMEOUT 3 "October 03, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_RESPONSE_TIMEOUT \- time allowed to wait for FTP response
diff --git a/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3 b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3
index b43edc75..1e85f875 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_SKIP_PASV_IP 3 "May 05, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_SKIP_PASV_IP 3 "May 05, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_SKIP_PASV_IP \- ignore the IP address in the PASV response
diff --git a/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3 b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3
index 7ecac443..4a1262e2 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_SSL_CCC 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_SSL_CCC 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_SSL_CCC \- switch off SSL again with FTP after auth
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3
index 4b5bc018..c501dd37 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_USE_EPRT 3 "February 03, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_USE_EPRT 3 "February 03, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_USE_EPRT \- enable/disable use of EPRT with FTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3
index d999a6b1..3b7a9222 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_USE_EPSV 3 "May 05, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_USE_EPSV 3 "May 05, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_USE_EPSV \- enable/disable use of EPSV
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3
index adfdac4a..8bf86f0e 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_USE_PRET 3 "May 05, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_USE_PRET 3 "May 05, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_USE_PRET \- enable the PRET command
diff --git a/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3 b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3
index 47d47f4b..f459ddc1 100644
--- a/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3
+++ b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_GSSAPI_DELEGATION 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_GSSAPI_DELEGATION 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_GSSAPI_DELEGATION \- set allowed GSS-API delegation
diff --git a/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3
index 6ae969e4..19f0c354 100644
--- a/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "February 21, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "February 21, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS \- head start for ipv6 for happy eyeballs
diff --git a/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3 b/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3
index a4af150a..fe9d0783 100644
--- a/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3
+++ b/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HAPROXYPROTOCOL 3 "May 18, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_HAPROXYPROTOCOL 3 "May 18, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_HAPROXYPROTOCOL \- send HAProxy PROXY protocol v1 header
diff --git a/docs/libcurl/opts/CURLOPT_HEADER.3 b/docs/libcurl/opts/CURLOPT_HEADER.3
index 7e134933..32254b53 100644
--- a/docs/libcurl/opts/CURLOPT_HEADER.3
+++ b/docs/libcurl/opts/CURLOPT_HEADER.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HEADER 3 "October 03, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_HEADER 3 "October 03, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_HEADER \- pass headers to the data stream
diff --git a/docs/libcurl/opts/CURLOPT_HEADERDATA.3 b/docs/libcurl/opts/CURLOPT_HEADERDATA.3
index 6232c747..ee4b38f1 100644
--- a/docs/libcurl/opts/CURLOPT_HEADERDATA.3
+++ b/docs/libcurl/opts/CURLOPT_HEADERDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HEADERDATA 3 "May 05, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_HEADERDATA 3 "May 05, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_HEADERDATA \- pointer to pass to header callback
diff --git a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3 b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
index e6a3e227..68b70a8c 100644
--- a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HEADERFUNCTION 3 "November 22, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_HEADERFUNCTION 3 "November 22, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_HEADERFUNCTION \- callback that receives header data
diff --git a/docs/libcurl/opts/CURLOPT_HEADEROPT.3 b/docs/libcurl/opts/CURLOPT_HEADEROPT.3
index ebfe6507..34661d97 100644
--- a/docs/libcurl/opts/CURLOPT_HEADEROPT.3
+++ b/docs/libcurl/opts/CURLOPT_HEADEROPT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HEADEROPT 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_HEADEROPT 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_HEADEROPT \- set how to send HTTP headers
diff --git a/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3 b/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3
index 7b41e02b..a5bc2f9b 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTP09_ALLOWED 3 "December 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTP09_ALLOWED 3 "December 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTP09 \- allow HTTP/0.9 response
diff --git a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3 b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
index 15ecd9f7..eb272719 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTP200ALIASES 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTP200ALIASES 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTP200ALIASES \- specify alternative matches for HTTP 200 OK
diff --git a/docs/libcurl/opts/CURLOPT_HTTPAUTH.3 b/docs/libcurl/opts/CURLOPT_HTTPAUTH.3
index d2d680e6..a074b61b 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPAUTH.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPAUTH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTPAUTH 3 "June 15, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTPAUTH 3 "June 15, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTPAUTH \- set HTTP server authentication methods to try
diff --git a/docs/libcurl/opts/CURLOPT_HTTPGET.3 b/docs/libcurl/opts/CURLOPT_HTTPGET.3
index 2a8aef19..47745e8f 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPGET.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPGET.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTPGET 3 "May 21, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTPGET 3 "May 21, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTPGET \- ask for an HTTP GET request
diff --git a/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 b/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
index 955d8a58..894d64e2 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTPHEADER 3 "December 30, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTPHEADER 3 "December 30, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTPHEADER \- set custom HTTP headers
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPOST.3 b/docs/libcurl/opts/CURLOPT_HTTPPOST.3
index cfbd539b..449df3fd 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPPOST.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPPOST.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTPPOST 3 "September 02, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTPPOST 3 "September 02, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTPPOST \- specify the multipart formpost content
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3 b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
index c1614673..8772c52b 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTPPROXYTUNNEL 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTPPROXYTUNNEL 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTPPROXYTUNNEL \- tunnel through HTTP proxy
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3 b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3
index d8d5aa32..b048c8fe 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTP_CONTENT_DECODING 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTP_CONTENT_DECODING 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTP_CONTENT_DECODING \- enable/disable HTTP content decoding
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3 b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3
index f8324a5c..d75fe17c 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTP_TRANSFER_DECODING \- enable/disable HTTP transfer decoding
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3 b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
index 00585e63..7200a739 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTP_VERSION 3 "December 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTP_VERSION 3 "December 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTP_VERSION \- specify HTTP protocol version to use
diff --git a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3 b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
index a931dd5b..4ba77c6f 100644
--- a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
+++ b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "February 03, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "February 03, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_IGNORE_CONTENT_LENGTH \- ignore content length
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE.3 b/docs/libcurl/opts/CURLOPT_INFILESIZE.3
index ff640fc0..0144a2b4 100644
--- a/docs/libcurl/opts/CURLOPT_INFILESIZE.3
+++ b/docs/libcurl/opts/CURLOPT_INFILESIZE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_INFILESIZE 3 "February 03, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_INFILESIZE 3 "February 03, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_INFILESIZE \- set size of the input file to send off
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
index 79cd7eb7..d5fcd4d7 100644
--- a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_INFILESIZE_LARGE 3 "September 23, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_INFILESIZE_LARGE 3 "September 23, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_INFILESIZE_LARGE \- set size of the input file to send off
diff --git a/docs/libcurl/opts/CURLOPT_INTERFACE.3 b/docs/libcurl/opts/CURLOPT_INTERFACE.3
index c8c11a7a..cb9e6567 100644
--- a/docs/libcurl/opts/CURLOPT_INTERFACE.3
+++ b/docs/libcurl/opts/CURLOPT_INTERFACE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_INTERFACE 3 "June 18, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_INTERFACE 3 "June 18, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_INTERFACE \- source interface for outgoing traffic
diff --git a/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3 b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3
index 802d10b2..e7f73034 100644
--- a/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3
+++ b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_INTERLEAVEDATA 3 "September 15, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_INTERLEAVEDATA 3 "September 15, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_INTERLEAVEDATA \- custom pointer passed to RTSP interleave callback
diff --git a/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3 b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3
index d0753e5b..eb5e87c3 100644
--- a/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_INTERLEAVEFUNCTION 3 "August 11, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_INTERLEAVEFUNCTION 3 "August 11, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_INTERLEAVEFUNCTION \- callback function for RTSP interleaved data
diff --git a/docs/libcurl/opts/CURLOPT_IOCTLDATA.3 b/docs/libcurl/opts/CURLOPT_IOCTLDATA.3
index 06d6226d..f5754548 100644
--- a/docs/libcurl/opts/CURLOPT_IOCTLDATA.3
+++ b/docs/libcurl/opts/CURLOPT_IOCTLDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_IOCTLDATA 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_IOCTLDATA 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_IOCTLDATA \- custom pointer passed to I/O callback
diff --git a/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3 b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3
index 032cffec..fd6316f2 100644
--- a/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_IOCTLFUNCTION 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_IOCTLFUNCTION 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_IOCTLFUNCTION \- callback for I/O operations
diff --git a/docs/libcurl/opts/CURLOPT_IPRESOLVE.3 b/docs/libcurl/opts/CURLOPT_IPRESOLVE.3
index 84607eea..1cb20f7d 100644
--- a/docs/libcurl/opts/CURLOPT_IPRESOLVE.3
+++ b/docs/libcurl/opts/CURLOPT_IPRESOLVE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_IPRESOLVE 3 "May 05, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_IPRESOLVE 3 "May 05, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_IPRESOLVE \- specify which IP protocol version to use
diff --git a/docs/libcurl/opts/CURLOPT_ISSUERCERT.3 b/docs/libcurl/opts/CURLOPT_ISSUERCERT.3
index 5ac73682..5d1e4ab7 100644
--- a/docs/libcurl/opts/CURLOPT_ISSUERCERT.3
+++ b/docs/libcurl/opts/CURLOPT_ISSUERCERT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ISSUERCERT 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_ISSUERCERT 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_ISSUERCERT \- issuer SSL certificate filename
diff --git a/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3 b/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3
index 5267f673..1c7f67dc 100644
--- a/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3
+++ b/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_KEEP_SENDING_ON_ERROR \- keep sending on early HTTP response >= 300
diff --git a/docs/libcurl/opts/CURLOPT_KEYPASSWD.3 b/docs/libcurl/opts/CURLOPT_KEYPASSWD.3
index 892d6b21..173f359d 100644
--- a/docs/libcurl/opts/CURLOPT_KEYPASSWD.3
+++ b/docs/libcurl/opts/CURLOPT_KEYPASSWD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_KEYPASSWD 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_KEYPASSWD 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_KEYPASSWD \- set passphrase to private key
diff --git a/docs/libcurl/opts/CURLOPT_KRBLEVEL.3 b/docs/libcurl/opts/CURLOPT_KRBLEVEL.3
index 96c7a07c..694687ff 100644
--- a/docs/libcurl/opts/CURLOPT_KRBLEVEL.3
+++ b/docs/libcurl/opts/CURLOPT_KRBLEVEL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_KRBLEVEL 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_KRBLEVEL 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_KRBLEVEL \- set FTP kerberos security level
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORT.3 b/docs/libcurl/opts/CURLOPT_LOCALPORT.3
index d2b1c7cb..c85ebcb1 100644
--- a/docs/libcurl/opts/CURLOPT_LOCALPORT.3
+++ b/docs/libcurl/opts/CURLOPT_LOCALPORT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_LOCALPORT 3 "January 31, 2019" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_LOCALPORT 3 "January 31, 2019" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_LOCALPORT \- set local port number to use for socket
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3 b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3
index c046b875..4d855ff1 100644
--- a/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3
+++ b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_LOCALPORTRANGE 3 "January 31, 2019" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_LOCALPORTRANGE 3 "January 31, 2019" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_LOCALPORTRANGE \- number of additional local ports to try
diff --git a/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
index ec763aef..51a3be2b 100644
--- a/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_LOGIN_OPTIONS 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_LOGIN_OPTIONS 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_LOGIN_OPTIONS \- set login options
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3 b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3
index b35e41c7..01cc2714 100644
--- a/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3
+++ b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_LOW_SPEED_LIMIT 3 "May 06, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_LOW_SPEED_LIMIT 3 "May 06, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_LOW_SPEED_LIMIT \- set low speed limit in bytes per second
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3 b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3
index 1c550412..87ab4082 100644
--- a/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3
+++ b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_LOW_SPEED_TIME 3 "May 06, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_LOW_SPEED_TIME 3 "May 06, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_LOW_SPEED_TIME \- set low speed limit time period
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3 b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3
index 479f06eb..0ffc1470 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3
+++ b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAIL_AUTH 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_MAIL_AUTH 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAIL_AUTH \- SMTP authentication address
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_FROM.3 b/docs/libcurl/opts/CURLOPT_MAIL_FROM.3
index 3c108cf2..66a2bc64 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_FROM.3
+++ b/docs/libcurl/opts/CURLOPT_MAIL_FROM.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAIL_FROM 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_MAIL_FROM 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAIL_FROM \- SMTP sender address
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3 b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3
index 9ee4f844..dc440985 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3
+++ b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAIL_RCPT 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_MAIL_RCPT 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAIL_RCPT \- list of SMTP mail recipients
diff --git a/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3 b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
index de8cd358..4f62a640 100644
--- a/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
+++ b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAXCONNECTS 3 "May 30, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_MAXCONNECTS 3 "May 30, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAXCONNECTS \- maximum connection cache size
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3 b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3
index 8cb871fa..d2b8250a 100644
--- a/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3
+++ b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAXFILESIZE 3 "May 30, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_MAXFILESIZE 3 "May 30, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAXFILESIZE \- maximum file size allowed to download
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3
index 65f70d55..b577af46 100644
--- a/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAXFILESIZE_LARGE 3 "May 30, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_MAXFILESIZE_LARGE 3 "May 30, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAXFILESIZE_LARGE \- maximum file size allowed to download
diff --git a/docs/libcurl/opts/CURLOPT_MAXREDIRS.3 b/docs/libcurl/opts/CURLOPT_MAXREDIRS.3
index 5688a330..6155a1e9 100644
--- a/docs/libcurl/opts/CURLOPT_MAXREDIRS.3
+++ b/docs/libcurl/opts/CURLOPT_MAXREDIRS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAXREDIRS 3 "February 03, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_MAXREDIRS 3 "February 03, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAXREDIRS \- maximum number of redirects allowed
diff --git a/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3
index 96a21d36..e7f8f037 100644
--- a/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAX_RECV_SPEED_LARGE \- rate limit data download speed
diff --git a/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3
index 1c2e4b6d..8b85842b 100644
--- a/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAX_SEND_SPEED_LARGE \- rate limit data upload speed
diff --git a/docs/libcurl/opts/CURLOPT_MIMEPOST.3 b/docs/libcurl/opts/CURLOPT_MIMEPOST.3
index bfb64ee3..6a3fdef6 100644
--- a/docs/libcurl/opts/CURLOPT_MIMEPOST.3
+++ b/docs/libcurl/opts/CURLOPT_MIMEPOST.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MIMEPOST 3 "September 04, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_MIMEPOST 3 "September 04, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_MIMEPOST \- set post/send data from mime structure
diff --git a/docs/libcurl/opts/CURLOPT_NETRC.3 b/docs/libcurl/opts/CURLOPT_NETRC.3
index 0c29d0c7..80301dcf 100644
--- a/docs/libcurl/opts/CURLOPT_NETRC.3
+++ b/docs/libcurl/opts/CURLOPT_NETRC.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NETRC 3 "November 03, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_NETRC 3 "November 03, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_NETRC \- request that .netrc is used
diff --git a/docs/libcurl/opts/CURLOPT_NETRC_FILE.3 b/docs/libcurl/opts/CURLOPT_NETRC_FILE.3
index 1440f653..7ae559be 100644
--- a/docs/libcurl/opts/CURLOPT_NETRC_FILE.3
+++ b/docs/libcurl/opts/CURLOPT_NETRC_FILE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NETRC_FILE 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_NETRC_FILE 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_NETRC_FILE \- file name to read .netrc info from
diff --git a/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3 b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3
index 080e9a53..867aa9a6 100644
--- a/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3
+++ b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_NEW_DIRECTORY_PERMS \- permissions for remotely created directories
diff --git a/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3 b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3
index ef4dbce6..c556b569 100644
--- a/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3
+++ b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NEW_FILE_PERMS 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_NEW_FILE_PERMS 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_NEW_FILE_PERMS \- permissions for remotely created files
diff --git a/docs/libcurl/opts/CURLOPT_NOBODY.3 b/docs/libcurl/opts/CURLOPT_NOBODY.3
index 6f863f9a..1ca98816 100644
--- a/docs/libcurl/opts/CURLOPT_NOBODY.3
+++ b/docs/libcurl/opts/CURLOPT_NOBODY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NOBODY 3 "June 21, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_NOBODY 3 "June 21, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_NOBODY \- do the download request without getting the body
diff --git a/docs/libcurl/opts/CURLOPT_NOPROGRESS.3 b/docs/libcurl/opts/CURLOPT_NOPROGRESS.3
index e44d86fa..2ccbc3a9 100644
--- a/docs/libcurl/opts/CURLOPT_NOPROGRESS.3
+++ b/docs/libcurl/opts/CURLOPT_NOPROGRESS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NOPROGRESS 3 "October 09, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_NOPROGRESS 3 "October 09, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_NOPROGRESS \- switch off the progress meter
diff --git a/docs/libcurl/opts/CURLOPT_NOPROXY.3 b/docs/libcurl/opts/CURLOPT_NOPROXY.3
index 23014709..fe45179f 100644
--- a/docs/libcurl/opts/CURLOPT_NOPROXY.3
+++ b/docs/libcurl/opts/CURLOPT_NOPROXY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NOPROXY 3 "August 24, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_NOPROXY 3 "August 24, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_NOPROXY \- disable proxy use for specific hosts
diff --git a/docs/libcurl/opts/CURLOPT_NOSIGNAL.3 b/docs/libcurl/opts/CURLOPT_NOSIGNAL.3
index c1255710..e0b6323b 100644
--- a/docs/libcurl/opts/CURLOPT_NOSIGNAL.3
+++ b/docs/libcurl/opts/CURLOPT_NOSIGNAL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NOSIGNAL 3 "February 03, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_NOSIGNAL 3 "February 03, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_NOSIGNAL \- skip all signal handling
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3 b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3
index 971884b2..94338487 100644
--- a/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3
+++ b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_OPENSOCKETDATA 3 "May 15, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_OPENSOCKETDATA 3 "May 15, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_OPENSOCKETDATA \- custom pointer passed to open socket callback
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3 b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
index b265638f..6d665376 100644
--- a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_OPENSOCKETFUNCTION 3 "May 15, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_OPENSOCKETFUNCTION 3 "May 15, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_OPENSOCKETFUNCTION \- set callback for opening sockets
diff --git a/docs/libcurl/opts/CURLOPT_PASSWORD.3 b/docs/libcurl/opts/CURLOPT_PASSWORD.3
index dda94fa3..52d7c7e7 100644
--- a/docs/libcurl/opts/CURLOPT_PASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_PASSWORD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PASSWORD 3 "September 23, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PASSWORD 3 "September 23, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PASSWORD \- password to use in authentication
diff --git a/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3 b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
index 82a8062f..e21f6894 100644
--- a/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
+++ b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PATH_AS_IS 3 "September 23, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PATH_AS_IS 3 "September 23, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PATH_AS_IS \- do not handle dot dot sequences
diff --git a/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3 b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
index 0933769e..1fb5b84c 100644
--- a/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
+++ b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PINNEDPUBLICKEY 3 "January 29, 2019" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PINNEDPUBLICKEY 3 "January 29, 2019" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PINNEDPUBLICKEY \- set pinned public key
diff --git a/docs/libcurl/opts/CURLOPT_PIPEWAIT.3 b/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
index 101f267f..e16a179f 100644
--- a/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
+++ b/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PIPEWAIT 3 "May 01, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PIPEWAIT 3 "May 01, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PIPEWAIT \- wait for pipelining/multiplexing
diff --git a/docs/libcurl/opts/CURLOPT_PORT.3 b/docs/libcurl/opts/CURLOPT_PORT.3
index b7de842d..5780dc1a 100644
--- a/docs/libcurl/opts/CURLOPT_PORT.3
+++ b/docs/libcurl/opts/CURLOPT_PORT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PORT 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PORT 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PORT \- set remote port number to work with
diff --git a/docs/libcurl/opts/CURLOPT_POST.3 b/docs/libcurl/opts/CURLOPT_POST.3
index 1d959263..53ec9a01 100644
--- a/docs/libcurl/opts/CURLOPT_POST.3
+++ b/docs/libcurl/opts/CURLOPT_POST.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_POST 3 "May 21, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_POST 3 "May 21, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_POST \- request an HTTP POST
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDS.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
index ba904cac..ada10225 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_POSTFIELDS 3 "May 21, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_POSTFIELDS 3 "May 21, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_POSTFIELDS \- specify data to POST to server
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3
index e3f46ed2..b2ea6e43 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_POSTFIELDSIZE 3 "February 03, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_POSTFIELDSIZE 3 "February 03, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_POSTFIELDSIZE \- size of POST data pointed to
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3
index c02f6e9e..5535f1e9 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "February 03, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "February 03, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_POSTFIELDSIZE_LARGE \- size of POST data pointed to
diff --git a/docs/libcurl/opts/CURLOPT_POSTQUOTE.3 b/docs/libcurl/opts/CURLOPT_POSTQUOTE.3
index a1415c4b..f04a2fb6 100644
--- a/docs/libcurl/opts/CURLOPT_POSTQUOTE.3
+++ b/docs/libcurl/opts/CURLOPT_POSTQUOTE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_POSTQUOTE 3 "May 05, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_POSTQUOTE 3 "May 05, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_POSTQUOTE \- (S)FTP commands to run after the transfer
diff --git a/docs/libcurl/opts/CURLOPT_POSTREDIR.3 b/docs/libcurl/opts/CURLOPT_POSTREDIR.3
index 8d2af65c..baede47d 100644
--- a/docs/libcurl/opts/CURLOPT_POSTREDIR.3
+++ b/docs/libcurl/opts/CURLOPT_POSTREDIR.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_POSTREDIR 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_POSTREDIR 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_POSTREDIR \- how to act on an HTTP POST redirect
diff --git a/docs/libcurl/opts/CURLOPT_PREQUOTE.3 b/docs/libcurl/opts/CURLOPT_PREQUOTE.3
index 65156433..a77128a7 100644
--- a/docs/libcurl/opts/CURLOPT_PREQUOTE.3
+++ b/docs/libcurl/opts/CURLOPT_PREQUOTE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PREQUOTE 3 "June 18, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PREQUOTE 3 "June 18, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PREQUOTE \- commands to run before an FTP transfer
diff --git a/docs/libcurl/opts/CURLOPT_PRE_PROXY.3 b/docs/libcurl/opts/CURLOPT_PRE_PROXY.3
index b04394bf..5e4785ca 100644
--- a/docs/libcurl/opts/CURLOPT_PRE_PROXY.3
+++ b/docs/libcurl/opts/CURLOPT_PRE_PROXY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PRE_PROXY 3 "September 23, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PRE_PROXY 3 "September 23, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PRE_PROXY \- set pre-proxy to use
diff --git a/docs/libcurl/opts/CURLOPT_PRIVATE.3 b/docs/libcurl/opts/CURLOPT_PRIVATE.3
index 66965971..8ebe7617 100644
--- a/docs/libcurl/opts/CURLOPT_PRIVATE.3
+++ b/docs/libcurl/opts/CURLOPT_PRIVATE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PRIVATE 3 "December 08, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PRIVATE 3 "December 08, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PRIVATE \- store a private pointer
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3 b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3
index 4c07f97c..71f3e0d6 100644
--- a/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3
+++ b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROGRESSDATA 3 "February 03, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROGRESSDATA 3 "February 03, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROGRESSDATA \- custom pointer passed to the progress callback
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3 b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3
index 5c1654d8..8f39b3e9 100644
--- a/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROGRESSFUNCTION 3 "February 03, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROGRESSFUNCTION 3 "February 03, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROGRESSFUNCTION \- callback to progress meter function
diff --git a/docs/libcurl/opts/CURLOPT_PROTOCOLS.3 b/docs/libcurl/opts/CURLOPT_PROTOCOLS.3
index 116259c9..bb2b9fd3 100644
--- a/docs/libcurl/opts/CURLOPT_PROTOCOLS.3
+++ b/docs/libcurl/opts/CURLOPT_PROTOCOLS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROTOCOLS 3 "February 03, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROTOCOLS 3 "February 03, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROTOCOLS \- set allowed protocols
diff --git a/docs/libcurl/opts/CURLOPT_PROXY.3 b/docs/libcurl/opts/CURLOPT_PROXY.3
index 3220ca7b..a5e3f45d 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY 3 "August 24, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY 3 "August 24, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY \- set proxy to use
diff --git a/docs/libcurl/opts/CURLOPT_PROXYAUTH.3 b/docs/libcurl/opts/CURLOPT_PROXYAUTH.3
index a0d1921a..3c99fb01 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYAUTH.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYAUTH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYAUTH 3 "May 30, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYAUTH 3 "May 30, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYAUTH \- set HTTP proxy authentication methods to try
diff --git a/docs/libcurl/opts/CURLOPT_PROXYHEADER.3 b/docs/libcurl/opts/CURLOPT_PROXYHEADER.3
index 7b0d679f..9ba33855 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYHEADER.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYHEADER.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYHEADER 3 "May 30, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYHEADER 3 "May 30, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYHEADER \- custom HTTP headers to pass to proxy
diff --git a/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3 b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3
index 11e9289b..318079d5 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYPASSWORD 3 "May 30, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYPASSWORD 3 "May 30, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYPASSWORD \- password to use with proxy authentication
diff --git a/docs/libcurl/opts/CURLOPT_PROXYPORT.3 b/docs/libcurl/opts/CURLOPT_PROXYPORT.3
index 3fea013f..62adbed9 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYPORT.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYPORT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYPORT 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYPORT 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYPORT \- port number the proxy listens on
diff --git a/docs/libcurl/opts/CURLOPT_PROXYTYPE.3 b/docs/libcurl/opts/CURLOPT_PROXYTYPE.3
index 9db75cd8..45a570b0 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYTYPE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYTYPE 3 "May 30, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYTYPE 3 "May 30, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYTYPE \- proxy protocol type
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3 b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
index 4bf98abc..0573eac1 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYUSERNAME 3 "May 30, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYUSERNAME 3 "May 30, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYUSERNAME \- user name to use for proxy authentication
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3 b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3
index 4f696108..efe212fe 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYUSERPWD 3 "May 30, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYUSERPWD 3 "May 30, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYUSERPWD \- user name and password to use for proxy authentication
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3 b/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3
index e7b0ef18..fe67826a 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_CAINFO 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_CAINFO 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_CAINFO \- path to proxy Certificate Authority (CA) bundle
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3 b/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3
index 76ef82d8..62468764 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_CAPATH 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_CAPATH 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_CAPATH \- specify directory holding proxy CA certificates
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3 b/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3
index f9809d44..468c7ef7 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_CRLFILE 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_CRLFILE 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_CRLFILE \- specify a proxy Certificate Revocation List file
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3 b/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3
index d6362936..061e2827 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_KEYPASSWD 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_KEYPASSWD 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_KEYPASSWD \- set passphrase to proxy private key
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3 b/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3
index d9ccf85d..ffcfdabe 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_PINNEDPUBLICKEY \- set pinned public key for https proxy
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3 b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
index 4949de51..5bf99d5a 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SERVICE_NAME \- proxy authentication service name
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3
index c91bf0b6..df6e4e06 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSLCERT 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLCERT 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSLCERT \- set SSL proxy client certificate
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3
index 5461708d..3a60f87c 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSLCERTTYPE 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLCERTTYPE 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSLCERTTYPE \- specify type of the proxy client SSL certificate
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3
index 327468fb..96c30f14 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSLKEY 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLKEY 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSLKEY \- specify private keyfile for TLS and SSL proxy client cert
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3
index 9570f354..abc76e87 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSLKEYTYPE 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLKEYTYPE 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSLKEYTYPE \- set type of the proxy private key file
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3
index 91acb178..1a81b947 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSLVERSION 3 "October 30, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLVERSION 3 "October 30, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSLVERSION \- set preferred proxy TLS/SSL version
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3
index 8679bd04..09e3f4bf 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "October 10, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "October 10, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSL_CIPHER_LIST \- specify ciphers to use for proxy TLS
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3
index beae220a..fa0ef873 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSL_OPTIONS 3 "January 29, 2019" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSL_OPTIONS 3 "January 29, 2019" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSL_OPTIONS \- set proxy SSL behavior options
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3
index d01bf505..9be33aaf 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "May 02, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "May 02, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSL_VERIFYHOST \- verify the proxy certificate's name against host
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3
index b2ffe011..58aaaf54 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "December 16, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "December 16, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSL_VERIFYPEER \- verify the proxy's SSL certificate
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3 b/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3
index 44c3e64c..031abe26 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_TLS13_CIPHERS 3 "October 10, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TLS13_CIPHERS 3 "October 10, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_TLS13_CIPHERS \- ciphers suites for proxy TLS 1.3
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3 b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3
index e950f578..8ea1dfe2 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_TLSAUTH_PASSWORD \- password to use for proxy TLS authentication
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3 b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3
index 297aa51c..18c088c2 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_TLSAUTH_TYPE \- set proxy TLS authentication methods
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3 b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3
index 0158a033..1f96d2cf 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_TLSAUTH_USERNAME \- user name to use for proxy TLS authentication
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3 b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3
index 68c4a522..5d1525d1 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_TRANSFER_MODE 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TRANSFER_MODE 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_TRANSFER_MODE \- append FTP transfer mode to URL for proxy
diff --git a/docs/libcurl/opts/CURLOPT_PUT.3 b/docs/libcurl/opts/CURLOPT_PUT.3
index f2e68a9e..d0bec44f 100644
--- a/docs/libcurl/opts/CURLOPT_PUT.3
+++ b/docs/libcurl/opts/CURLOPT_PUT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PUT 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_PUT 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_PUT \- make an HTTP PUT request
diff --git a/docs/libcurl/opts/CURLOPT_QUOTE.3 b/docs/libcurl/opts/CURLOPT_QUOTE.3
index 841e8d2f..82194578 100644
--- a/docs/libcurl/opts/CURLOPT_QUOTE.3
+++ b/docs/libcurl/opts/CURLOPT_QUOTE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_QUOTE 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_QUOTE 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_QUOTE \- (S)FTP commands to run before transfer
diff --git a/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3 b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3
index 7c2e98ed..5587b618 100644
--- a/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3
+++ b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RANDOM_FILE 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_RANDOM_FILE 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_RANDOM_FILE \- specify a source for random data
diff --git a/docs/libcurl/opts/CURLOPT_RANGE.3 b/docs/libcurl/opts/CURLOPT_RANGE.3
index 3a746371..9fdfc044 100644
--- a/docs/libcurl/opts/CURLOPT_RANGE.3
+++ b/docs/libcurl/opts/CURLOPT_RANGE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RANGE 3 "December 21, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_RANGE 3 "December 21, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_RANGE \- set byte range to request
diff --git a/docs/libcurl/opts/CURLOPT_READDATA.3 b/docs/libcurl/opts/CURLOPT_READDATA.3
index 5640ee86..8738876a 100644
--- a/docs/libcurl/opts/CURLOPT_READDATA.3
+++ b/docs/libcurl/opts/CURLOPT_READDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_READDATA 3 "August 11, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_READDATA 3 "August 11, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_READDATA \- custom pointer passed to the read callback
diff --git a/docs/libcurl/opts/CURLOPT_READFUNCTION.3 b/docs/libcurl/opts/CURLOPT_READFUNCTION.3
index 64ce7b8d..38056dc4 100644
--- a/docs/libcurl/opts/CURLOPT_READFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_READFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_READFUNCTION 3 "August 11, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_READFUNCTION 3 "August 11, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_READFUNCTION \- read callback for data uploads
diff --git a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3 b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3
index f4827b83..3a83e974 100644
--- a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3
+++ b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_REDIR_PROTOCOLS 3 "September 21, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_REDIR_PROTOCOLS 3 "September 21, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_REDIR_PROTOCOLS \- set protocols allowed to redirect to
diff --git a/docs/libcurl/opts/CURLOPT_REFERER.3 b/docs/libcurl/opts/CURLOPT_REFERER.3
index 732f7253..b942b4a3 100644
--- a/docs/libcurl/opts/CURLOPT_REFERER.3
+++ b/docs/libcurl/opts/CURLOPT_REFERER.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_REFERER 3 "December 21, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_REFERER 3 "December 21, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_REFERER \- set the HTTP referer header
diff --git a/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3 b/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3
index 105bd46b..c44f00b5 100644
--- a/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3
+++ b/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_REQUEST_TARGET 3 "June 21, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_REQUEST_TARGET 3 "June 21, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_REQUEST_TARGET \- specify an alternative target for this request
diff --git a/docs/libcurl/opts/CURLOPT_RESOLVE.3 b/docs/libcurl/opts/CURLOPT_RESOLVE.3
index d5c35cce..cbcb7127 100644
--- a/docs/libcurl/opts/CURLOPT_RESOLVE.3
+++ b/docs/libcurl/opts/CURLOPT_RESOLVE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RESOLVE 3 "May 30, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_RESOLVE 3 "May 30, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_RESOLVE \- provide custom host name to IP address resolves
diff --git a/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3 b/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3
index a2ce2f7a..0566e1fc 100644
--- a/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RESOLVER_START_DATA 3 "February 14, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_RESOLVER_START_DATA 3 "February 14, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_RESOLVER_START_DATA \- custom pointer passed to the resolver start callback
diff --git a/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3
index 6f992b87..eecfc966 100644
--- a/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RESOLVER_START_FUNCTION 3 "February 14, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_RESOLVER_START_FUNCTION 3 "February 14, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_RESOLVER_START_FUNCTION \- set callback to be called before a new resolve request is started
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM.3 b/docs/libcurl/opts/CURLOPT_RESUME_FROM.3
index 5bcf1e26..f7677e19 100644
--- a/docs/libcurl/opts/CURLOPT_RESUME_FROM.3
+++ b/docs/libcurl/opts/CURLOPT_RESUME_FROM.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RESUME_FROM 3 "February 03, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_RESUME_FROM 3 "February 03, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_RESUME_FROM \- set a point to resume transfer from
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3 b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3
index d5ac1e63..a8fc539f 100644
--- a/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RESUME_FROM_LARGE 3 "February 03, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_RESUME_FROM_LARGE 3 "February 03, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_RESUME_FROM_LARGE \- set a point to resume transfer from
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3 b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3
index 708db3de..0cc6efee 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_RTSP_CLIENT_CSEQ \- set the RTSP client CSEQ number
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3 b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3
index 5ff30243..2148d3be 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RTSP_REQUEST 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_REQUEST 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_RTSP_REQUEST \- specify RTSP request
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3 b/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3
index a82fafc4..6dd90a84 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_RTSP_SERVER_CSEQ \- set the RTSP server CSEQ number
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3 b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3
index 778aacde..cadc2507 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_RTSP_SESSION_ID \- set RTSP session ID
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3 b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
index 28db69da..548b2011 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RTSP_STREAM_URI 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_STREAM_URI 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_RTSP_STREAM_URI \- set RTSP stream URI
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3 b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3
index 3f61a112..2162d113 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RTSP_TRANSPORT 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_TRANSPORT 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_RTSP_TRANSPORT \- set RTSP Transport: header
diff --git a/docs/libcurl/opts/CURLOPT_SASL_IR.3 b/docs/libcurl/opts/CURLOPT_SASL_IR.3
index 96e2fe30..7bc0b7cf 100644
--- a/docs/libcurl/opts/CURLOPT_SASL_IR.3
+++ b/docs/libcurl/opts/CURLOPT_SASL_IR.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SASL_IR 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SASL_IR 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SASL_IR \- enable sending initial response in first packet
diff --git a/docs/libcurl/opts/CURLOPT_SEEKDATA.3 b/docs/libcurl/opts/CURLOPT_SEEKDATA.3
index 7d025822..e02a73f0 100644
--- a/docs/libcurl/opts/CURLOPT_SEEKDATA.3
+++ b/docs/libcurl/opts/CURLOPT_SEEKDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SEEKDATA 3 "August 12, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SEEKDATA 3 "August 12, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SEEKDATA \- custom pointer passed to the seek callback
diff --git a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
index eb5c02c8..e62a6916 100644
--- a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SEEKFUNCTION 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SEEKFUNCTION 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SEEKFUNCTION \- user callback for seeking in input stream
diff --git a/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3 b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
index bf61759a..39869681 100644
--- a/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
+++ b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SERVICE_NAME \- authentication service name
diff --git a/docs/libcurl/opts/CURLOPT_SHARE.3 b/docs/libcurl/opts/CURLOPT_SHARE.3
index 33745863..0746c349 100644
--- a/docs/libcurl/opts/CURLOPT_SHARE.3
+++ b/docs/libcurl/opts/CURLOPT_SHARE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SHARE 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SHARE 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SHARE \- specify share handle to use
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3 b/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3
index 00e0b783..6d23ae2b 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SOCKOPTDATA 3 "May 15, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SOCKOPTDATA 3 "May 15, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SOCKOPTDATA \- custom pointer to pass to sockopt callback
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3
index 96b2964f..22633458 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SOCKOPTFUNCTION 3 "May 15, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SOCKOPTFUNCTION 3 "May 15, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SOCKOPTFUNCTION \- set callback for setting socket options
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3 b/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3
index 5dc51048..b47448f0 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SOCKS5_AUTH 3 "April 27, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SOCKS5_AUTH 3 "April 27, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SOCKS5_AUTH \- set allowed methods for SOCKS5 proxy authentication
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3 b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3
index 4dfabeff..2f895302 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SOCKS5_GSSAPI_NEC \- set socks proxy gssapi negotiation protection
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3 b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
index 34cecdb2..be387866 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SOCKS5_GSSAPI_SERVICE \- SOCKS5 proxy authentication service name
diff --git a/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3 b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3
index 0ffa60e7..95000680 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_AUTH_TYPES 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_AUTH_TYPES 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_AUTH_TYPES \- set desired auth types for SFTP and SCP
diff --git a/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3 b/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3
index 751f8abd..4fd7c04a 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_COMPRESSION 3 "August 10, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_COMPRESSION 3 "August 10, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_COMPRESSION \- enables compression / decompression of SSH traffic
diff --git a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
index f578d4f5..be7a7b04 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 \- checksum of SSH server public key
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3 b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3
index 148c6293..b23272ff 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_KEYDATA 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_KEYDATA 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_KEYDATA \- pointer to pass to the SSH key callback
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3
index 4382ff82..22159b6b 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_KEYFUNCTION 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_KEYFUNCTION 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_KEYFUNCTION \- callback for known host matching logic
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3 b/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3
index e86a0bea..a3d8515a 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_KNOWNHOSTS 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_KNOWNHOSTS 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_KNOWNHOSTS \- file name holding the SSH known hosts
diff --git a/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3 b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3
index 6347b484..1cb8ac3e 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_PRIVATE_KEYFILE \- set private key file for SSH auth
diff --git a/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3 b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3
index adf8624a..9fda09bb 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_PUBLIC_KEYFILE \- set public key file for SSH auth
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERT.3 b/docs/libcurl/opts/CURLOPT_SSLCERT.3
index 120cdcc2..f0a431f9 100644
--- a/docs/libcurl/opts/CURLOPT_SSLCERT.3
+++ b/docs/libcurl/opts/CURLOPT_SSLCERT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLCERT 3 "January 29, 2019" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLCERT 3 "January 29, 2019" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLCERT \- set SSL client certificate
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3 b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
index 2a5ab32a..d8025fbc 100644
--- a/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLCERTTYPE 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLCERTTYPE 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLCERTTYPE \- specify type of the client SSL certificate
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE.3 b/docs/libcurl/opts/CURLOPT_SSLENGINE.3
index 04d797ac..56e7a454 100644
--- a/docs/libcurl/opts/CURLOPT_SSLENGINE.3
+++ b/docs/libcurl/opts/CURLOPT_SSLENGINE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLENGINE 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLENGINE 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLENGINE \- set SSL engine identifier
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3 b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
index 3dee0526..88d756db 100644
--- a/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
+++ b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLENGINE_DEFAULT 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLENGINE_DEFAULT 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLENGINE_DEFAULT \- make SSL engine default
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEY.3 b/docs/libcurl/opts/CURLOPT_SSLKEY.3
index aac63cc8..349ffc93 100644
--- a/docs/libcurl/opts/CURLOPT_SSLKEY.3
+++ b/docs/libcurl/opts/CURLOPT_SSLKEY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLKEY 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLKEY 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLKEY \- specify private keyfile for TLS and SSL client cert
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3 b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
index 87570390..79d6044d 100644
--- a/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLKEYTYPE 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLKEYTYPE 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLKEYTYPE \- set type of the private key file
diff --git a/docs/libcurl/opts/CURLOPT_SSLVERSION.3 b/docs/libcurl/opts/CURLOPT_SSLVERSION.3
index b3223df2..6f84b6ca 100644
--- a/docs/libcurl/opts/CURLOPT_SSLVERSION.3
+++ b/docs/libcurl/opts/CURLOPT_SSLVERSION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLVERSION 3 "October 30, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLVERSION 3 "October 30, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLVERSION \- set preferred TLS/SSL version
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3 b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
index 8b0ad28c..27a62a79 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_CIPHER_LIST 3 "October 10, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_CIPHER_LIST 3 "October 10, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_CIPHER_LIST \- specify ciphers to use for TLS
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3 b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
index 13cd377f..5e70aed7 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_CTX_DATA 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_CTX_DATA 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_CTX_DATA \- custom pointer passed to ssl_ctx callback
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
index f14794d4..b4c70e52 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_CTX_FUNCTION 3 "August 29, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_CTX_FUNCTION 3 "August 29, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_CTX_FUNCTION \- SSL context callback for OpenSSL, wolfSSL/CyaSSL or mbedTLS
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3 b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3
index 8e3f9468..b6dc16da 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_ENABLE_ALPN 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_ENABLE_ALPN 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_ENABLE_ALPN \- enable ALPN
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3 b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3
index 9178acd9..0cf74a24 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_ENABLE_NPN 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_ENABLE_NPN 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_ENABLE_NPN \- enable NPN
diff --git a/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3 b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
index 7b11222c..2139b699 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_FALSESTART 3 "May 15, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_FALSESTART 3 "May 15, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_FALSESTART \- enable TLS false start
diff --git a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
index 85b7fc5e..f30848ed 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_OPTIONS 3 "January 29, 2019" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_OPTIONS 3 "January 29, 2019" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_OPTIONS \- set SSL behavior options
diff --git a/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3 b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3
index c50232c5..7d6b5bb0 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_SESSIONID_CACHE 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_SESSIONID_CACHE 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_SESSIONID_CACHE \- enable/disable use of the SSL session-ID cache
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
index 4e4b4e32..efdebe4a 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_VERIFYHOST 3 "February 02, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_VERIFYHOST 3 "February 02, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_VERIFYHOST \- verify the certificate's name against host
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
index 299ae4d7..1f4a0718 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_VERIFYPEER 3 "June 24, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_VERIFYPEER 3 "June 24, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_VERIFYPEER \- verify the peer's SSL certificate
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
index fe1b6633..b77a750c 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_VERIFYSTATUS 3 "October 09, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_VERIFYSTATUS 3 "October 09, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_VERIFYSTATUS \- verify the certificate's status
diff --git a/docs/libcurl/opts/CURLOPT_STDERR.3 b/docs/libcurl/opts/CURLOPT_STDERR.3
index d35fbd59..f2e30d59 100644
--- a/docs/libcurl/opts/CURLOPT_STDERR.3
+++ b/docs/libcurl/opts/CURLOPT_STDERR.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_STDERR 3 "February 03, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_STDERR 3 "February 03, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_STDERR \- redirect stderr to another stream
diff --git a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3 b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3
index 6331389a..5b5775e3 100644
--- a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3
+++ b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_STREAM_DEPENDS 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_STREAM_DEPENDS 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_STREAM_DEPENDS \- set stream this transfer depends on
diff --git a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3 b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3
index 33f3c0ef..d79378ed 100644
--- a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3
+++ b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_STREAM_DEPENDS_E 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_STREAM_DEPENDS_E 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_STREAM_DEPENDS_E \- set stream this transfer depends on exclusively
diff --git a/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3 b/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3
index e16a4b18..65e1ef49 100644
--- a/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3
+++ b/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_STREAM_WEIGHT 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_STREAM_WEIGHT 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_STREAM_WEIGHT \- set numerical stream weight
diff --git a/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3 b/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3
index 9a5ebf07..6b169be9 100644
--- a/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3
+++ b/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "April 28, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "April 28, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_SUPPRESS_CONNECT_HEADERS \- Suppress proxy CONNECT response headers from user callbacks
diff --git a/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3 b/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3
index d49701ac..e4d87943 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TCP_FASTOPEN 3 "May 15, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TCP_FASTOPEN 3 "May 15, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_TCP_FASTOPEN \- enable TCP Fast Open
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
index 5128bdb8..9254156d 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TCP_KEEPALIVE 3 "February 03, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TCP_KEEPALIVE 3 "February 03, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_TCP_KEEPALIVE \- enable TCP keep-alive probing
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
index 3386df83..cd429229 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TCP_KEEPIDLE 3 "January 02, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TCP_KEEPIDLE 3 "January 02, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_TCP_KEEPIDLE \- set TCP keep-alive idle time wait
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
index f2a8d742..d712e6da 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TCP_KEEPINTVL 3 "January 02, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TCP_KEEPINTVL 3 "January 02, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_TCP_KEEPINTVL \- set TCP keep-alive interval
diff --git a/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3 b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3
index 05ff7352..a24ac944 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TCP_NODELAY 3 "January 15, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TCP_NODELAY 3 "January 15, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_TCP_NODELAY \- set the TCP_NODELAY option
diff --git a/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3 b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3
index 68561d5b..ee5d6298 100644
--- a/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TELNETOPTIONS 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TELNETOPTIONS 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_TELNETOPTIONS \- custom telnet options
diff --git a/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3 b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3
index 6f846a41..be329c71 100644
--- a/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TFTP_BLKSIZE 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TFTP_BLKSIZE 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_TFTP_BLKSIZE \- TFTP block size
diff --git a/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3
index 2426dc17..13375f51 100644
--- a/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TFTP_NO_OPTIONS 3 "April 06, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TFTP_NO_OPTIONS 3 "April 06, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_TFTP_NO_OPTIONS \- Do not send TFTP options requests.
diff --git a/docs/libcurl/opts/CURLOPT_TIMECONDITION.3 b/docs/libcurl/opts/CURLOPT_TIMECONDITION.3
index 2978ed51..b11d62d9 100644
--- a/docs/libcurl/opts/CURLOPT_TIMECONDITION.3
+++ b/docs/libcurl/opts/CURLOPT_TIMECONDITION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TIMECONDITION 3 "April 03, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TIMECONDITION 3 "April 03, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_TIMECONDITION \- select condition for a time request
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_TIMEOUT.3
index 85586333..5d4e52dc 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEOUT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TIMEOUT 3 "October 03, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TIMEOUT 3 "October 03, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_TIMEOUT \- set maximum time the request is allowed to take
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
index f78a650f..1cb93575 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TIMEOUT_MS 3 "September 23, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TIMEOUT_MS 3 "September 23, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_TIMEOUT_MS \- set maximum time the request is allowed to take
diff --git a/docs/libcurl/opts/CURLOPT_TIMEVALUE.3 b/docs/libcurl/opts/CURLOPT_TIMEVALUE.3
index c3cfb0c2..6df0c526 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEVALUE.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEVALUE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TIMEVALUE 3 "January 25, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TIMEVALUE 3 "January 25, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_TIMEVALUE \- set time value for conditional
diff --git a/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3 b/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3
index 8e4c12e1..20cf669e 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TIMEVALUE_LARGE 3 "January 25, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TIMEVALUE_LARGE 3 "January 25, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_TIMEVALUE_LARGE \- set time value for conditional
diff --git a/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3 b/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3
index 3a12ba33..68a7aeeb 100644
--- a/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3
+++ b/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TLS13_CIPHERS 3 "October 10, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TLS13_CIPHERS 3 "October 10, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_TLS13_CIPHERS \- specify ciphers suites to use for TLS 1.3
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3
index ae25656b..872613cf 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_TLSAUTH_PASSWORD \- password to use for TLS authentication
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3
index a8bfd1e8..f86cad0c 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_TLSAUTH_TYPE \- set TLS authentication methods
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3
index 8b0f7b14..e6bd4646 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_TLSAUTH_USERNAME \- user name to use for TLS authentication
diff --git a/docs/libcurl/opts/CURLOPT_TRAILERDATA.3 b/docs/libcurl/opts/CURLOPT_TRAILERDATA.3
index bdf46e51..6f15f4a5 100644
--- a/docs/libcurl/opts/CURLOPT_TRAILERDATA.3
+++ b/docs/libcurl/opts/CURLOPT_TRAILERDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TRAILERDATA 3 "December 14, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TRAILERDATA 3 "December 14, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME:
CURLOPT_TRAILERDATA \- Custom pointer passed to the trailing headers callback
diff --git a/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3 b/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3
index 4fc7ee56..285cf25c 100644
--- a/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TRAILERFUNCTION 3 "December 14, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TRAILERFUNCTION 3 "December 14, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME:
CURLOPT_TRAILERFUNCTION \- Set callback for sending trailing headers
diff --git a/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3 b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3
index 26a86740..42cce74f 100644
--- a/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3
+++ b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TRANSFERTEXT 3 "May 31, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TRANSFERTEXT 3 "May 31, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_TRANSFERTEXT \- request a text based transfer for FTP
diff --git a/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3 b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
index 2ab2274c..af03da0f 100644
--- a/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
+++ b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TRANSFER_ENCODING 3 "May 15, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_TRANSFER_ENCODING 3 "May 15, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_TRANSFER_ENCODING \- ask for HTTP Transfer Encoding
diff --git a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3
index 6e227265..e82c2783 100644
--- a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3
+++ b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_UNIX_SOCKET_PATH 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_UNIX_SOCKET_PATH 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_UNIX_SOCKET_PATH \- set Unix domain socket
diff --git a/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3 b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3
index ec3a7e6f..111a7d05 100644
--- a/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3
+++ b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_UNRESTRICTED_AUTH 3 "May 15, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_UNRESTRICTED_AUTH 3 "May 15, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_UNRESTRICTED_AUTH \- send credentials to other hosts too
diff --git a/docs/libcurl/opts/CURLOPT_UPLOAD.3 b/docs/libcurl/opts/CURLOPT_UPLOAD.3
index 79f19286..de9754ba 100644
--- a/docs/libcurl/opts/CURLOPT_UPLOAD.3
+++ b/docs/libcurl/opts/CURLOPT_UPLOAD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_UPLOAD 3 "April 17, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_UPLOAD 3 "April 17, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_UPLOAD \- enable data upload
diff --git a/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3 b/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3
index a0d22610..9c8d950a 100644
--- a/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_UPLOAD_BUFFERSIZE 3 "August 18, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_UPLOAD_BUFFERSIZE 3 "August 18, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_UPLOAD_BUFFERSIZE \- set preferred upload buffer size
diff --git a/docs/libcurl/opts/CURLOPT_URL.3 b/docs/libcurl/opts/CURLOPT_URL.3
index 112d56cc..564d0001 100644
--- a/docs/libcurl/opts/CURLOPT_URL.3
+++ b/docs/libcurl/opts/CURLOPT_URL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_URL 3 "November 11, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_URL 3 "November 11, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_URL \- provide the URL to use in the request
diff --git a/docs/libcurl/opts/CURLOPT_USERAGENT.3 b/docs/libcurl/opts/CURLOPT_USERAGENT.3
index 58ad5173..a4a8fb55 100644
--- a/docs/libcurl/opts/CURLOPT_USERAGENT.3
+++ b/docs/libcurl/opts/CURLOPT_USERAGENT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_USERAGENT 3 "December 21, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_USERAGENT 3 "December 21, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_USERAGENT \- set HTTP user-agent header
diff --git a/docs/libcurl/opts/CURLOPT_USERNAME.3 b/docs/libcurl/opts/CURLOPT_USERNAME.3
index 9d549ad5..2e251a7c 100644
--- a/docs/libcurl/opts/CURLOPT_USERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_USERNAME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_USERNAME 3 "May 05, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_USERNAME 3 "May 05, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_USERNAME \- user name to use in authentication
diff --git a/docs/libcurl/opts/CURLOPT_USERPWD.3 b/docs/libcurl/opts/CURLOPT_USERPWD.3
index c58e96b6..05bdd099 100644
--- a/docs/libcurl/opts/CURLOPT_USERPWD.3
+++ b/docs/libcurl/opts/CURLOPT_USERPWD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_USERPWD 3 "August 24, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_USERPWD 3 "August 24, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_USERPWD \- user name and password to use in authentication
diff --git a/docs/libcurl/opts/CURLOPT_USE_SSL.3 b/docs/libcurl/opts/CURLOPT_USE_SSL.3
index 2f83c126..ccd0045d 100644
--- a/docs/libcurl/opts/CURLOPT_USE_SSL.3
+++ b/docs/libcurl/opts/CURLOPT_USE_SSL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_USE_SSL 3 "October 10, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_USE_SSL 3 "October 10, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_USE_SSL \- request using SSL / TLS for the transfer
diff --git a/docs/libcurl/opts/CURLOPT_VERBOSE.3 b/docs/libcurl/opts/CURLOPT_VERBOSE.3
index a392b783..f80ad6dd 100644
--- a/docs/libcurl/opts/CURLOPT_VERBOSE.3
+++ b/docs/libcurl/opts/CURLOPT_VERBOSE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_VERBOSE 3 "February 03, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_VERBOSE 3 "February 03, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_VERBOSE \- set verbose mode on/off
diff --git a/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3 b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3
index 8245bc29..5aac8979 100644
--- a/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3
+++ b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_WILDCARDMATCH 3 "May 18, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_WILDCARDMATCH 3 "May 18, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_WILDCARDMATCH \- enable directory wildcard transfers
diff --git a/docs/libcurl/opts/CURLOPT_WRITEDATA.3 b/docs/libcurl/opts/CURLOPT_WRITEDATA.3
index 4c82d7b7..2797d7fe 100644
--- a/docs/libcurl/opts/CURLOPT_WRITEDATA.3
+++ b/docs/libcurl/opts/CURLOPT_WRITEDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_WRITEDATA 3 "August 11, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_WRITEDATA 3 "August 11, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_WRITEDATA \- custom pointer passed to the write callback
diff --git a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3
index 637af461..98295417 100644
--- a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_WRITEFUNCTION 3 "November 23, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_WRITEFUNCTION 3 "November 23, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_WRITEFUNCTION \- set callback for writing received data
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFODATA.3 b/docs/libcurl/opts/CURLOPT_XFERINFODATA.3
index 52d91948..de083723 100644
--- a/docs/libcurl/opts/CURLOPT_XFERINFODATA.3
+++ b/docs/libcurl/opts/CURLOPT_XFERINFODATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_XFERINFODATA 3 "October 09, 2017" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_XFERINFODATA 3 "October 09, 2017" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_XFERINFODATA \- custom pointer passed to the progress callback
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3 b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3
index f01bddc7..0519b246 100644
--- a/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_XFERINFOFUNCTION 3 "February 03, 2016" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_XFERINFOFUNCTION 3 "February 03, 2016" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_XFERINFOFUNCTION \- callback to progress meter function
diff --git a/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3 b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3
index 0acd3670..45e5e365 100644
--- a/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3
+++ b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_XOAUTH2_BEARER 3 "May 22, 2018" "libcurl 7.64.0" "curl_easy_setopt options"
+.TH CURLOPT_XOAUTH2_BEARER 3 "May 22, 2018" "libcurl 7.64.1" "curl_easy_setopt options"
.SH NAME
CURLOPT_XOAUTH2_BEARER \- specify OAuth 2.0 access token
diff --git a/docs/libcurl/opts/Makefile.inc b/docs/libcurl/opts/Makefile.inc
index b21f3235..07547503 100644
--- a/docs/libcurl/opts/Makefile.inc
+++ b/docs/libcurl/opts/Makefile.inc
@@ -83,6 +83,8 @@ man_MANS = \
CURLOPT_ACCEPTTIMEOUT_MS.3 \
CURLOPT_ACCEPT_ENCODING.3 \
CURLOPT_ADDRESS_SCOPE.3 \
+ CURLOPT_ALTSVC.3 \
+ CURLOPT_ALTSVC_CTRL.3 \
CURLOPT_APPEND.3 \
CURLOPT_AUTOREFERER.3 \
CURLOPT_BUFFERSIZE.3 \
diff --git a/docs/libcurl/symbols-in-versions b/docs/libcurl/symbols-in-versions
index f25009c2..0f43aee3 100644
--- a/docs/libcurl/symbols-in-versions
+++ b/docs/libcurl/symbols-in-versions
@@ -12,6 +12,12 @@
Name Introduced Deprecated Removed
+CURLALTSVC_ALTUSED 7.64.1
+CURLALTSVC_H1 7.64.1
+CURLALTSVC_H2 7.64.1
+CURLALTSVC_H3 7.64.1
+CURLALTSVC_IMMEDIATELY 7.64.1
+CURLALTSVC_READONLYFILE 7.64.1
CURLAUTH_ANY 7.10.6
CURLAUTH_ANYSAFE 7.10.6
CURLAUTH_BASIC 7.10.6
@@ -343,6 +349,8 @@ CURLOPT_ABSTRACT_UNIX_SOCKET 7.53.0
CURLOPT_ACCEPTTIMEOUT_MS 7.24.0
CURLOPT_ACCEPT_ENCODING 7.21.6
CURLOPT_ADDRESS_SCOPE 7.19.0
+CURLOPT_ALTSVC 7.64.1
+CURLOPT_ALTSVC_CTRL 7.64.1
CURLOPT_APPEND 7.17.0
CURLOPT_AUTOREFERER 7.1
CURLOPT_BUFFERSIZE 7.10
@@ -432,8 +440,6 @@ CURLOPT_HTTPREQUEST 7.1 - 7.15.5
CURLOPT_HTTP_CONTENT_DECODING 7.16.2
CURLOPT_HTTP_TRANSFER_DECODING 7.16.2
CURLOPT_HTTP_VERSION 7.9.1
-CURLOPT_TRAILERFUNCTION 7.64.0
-CURLOPT_TRAILERDATA 7.64.0
CURLOPT_IGNORE_CONTENT_LENGTH 7.14.1
CURLOPT_INFILE 7.1 7.9.7
CURLOPT_INFILESIZE 7.1
@@ -615,6 +621,8 @@ CURLOPT_TLS13_CIPHERS 7.61.0
CURLOPT_TLSAUTH_PASSWORD 7.21.4
CURLOPT_TLSAUTH_TYPE 7.21.4
CURLOPT_TLSAUTH_USERNAME 7.21.4
+CURLOPT_TRAILERDATA 7.64.0
+CURLOPT_TRAILERFUNCTION 7.64.0
CURLOPT_TRANSFERTEXT 7.1.1
CURLOPT_TRANSFER_ENCODING 7.21.6
CURLOPT_UNIX_SOCKET_PATH 7.40.0
@@ -707,7 +715,7 @@ CURLSSH_AUTH_PUBLICKEY 7.16.1
CURLSSLBACKEND_AXTLS 7.38.0 7.61.0
CURLSSLBACKEND_BORINGSSL 7.49.0
CURLSSLBACKEND_CYASSL 7.34.0
-CURLSSLBACKEND_DARWINSSL 7.34.0
+CURLSSLBACKEND_DARWINSSL 7.34.0 7.64.1
CURLSSLBACKEND_GNUTLS 7.34.0
CURLSSLBACKEND_GSKIT 7.34.0
CURLSSLBACKEND_LIBRESSL 7.49.0
@@ -719,6 +727,7 @@ CURLSSLBACKEND_OPENSSL 7.34.0
CURLSSLBACKEND_POLARSSL 7.34.0
CURLSSLBACKEND_QSOSSL 7.34.0 - 7.38.1
CURLSSLBACKEND_SCHANNEL 7.34.0
+CURLSSLBACKEND_SECURETRANSPORT 7.64.1
CURLSSLBACKEND_WOLFSSL 7.49.0
CURLSSLOPT_ALLOW_BEAST 7.25.0
CURLSSLOPT_NO_REVOKE 7.44.0
@@ -854,8 +863,6 @@ CURL_PUSH_DENY 7.44.0
CURL_PUSH_OK 7.44.0
CURL_READFUNC_ABORT 7.12.1
CURL_READFUNC_PAUSE 7.18.0
-CURL_TRAILERFUNC_OK 7.64.0
-CURL_TRAILERFUNC_ABORT 7.64.0
CURL_REDIR_GET_ALL 7.19.1
CURL_REDIR_POST_301 7.19.1
CURL_REDIR_POST_302 7.19.1
@@ -902,7 +909,10 @@ CURL_TIMECOND_LASTMOD 7.9.7
CURL_TIMECOND_NONE 7.9.7
CURL_TLSAUTH_NONE 7.21.4
CURL_TLSAUTH_SRP 7.21.4
+CURL_TRAILERFUNC_ABORT 7.64.0
+CURL_TRAILERFUNC_OK 7.64.0
CURL_UPKEEP_INTERVAL_DEFAULT 7.62.0
+CURL_VERSION_ALTSVC 7.64.1
CURL_VERSION_ASYNCHDNS 7.10.7
CURL_VERSION_BROTLI 7.57.0
CURL_VERSION_CONV 7.15.4
diff --git a/include/curl/Makefile.am b/include/curl/Makefile.am
index 16d97e1c..a31f61b1 100644
--- a/include/curl/Makefile.am
+++ b/include/curl/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -25,8 +25,13 @@ pkginclude_HEADERS = \
pkgincludedir= $(includedir)/curl
+CHECKSRC = $(CS_$(V))
+CS_0 = @echo " RUN " $@;
+CS_1 =
+CS_ = $(CS_0)
+
checksrc:
- @@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(top_srcdir)/include/curl $(pkginclude_HEADERS)
+ $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(top_srcdir)/include/curl $(pkginclude_HEADERS)
if CURLDEBUG
# for debug builds, we scan the sources on all regular make invokes
diff --git a/include/curl/curl.h b/include/curl/curl.h
index 88e1f39e..86a24184 100644
--- a/include/curl/curl.h
+++ b/include/curl/curl.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -91,6 +91,11 @@
#include <support/SupportDefs.h>
#endif
+/* Compatibility for non-Clang compilers */
+#ifndef __has_declspec_attribute
+# define __has_declspec_attribute(x) 0
+#endif
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -109,7 +114,9 @@ typedef void CURLSH;
#ifdef CURL_STATICLIB
# define CURL_EXTERN
-#elif defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__)
+#elif defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__) || \
+ (__has_declspec_attribute(dllexport) && \
+ __has_declspec_attribute(dllimport))
# if defined(BUILDING_LIBCURL)
# define CURL_EXTERN __declspec(dllexport)
# else
@@ -144,7 +151,7 @@ typedef enum {
CURLSSLBACKEND_POLARSSL = 6,
CURLSSLBACKEND_WOLFSSL = 7,
CURLSSLBACKEND_SCHANNEL = 8,
- CURLSSLBACKEND_DARWINSSL = 9,
+ CURLSSLBACKEND_SECURETRANSPORT = 9,
CURLSSLBACKEND_AXTLS = 10, /* never used since 7.63.0 */
CURLSSLBACKEND_MBEDTLS = 11,
CURLSSLBACKEND_MESALINK = 12
@@ -153,7 +160,10 @@ typedef enum {
/* aliases for library clones and renames */
#define CURLSSLBACKEND_LIBRESSL CURLSSLBACKEND_OPENSSL
#define CURLSSLBACKEND_BORINGSSL CURLSSLBACKEND_OPENSSL
+
+/* deprecated names: */
#define CURLSSLBACKEND_CYASSL CURLSSLBACKEND_WOLFSSL
+#define CURLSSLBACKEND_DARWINSSL CURLSSLBACKEND_SECURETRANSPORT
struct curl_httppost {
struct curl_httppost *next; /* next entry in the list */
@@ -871,6 +881,14 @@ typedef enum {
#define CURLHEADER_UNIFIED 0
#define CURLHEADER_SEPARATE (1<<0)
+/* CURLALTSVC_* are bits for the CURLOPT_ALTSVC_CTRL option */
+#define CURLALTSVC_IMMEDIATELY (1<<0)
+#define CURLALTSVC_ALTUSED (1<<1)
+#define CURLALTSVC_READONLYFILE (1<<2)
+#define CURLALTSVC_H1 (1<<3)
+#define CURLALTSVC_H2 (1<<4)
+#define CURLALTSVC_H3 (1<<5)
+
/* CURLPROTO_ defines are for the CURLOPT_*PROTOCOLS options */
#define CURLPROTO_HTTP (1<<0)
#define CURLPROTO_HTTPS (1<<1)
@@ -1894,6 +1912,12 @@ typedef enum {
/* set this to 1L to allow HTTP/0.9 responses or 0L to disallow */
CINIT(HTTP09_ALLOWED, LONG, 285),
+ /* alt-svc control bitmask */
+ CINIT(ALTSVC_CTRL, LONG, 286),
+
+ /* alt-svc cache file name to possibly read from/write to */
+ CINIT(ALTSVC, STRINGPOINT, 287),
+
CURLOPT_LASTENTRY /* the last unused */
} CURLoption;
@@ -2756,6 +2780,7 @@ typedef struct {
#define CURL_VERSION_HTTPS_PROXY (1<<21) /* HTTPS-proxy support built-in */
#define CURL_VERSION_MULTI_SSL (1<<22) /* Multiple SSL backends available */
#define CURL_VERSION_BROTLI (1<<23) /* Brotli features are present. */
+#define CURL_VERSION_ALTSVC (1<<24) /* Alt-Svc handling built-in */
/*
* NAME curl_version_info()
diff --git a/include/curl/curlver.h b/include/curl/curlver.h
index 3b043345..9a4b9b02 100644
--- a/include/curl/curlver.h
+++ b/include/curl/curlver.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -26,17 +26,17 @@
a script at release-time. This was made its own header file in 7.11.2 */
/* This is the global package copyright */
-#define LIBCURL_COPYRIGHT "1996 - 2018 Daniel Stenberg, <daniel@haxx.se>."
+#define LIBCURL_COPYRIGHT "1996 - 2019 Daniel Stenberg, <daniel@haxx.se>."
/* This is the version number of the libcurl package from which this header
file origins: */
-#define LIBCURL_VERSION "7.64.0"
+#define LIBCURL_VERSION "7.64.1"
/* The numeric version number is also available "in parts" by using these
defines: */
#define LIBCURL_VERSION_MAJOR 7
#define LIBCURL_VERSION_MINOR 64
-#define LIBCURL_VERSION_PATCH 0
+#define LIBCURL_VERSION_PATCH 1
/* This is the numeric version of the libcurl version number, meant for easier
parsing and comparions by programs. The LIBCURL_VERSION_NUM define will
@@ -57,7 +57,7 @@
CURL_VERSION_BITS() macro since curl's own configure script greps for it
and needs it to contain the full number.
*/
-#define LIBCURL_VERSION_NUM 0x074000
+#define LIBCURL_VERSION_NUM 0x074001
/*
* This is the date and time when the full source package was created. The
@@ -68,7 +68,7 @@
*
* "2007-11-23"
*/
-#define LIBCURL_TIMESTAMP "2019-02-06"
+#define LIBCURL_TIMESTAMP "2019-03-27"
#define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|z)
#define CURL_AT_LEAST_VERSION(x,y,z) \
diff --git a/include/curl/typecheck-gcc.h b/include/curl/typecheck-gcc.h
index 01df7b15..8018ea37 100644
--- a/include/curl/typecheck-gcc.h
+++ b/include/curl/typecheck-gcc.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -256,6 +256,7 @@ _CURL_WARNING(_curl_easy_getinfo_err_curl_off_t,
#define _curl_is_string_option(option) \
((option) == CURLOPT_ABSTRACT_UNIX_SOCKET || \
(option) == CURLOPT_ACCEPT_ENCODING || \
+ (option) == CURLOPT_ALTSVC || \
(option) == CURLOPT_CAINFO || \
(option) == CURLOPT_CAPATH || \
(option) == CURLOPT_COOKIE || \
diff --git a/lib/Makefile.am b/lib/Makefile.am
index f2034a2f..7c258b3f 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -131,9 +131,14 @@ include Makefile.inc
libcurl_la_SOURCES = $(CSOURCES) $(HHEADERS)
libcurlu_la_SOURCES = $(CSOURCES) $(HHEADERS)
+CHECKSRC = $(CS_$(V))
+CS_0 = @echo " RUN " $@;
+CS_1 =
+CS_ = $(CS_0)
+
checksrc:
- @PERL@ $(srcdir)/checksrc.pl -D$(srcdir) -W$(srcdir)/curl_config.h \
- $(srcdir)/*.[ch] $(srcdir)/vauth/*.[ch] $(srcdir)/vtls/*.[ch]
+ $(CHECKSRC)(@PERL@ $(srcdir)/checksrc.pl -D$(srcdir) -W$(srcdir)/curl_config.h \
+ $(srcdir)/*.[ch] $(srcdir)/vauth/*.[ch] $(srcdir)/vtls/*.[ch])
if CURLDEBUG
# for debug builds, we scan the sources on all regular make invokes
diff --git a/lib/Makefile.inc b/lib/Makefile.inc
index 54acd6ce..6c47bcda 100644
--- a/lib/Makefile.inc
+++ b/lib/Makefile.inc
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -30,11 +30,11 @@ LIB_VAUTH_HFILES = vauth/vauth.h vauth/digest.h vauth/ntlm.h
LIB_VTLS_CFILES = vtls/openssl.c vtls/gtls.c vtls/vtls.c vtls/nss.c \
vtls/polarssl.c vtls/polarssl_threadlock.c \
vtls/cyassl.c vtls/schannel.c vtls/schannel_verify.c \
- vtls/darwinssl.c vtls/gskit.c vtls/mbedtls.c vtls/mesalink.c
+ vtls/sectransp.c vtls/gskit.c vtls/mbedtls.c vtls/mesalink.c
LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h \
vtls/nssg.h vtls/polarssl.h vtls/polarssl_threadlock.h \
- vtls/cyassl.h vtls/schannel.h vtls/darwinssl.h vtls/gskit.h \
+ vtls/cyassl.h vtls/schannel.h vtls/sectransp.h vtls/gskit.h \
vtls/mbedtls.h vtls/mesalink.h
LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
@@ -55,7 +55,7 @@ LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
curl_multibyte.c hostcheck.c conncache.c pipeline.c dotdot.c \
x509asn1.c http2.c smb.c curl_endian.c curl_des.c system_win32.c \
mime.c sha256.c setopt.c curl_path.c curl_ctype.c curl_range.c psl.c \
- doh.c urlapi.c
+ doh.c urlapi.c altsvc.c
LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h \
@@ -75,7 +75,8 @@ LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
curl_setup_once.h multihandle.h setup-vms.h pipeline.h dotdot.h \
x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h \
curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h \
- curl_path.h curl_ctype.h curl_range.h psl.h doh.h urlapi-int.h
+ curl_path.h curl_ctype.h curl_range.h psl.h doh.h urlapi-int.h \
+ altsvc.h
LIB_RCFILES = libcurl.rc
diff --git a/lib/altsvc.c b/lib/altsvc.c
new file mode 100644
index 00000000..16434664
--- /dev/null
+++ b/lib/altsvc.c
@@ -0,0 +1,571 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+/*
+ * The Alt-Svc: header is defined in RFC 7838:
+ * https://tools.ietf.org/html/rfc7838
+ */
+#include "curl_setup.h"
+
+#if !defined(CURL_DISABLE_HTTP) && defined(USE_ALTSVC)
+#include <curl/curl.h>
+#include "urldata.h"
+#include "altsvc.h"
+#include "cookie.h" /* for Curl_get_line() */
+#include "strcase.h"
+#include "parsedate.h"
+#include "sendf.h"
+#include "warnless.h"
+
+/* The last 3 #include files should be in this order */
+#include "curl_printf.h"
+#include "curl_memory.h"
+#include "memdebug.h"
+
+#define MAX_ALTSVC_LINE 4095
+#define MAX_ALTSVC_DATELENSTR "64"
+#define MAX_ALTSVC_DATELEN 64
+#define MAX_ALTSVC_HOSTLENSTR "512"
+#define MAX_ALTSVC_HOSTLEN 512
+#define MAX_ALTSVC_ALPNLENSTR "10"
+#define MAX_ALTSVC_ALPNLEN 10
+
+static enum alpnid alpn2alpnid(char *name)
+{
+ if(strcasecompare(name, "h1"))
+ return ALPN_h1;
+ if(strcasecompare(name, "h2"))
+ return ALPN_h2;
+ if(strcasecompare(name, "h2c"))
+ return ALPN_h2c;
+ if(strcasecompare(name, "h3"))
+ return ALPN_h3;
+ return ALPN_none; /* unknown, probably rubbish input */
+}
+
+/* Given the ALPN ID, return the name */
+const char *Curl_alpnid2str(enum alpnid id)
+{
+ switch(id) {
+ case ALPN_h1:
+ return "h1";
+ case ALPN_h2:
+ return "h2";
+ case ALPN_h2c:
+ return "h2c";
+ case ALPN_h3:
+ return "h3";
+ default:
+ return ""; /* bad */
+ }
+}
+
+
+static void altsvc_free(struct altsvc *as)
+{
+ free(as->srchost);
+ free(as->dsthost);
+ free(as);
+}
+
+static struct altsvc *altsvc_createid(const char *srchost,
+ const char *dsthost,
+ enum alpnid srcalpnid,
+ enum alpnid dstalpnid,
+ unsigned int srcport,
+ unsigned int dstport)
+{
+ struct altsvc *as = calloc(sizeof(struct altsvc), 1);
+ if(!as)
+ return NULL;
+
+ as->srchost = strdup(srchost);
+ if(!as->srchost)
+ goto error;
+ as->dsthost = strdup(dsthost);
+ if(!as->dsthost)
+ goto error;
+
+ as->srcalpnid = srcalpnid;
+ as->dstalpnid = dstalpnid;
+ as->srcport = curlx_ultous(srcport);
+ as->dstport = curlx_ultous(dstport);
+
+ return as;
+ error:
+ altsvc_free(as);
+ return NULL;
+}
+
+static struct altsvc *altsvc_create(char *srchost,
+ char *dsthost,
+ char *srcalpn,
+ char *dstalpn,
+ unsigned int srcport,
+ unsigned int dstport)
+{
+ enum alpnid dstalpnid = alpn2alpnid(dstalpn);
+ enum alpnid srcalpnid = alpn2alpnid(srcalpn);
+ if(!srcalpnid || !dstalpnid)
+ return NULL;
+ return altsvc_createid(srchost, dsthost, srcalpnid, dstalpnid,
+ srcport, dstport);
+}
+
+/* only returns SERIOUS errors */
+static CURLcode altsvc_add(struct altsvcinfo *asi, char *line)
+{
+ /* Example line:
+ h2 example.com 443 h3 shiny.example.com 8443 "20191231 10:00:00" 1
+ */
+ char srchost[MAX_ALTSVC_HOSTLEN + 1];
+ char dsthost[MAX_ALTSVC_HOSTLEN + 1];
+ char srcalpn[MAX_ALTSVC_ALPNLEN + 1];
+ char dstalpn[MAX_ALTSVC_ALPNLEN + 1];
+ char date[MAX_ALTSVC_DATELEN + 1];
+ unsigned int srcport;
+ unsigned int dstport;
+ unsigned int prio;
+ unsigned int persist;
+ int rc;
+
+ rc = sscanf(line,
+ "%" MAX_ALTSVC_ALPNLENSTR "s %" MAX_ALTSVC_HOSTLENSTR "s %u "
+ "%" MAX_ALTSVC_ALPNLENSTR "s %" MAX_ALTSVC_HOSTLENSTR "s %u "
+ "\"%" MAX_ALTSVC_DATELENSTR "[^\"]\" %u %u",
+ srcalpn, srchost, &srcport,
+ dstalpn, dsthost, &dstport,
+ date, &persist, &prio);
+ if(9 == rc) {
+ struct altsvc *as;
+ time_t expires = curl_getdate(date, NULL);
+ as = altsvc_create(srchost, dsthost, srcalpn, dstalpn, srcport, dstport);
+ if(as) {
+ as->expires = expires;
+ as->prio = prio;
+ as->persist = persist ? 1 : 0;
+ Curl_llist_insert_next(&asi->list, asi->list.tail, as, &as->node);
+ asi->num++; /* one more entry */
+ }
+ }
+
+ return CURLE_OK;
+}
+
+/*
+ * Load alt-svc entries from the given file. The text based line-oriented file
+ * format is documented here:
+ * https://github.com/curl/curl/wiki/QUIC-implementation
+ *
+ * This function only returns error on major problems that prevents alt-svc
+ * handling to work completely. It will ignore individual syntactical errors
+ * etc.
+ */
+static CURLcode altsvc_load(struct altsvcinfo *asi, const char *file)
+{
+ CURLcode result = CURLE_OK;
+ char *line = NULL;
+ FILE *fp = fopen(file, FOPEN_READTEXT);
+ if(fp) {
+ line = malloc(MAX_ALTSVC_LINE);
+ if(!line)
+ goto fail;
+ while(Curl_get_line(line, MAX_ALTSVC_LINE, fp)) {
+ char *lineptr = line;
+ while(*lineptr && ISBLANK(*lineptr))
+ lineptr++;
+ if(*lineptr == '#')
+ /* skip commented lines */
+ continue;
+
+ altsvc_add(asi, lineptr);
+ }
+ free(line); /* free the line buffer */
+ fclose(fp);
+ }
+ return result;
+
+ fail:
+ free(line);
+ fclose(fp);
+ return CURLE_OUT_OF_MEMORY;
+}
+
+/*
+ * Write this single altsvc entry to a single output line
+ */
+
+static CURLcode altsvc_out(struct altsvc *as, FILE *fp)
+{
+ struct tm stamp;
+ CURLcode result = Curl_gmtime(as->expires, &stamp);
+ if(result)
+ return result;
+
+ fprintf(fp,
+ "%s %s %u "
+ "%s %s %u "
+ "\"%d%02d%02d "
+ "%02d:%02d:%02d\" "
+ "%u %d\n",
+ Curl_alpnid2str(as->srcalpnid), as->srchost, as->srcport,
+ Curl_alpnid2str(as->dstalpnid), as->dsthost, as->dstport,
+ stamp.tm_year + 1900, stamp.tm_mon + 1, stamp.tm_mday,
+ stamp.tm_hour, stamp.tm_min, stamp.tm_sec,
+ as->persist, as->prio);
+ return CURLE_OK;
+}
+
+/* ---- library-wide functions below ---- */
+
+/*
+ * Curl_altsvc_init() creates a new altsvc cache.
+ * It returns the new instance or NULL if something goes wrong.
+ */
+struct altsvcinfo *Curl_altsvc_init(void)
+{
+ struct altsvcinfo *asi = calloc(sizeof(struct altsvcinfo), 1);
+ if(!asi)
+ return NULL;
+ Curl_llist_init(&asi->list, NULL);
+
+ /* set default behavior */
+ asi->flags = CURLALTSVC_H1
+#ifdef USE_NGHTTP2
+ | CURLALTSVC_H2
+#endif
+#ifdef USE_HTTP3
+ /* TODO: adjust when known */
+ | CURLALTSVC_H3
+#endif
+ ;
+ return asi;
+}
+
+/*
+ * Curl_altsvc_load() loads alt-svc from file.
+ */
+CURLcode Curl_altsvc_load(struct altsvcinfo *asi, const char *file)
+{
+ CURLcode result;
+ DEBUGASSERT(asi);
+ result = altsvc_load(asi, file);
+ return result;
+}
+
+/*
+ * Curl_altsvc_ctrl() passes on the external bitmask.
+ */
+CURLcode Curl_altsvc_ctrl(struct altsvcinfo *asi, const long ctrl)
+{
+ DEBUGASSERT(asi);
+ if(!ctrl)
+ /* unexpected */
+ return CURLE_BAD_FUNCTION_ARGUMENT;
+ asi->flags = ctrl;
+ return CURLE_OK;
+}
+
+/*
+ * Curl_altsvc_cleanup() frees an altsvc cache instance and all associated
+ * resources.
+ */
+void Curl_altsvc_cleanup(struct altsvcinfo *altsvc)
+{
+ struct curl_llist_element *e;
+ struct curl_llist_element *n;
+ if(altsvc) {
+ for(e = altsvc->list.head; e; e = n) {
+ struct altsvc *as = e->ptr;
+ n = e->next;
+ altsvc_free(as);
+ }
+ free(altsvc);
+ }
+}
+
+/*
+ * Curl_altsvc_save() writes the altsvc cache to a file.
+ */
+CURLcode Curl_altsvc_save(struct altsvcinfo *altsvc, const char *file)
+{
+ struct curl_llist_element *e;
+ struct curl_llist_element *n;
+ CURLcode result = CURLE_OK;
+ FILE *out;
+
+ if(!altsvc)
+ /* no cache activated */
+ return CURLE_OK;
+
+ if((altsvc->flags & CURLALTSVC_READONLYFILE) || !file[0])
+ /* marked as read-only or zero length file name */
+ return CURLE_OK;
+ out = fopen(file, FOPEN_WRITETEXT);
+ if(!out)
+ return CURLE_WRITE_ERROR;
+ fputs("# Your alt-svc cache. https://curl.haxx.se/docs/alt-svc.html\n"
+ "# This file was generated by libcurl! Edit at your own risk.\n",
+ out);
+ for(e = altsvc->list.head; e; e = n) {
+ struct altsvc *as = e->ptr;
+ n = e->next;
+ result = altsvc_out(as, out);
+ if(result)
+ break;
+ }
+ fclose(out);
+ return result;
+}
+
+static CURLcode getalnum(const char **ptr, char *alpnbuf, size_t buflen)
+{
+ size_t len;
+ const char *protop;
+ const char *p = *ptr;
+ while(*p && ISBLANK(*p))
+ p++;
+ protop = p;
+ while(*p && ISALNUM(*p))
+ p++;
+ len = p - protop;
+
+ if(!len || (len >= buflen))
+ return CURLE_BAD_FUNCTION_ARGUMENT; /* TODO: improve error code */
+ memcpy(alpnbuf, protop, len);
+ alpnbuf[len] = 0;
+ *ptr = p;
+ return CURLE_OK;
+}
+
+/* altsvc_flush() removes all alternatives for this source origin from the
+ list */
+static void altsvc_flush(struct altsvcinfo *asi, enum alpnid srcalpnid,
+ const char *srchost, unsigned short srcport)
+{
+ struct curl_llist_element *e;
+ struct curl_llist_element *n;
+ for(e = asi->list.head; e; e = n) {
+ struct altsvc *as = e->ptr;
+ n = e->next;
+ if((srcalpnid == as->srcalpnid) &&
+ (srcport == as->srcport) &&
+ strcasecompare(srchost, as->srchost)) {
+ Curl_llist_remove(&asi->list, e, NULL);
+ altsvc_free(as);
+ asi->num--;
+ }
+ }
+}
+
+#ifdef DEBUGBUILD
+/* to play well with debug builds, we can *set* a fixed time this will
+ return */
+static time_t debugtime(void *unused)
+{
+ char *timestr = getenv("CURL_TIME");
+ (void)unused;
+ if(timestr) {
+ unsigned long val = strtol(timestr, NULL, 10);
+ return (time_t)val;
+ }
+ return time(NULL);
+}
+#define time(x) debugtime(x)
+#endif
+
+/*
+ * Curl_altsvc_parse() takes an incoming alt-svc response header and stores
+ * the data correctly in the cache.
+ *
+ * 'value' points to the header *value*. That's contents to the right of the
+ * header name.
+ */
+CURLcode Curl_altsvc_parse(struct Curl_easy *data,
+ struct altsvcinfo *asi, const char *value,
+ enum alpnid srcalpnid, const char *srchost,
+ unsigned short srcport)
+{
+ const char *p = value;
+ size_t len;
+ enum alpnid dstalpnid = srcalpnid; /* the same by default */
+ char namebuf[MAX_ALTSVC_HOSTLEN] = "";
+ char alpnbuf[MAX_ALTSVC_ALPNLEN] = "";
+ struct altsvc *as;
+ unsigned short dstport = srcport; /* the same by default */
+ const char *semip;
+ time_t maxage = 24 * 3600; /* default is 24 hours */
+ bool persist = FALSE;
+ CURLcode result = getalnum(&p, alpnbuf, sizeof(alpnbuf));
+ if(result)
+ return result;
+
+ DEBUGASSERT(asi);
+
+ /* Flush all cached alternatives for this source origin, if any */
+ altsvc_flush(asi, srcalpnid, srchost, srcport);
+
+ /* "clear" is a magic keyword */
+ if(strcasecompare(alpnbuf, "clear")) {
+ /* TODO: clear whatever it is it should clear */
+ return CURLE_OK;
+ }
+
+ /* The 'ma' and 'persist' flags are annoyingly meant for all alternatives
+ but are set after the list on the line. Scan for the semicolons and get
+ those fields first! */
+ semip = p;
+ do {
+ semip = strchr(semip, ';');
+ if(semip) {
+ char option[32];
+ unsigned long num;
+ char *end_ptr;
+ semip++; /* pass the semicolon */
+ result = getalnum(&semip, option, sizeof(option));
+ if(result)
+ break;
+ while(*semip && ISBLANK(*semip))
+ semip++;
+ if(*semip != '=')
+ continue;
+ semip++;
+ num = strtoul(semip, &end_ptr, 10);
+ if(num < ULONG_MAX) {
+ if(strcasecompare("ma", option))
+ maxage = num;
+ else if(strcasecompare("persist", option) && (num == 1))
+ persist = TRUE;
+ }
+ semip = end_ptr;
+ }
+ } while(semip);
+
+ do {
+ if(*p == '=') {
+ /* [protocol]="[host][:port]" */
+ dstalpnid = alpn2alpnid(alpnbuf);
+ if(!dstalpnid) {
+ infof(data, "Unknown alt-svc protocol \"%s\", ignoring...\n", alpnbuf);
+ return CURLE_OK;
+ }
+ p++;
+ if(*p == '\"') {
+ const char *dsthost;
+ p++;
+ if(*p != ':') {
+ /* host name starts here */
+ const char *hostp = p;
+ while(*p && (ISALNUM(*p) || (*p == '.') || (*p == '-')))
+ p++;
+ len = p - hostp;
+ if(!len || (len >= MAX_ALTSVC_HOSTLEN))
+ return CURLE_BAD_FUNCTION_ARGUMENT; /* TODO: improve error code */
+ memcpy(namebuf, hostp, len);
+ namebuf[len] = 0;
+ dsthost = namebuf;
+ }
+ else {
+ /* no destination name, use source host */
+ dsthost = srchost;
+ }
+ if(*p == ':') {
+ /* a port number */
+ char *end_ptr;
+ unsigned long port = strtoul(++p, &end_ptr, 10);
+ if(port > USHRT_MAX || end_ptr == p || *end_ptr != '\"') {
+ infof(data, "Unknown alt-svc port number, ignoring...\n");
+ return CURLE_OK;
+ }
+ p = end_ptr;
+ dstport = curlx_ultous(port);
+ }
+ if(*p++ != '\"')
+ return CURLE_BAD_FUNCTION_ARGUMENT;
+ as = altsvc_createid(srchost, dsthost,
+ srcalpnid, dstalpnid,
+ srcport, dstport);
+ if(as) {
+ /* TODO: the expires time also needs to take the Age: value (if any)
+ into account. [See RFC 7838 section 3.1] */
+ as->expires = maxage + time(NULL);
+ as->persist = persist;
+ Curl_llist_insert_next(&asi->list, asi->list.tail, as, &as->node);
+ asi->num++; /* one more entry */
+ infof(data, "Added alt-svc: %s:%d over %s\n", dsthost, dstport,
+ Curl_alpnid2str(dstalpnid));
+ }
+ }
+ /* after the double quote there can be a comma if there's another
+ string or a semicolon if no more */
+ if(*p == ',') {
+ /* comma means another alternative is presented */
+ p++;
+ result = getalnum(&p, alpnbuf, sizeof(alpnbuf));
+ if(result)
+ /* failed to parse, but since we already did at least one host we
+ return OK */
+ return CURLE_OK;
+ }
+ }
+ } while(*p && (*p != ';') && (*p != '\n') && (*p != '\r'));
+
+ return CURLE_OK;
+}
+
+/*
+ * Return TRUE on a match
+ */
+bool Curl_altsvc_lookup(struct altsvcinfo *asi,
+ enum alpnid srcalpnid, const char *srchost,
+ int srcport,
+ enum alpnid *dstalpnid, const char **dsthost,
+ int *dstport)
+{
+ struct curl_llist_element *e;
+ struct curl_llist_element *n;
+ time_t now = time(NULL);
+ DEBUGASSERT(asi);
+ DEBUGASSERT(srchost);
+ DEBUGASSERT(dsthost);
+
+ for(e = asi->list.head; e; e = n) {
+ struct altsvc *as = e->ptr;
+ n = e->next;
+ if(as->expires < now) {
+ /* an expired entry, remove */
+ altsvc_free(as);
+ continue;
+ }
+ if((as->srcalpnid == srcalpnid) &&
+ strcasecompare(as->srchost, srchost) &&
+ as->srcport == srcport) {
+ /* match */
+ *dstalpnid = as->dstalpnid;
+ *dsthost = as->dsthost;
+ *dstport = as->dstport;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+#endif /* CURL_DISABLE_HTTP || USE_ALTSVC */
diff --git a/lib/altsvc.h b/lib/altsvc.h
new file mode 100644
index 00000000..eefb45bf
--- /dev/null
+++ b/lib/altsvc.h
@@ -0,0 +1,77 @@
+#ifndef HEADER_CURL_ALTSVC_H
+#define HEADER_CURL_ALTSVC_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include "curl_setup.h"
+
+#if !defined(CURL_DISABLE_HTTP) && defined(USE_ALTSVC)
+#include <curl/curl.h>
+#include "llist.h"
+
+enum alpnid {
+ ALPN_none,
+ ALPN_h1,
+ ALPN_h2,
+ ALPN_h2c,
+ ALPN_h3
+};
+
+struct altsvc {
+ char *srchost;
+ char *dsthost;
+ unsigned short srcport;
+ unsigned short dstport;
+ enum alpnid srcalpnid;
+ enum alpnid dstalpnid;
+ time_t expires;
+ bool persist;
+ int prio;
+ struct curl_llist_element node;
+};
+
+struct altsvcinfo {
+ char *filename;
+ struct curl_llist list; /* list of entries */
+ size_t num; /* number of alt-svc entries */
+ long flags; /* the publicly set bitmask */
+};
+
+const char *Curl_alpnid2str(enum alpnid id);
+struct altsvcinfo *Curl_altsvc_init(void);
+CURLcode Curl_altsvc_load(struct altsvcinfo *asi, const char *file);
+CURLcode Curl_altsvc_save(struct altsvcinfo *asi, const char *file);
+CURLcode Curl_altsvc_ctrl(struct altsvcinfo *asi, const long ctrl);
+void Curl_altsvc_cleanup(struct altsvcinfo *altsvc);
+CURLcode Curl_altsvc_parse(struct Curl_easy *data,
+ struct altsvcinfo *altsvc, const char *value,
+ enum alpnid srcalpn, const char *srchost,
+ unsigned short srcport);
+bool Curl_altsvc_lookup(struct altsvcinfo *asi,
+ enum alpnid srcalpnid, const char *srchost,
+ int srcport,
+ enum alpnid *dstalpnid, const char **dsthost,
+ int *dstport);
+#else
+/* disabled */
+#define Curl_altsvc_save(a,b)
+#endif /* CURL_DISABLE_HTTP || USE_ALTSVC */
+#endif /* HEADER_CURL_ALTSVC_H */
diff --git a/lib/amigaos.c b/lib/amigaos.c
index 4f55b30e..cf44bdc8 100644
--- a/lib/amigaos.c
+++ b/lib/amigaos.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -22,17 +22,26 @@
#include "curl_setup.h"
-#if defined(__AMIGA__) && !defined(__ixemul__)
-
-#include <amitcp/socketbasetags.h>
+#ifdef __AMIGA__
+# include "amigaos.h"
+# if defined(HAVE_PROTO_BSDSOCKET_H) && !defined(USE_AMISSL)
+# include <amitcp/socketbasetags.h>
+# endif
+# ifdef __libnix__
+# include <stabs.h>
+# endif
+#endif
-#include "amigaos.h"
+/* The last #include files should be: */
+#include "curl_memory.h"
+#include "memdebug.h"
+#ifdef __AMIGA__
+#if defined(HAVE_PROTO_BSDSOCKET_H) && !defined(USE_AMISSL)
struct Library *SocketBase = NULL;
extern int errno, h_errno;
#ifdef __libnix__
-#include <stabs.h>
void __request(const char *msg);
#else
# define __request(msg) Printf(msg "\n\a")
@@ -74,4 +83,13 @@ bool Curl_amiga_init()
ADD2EXIT(Curl_amiga_cleanup, -50);
#endif
-#endif /* __AMIGA__ && ! __ixemul__ */
+#endif /* HAVE_PROTO_BSDSOCKET_H */
+
+#ifdef USE_AMISSL
+void Curl_amiga_X509_free(X509 *a)
+{
+ X509_free(a);
+}
+#endif /* USE_AMISSL */
+#endif /* __AMIGA__ */
+
diff --git a/lib/amigaos.h b/lib/amigaos.h
index 7c0926cc..c776c9c9 100644
--- a/lib/amigaos.h
+++ b/lib/amigaos.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -23,7 +23,7 @@
***************************************************************************/
#include "curl_setup.h"
-#if defined(__AMIGA__) && !defined(__ixemul__)
+#if defined(__AMIGA__) && defined(HAVE_BSDSOCKET_H) && !defined(USE_AMISSL)
bool Curl_amiga_init();
void Curl_amiga_cleanup();
@@ -35,4 +35,10 @@ void Curl_amiga_cleanup();
#endif
+#ifdef USE_AMISSL
+#include <openssl/x509v3.h>
+void Curl_amiga_X509_free(X509 *a);
+#endif /* USE_AMISSL */
+
#endif /* HEADER_CURL_AMIGAOS_H */
+
diff --git a/lib/asyn-thread.c b/lib/asyn-thread.c
index a9679d06..55e0811c 100644
--- a/lib/asyn-thread.c
+++ b/lib/asyn-thread.c
@@ -461,6 +461,42 @@ static CURLcode resolver_error(struct connectdata *conn)
return result;
}
+static CURLcode thread_wait_resolv(struct connectdata *conn,
+ struct Curl_dns_entry **entry,
+ bool report)
+{
+ struct thread_data *td = (struct thread_data*) conn->async.os_specific;
+ CURLcode result = CURLE_OK;
+
+ DEBUGASSERT(conn && td);
+ DEBUGASSERT(td->thread_hnd != curl_thread_t_null);
+
+ /* wait for the thread to resolve the name */
+ if(Curl_thread_join(&td->thread_hnd)) {
+ if(entry)
+ result = getaddrinfo_complete(conn);
+ }
+ else
+ DEBUGASSERT(0);
+
+ conn->async.done = TRUE;
+
+ if(entry)
+ *entry = conn->async.dns;
+
+ if(!conn->async.dns && report)
+ /* a name was not resolved, report error */
+ result = resolver_error(conn);
+
+ destroy_async_data(&conn->async);
+
+ if(!conn->async.dns && report)
+ connclose(conn, "asynch resolve failed");
+
+ return result;
+}
+
+
/*
* Until we gain a way to signal the resolver threads to stop early, we must
* simply wait for them and ignore their results.
@@ -473,7 +509,7 @@ void Curl_resolver_kill(struct connectdata *conn)
unfortunately. Otherwise, we can simply cancel to clean up any resolver
data. */
if(td && td->thread_hnd != curl_thread_t_null)
- (void)Curl_resolver_wait_resolv(conn, NULL);
+ (void)thread_wait_resolv(conn, NULL, FALSE);
else
Curl_resolver_cancel(conn);
}
@@ -494,35 +530,7 @@ void Curl_resolver_kill(struct connectdata *conn)
CURLcode Curl_resolver_wait_resolv(struct connectdata *conn,
struct Curl_dns_entry **entry)
{
- struct thread_data *td = (struct thread_data*) conn->async.os_specific;
- CURLcode result = CURLE_OK;
-
- DEBUGASSERT(conn && td);
- DEBUGASSERT(td->thread_hnd != curl_thread_t_null);
-
- /* wait for the thread to resolve the name */
- if(Curl_thread_join(&td->thread_hnd)) {
- if(entry)
- result = getaddrinfo_complete(conn);
- }
- else
- DEBUGASSERT(0);
-
- conn->async.done = TRUE;
-
- if(entry)
- *entry = conn->async.dns;
-
- if(!conn->async.dns)
- /* a name was not resolved, report error */
- result = resolver_error(conn);
-
- destroy_async_data(&conn->async);
-
- if(!conn->async.dns)
- connclose(conn, "asynch resolve failed");
-
- return result;
+ return thread_wait_resolv(conn, entry, TRUE);
}
/*
diff --git a/lib/config-os400.h b/lib/config-os400.h
index 7844444f..bde4f0b3 100644
--- a/lib/config-os400.h
+++ b/lib/config-os400.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -425,6 +425,9 @@
/* Define if you can safely include both <sys/time.h> and <time.h>. */
#define TIME_WITH_SYS_TIME
+/* Define to enable alt-svc support (experimental) */
+#undef USE_ALTSVC
+
/* Version number of package */
#undef VERSION
diff --git a/lib/config-vxworks.h b/lib/config-vxworks.h
index a03e341e..8790f826 100644
--- a/lib/config-vxworks.h
+++ b/lib/config-vxworks.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -161,9 +161,6 @@
/* Define to 1 if you have a working fcntl O_NONBLOCK function. */
#define HAVE_FCNTL_O_NONBLOCK 1
-/* Define to 1 if you have the fdopen function. */
-#define HAVE_FDOPEN 1
-
/* Define to 1 if you have the `fork' function. */
#define HAVE_FORK 1
diff --git a/lib/conncache.c b/lib/conncache.c
index 78ad386c..39302ba7 100644
--- a/lib/conncache.c
+++ b/lib/conncache.c
@@ -392,8 +392,8 @@ bool Curl_conncache_foreach(struct Curl_easy *data,
NOTE: no locking is done here as this is presumably only done when cleaning
up a cache!
*/
-struct connectdata *
-Curl_conncache_find_first_connection(struct conncache *connc)
+static struct connectdata *
+conncache_find_first_connection(struct conncache *connc)
{
struct curl_hash_iterator iter;
struct curl_hash_element *he;
@@ -433,6 +433,7 @@ bool Curl_conncache_return_conn(struct connectdata *conn)
data->multi->maxconnects;
struct connectdata *conn_candidate = NULL;
+ conn->data = NULL; /* no owner anymore */
if(maxconnects > 0 &&
Curl_conncache_size(data) > maxconnects) {
infof(data, "Connection cache is full, closing the oldest one.\n");
@@ -476,7 +477,7 @@ Curl_conncache_extract_bundle(struct Curl_easy *data,
while(curr) {
conn = curr->ptr;
- if(!CONN_INUSE(conn)) {
+ if(!CONN_INUSE(conn) && !conn->data) {
/* Set higher score for the age passed since the connection was used */
score = Curl_timediff(now, conn->now);
@@ -534,7 +535,7 @@ Curl_conncache_extract_oldest(struct Curl_easy *data)
while(curr) {
conn = curr->ptr;
- if(!CONN_INUSE(conn)) {
+ if(!CONN_INUSE(conn) && !conn->data) {
/* Set higher score for the age passed since the connection was used */
score = Curl_timediff(now, conn->now);
@@ -566,7 +567,7 @@ void Curl_conncache_close_all_connections(struct conncache *connc)
{
struct connectdata *conn;
- conn = Curl_conncache_find_first_connection(connc);
+ conn = conncache_find_first_connection(connc);
while(conn) {
SIGPIPE_VARIABLE(pipe_st);
conn->data = connc->closure_handle;
@@ -577,7 +578,7 @@ void Curl_conncache_close_all_connections(struct conncache *connc)
(void)Curl_disconnect(connc->closure_handle, conn, FALSE);
sigpipe_restore(&pipe_st);
- conn = Curl_conncache_find_first_connection(connc);
+ conn = conncache_find_first_connection(connc);
}
if(connc->closure_handle) {
diff --git a/lib/connect.c b/lib/connect.c
index ec3cd3a7..a53d79c2 100644
--- a/lib/connect.c
+++ b/lib/connect.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -446,9 +446,10 @@ static CURLcode bindlocal(struct connectdata *conn,
curl_socklen_t size = sizeof(add);
memset(&add, 0, sizeof(struct Curl_sockaddr_storage));
if(getsockname(sockfd, (struct sockaddr *) &add, &size) < 0) {
+ char buffer[STRERROR_LEN];
data->state.os_errno = error = SOCKERRNO;
failf(data, "getsockname() failed with errno %d: %s",
- error, Curl_strerror(conn, error));
+ error, Curl_strerror(error, buffer, sizeof(buffer)));
return CURLE_INTERFACE_FAILED;
}
infof(data, "Local port: %hu\n", port);
@@ -470,10 +471,12 @@ static CURLcode bindlocal(struct connectdata *conn,
else
break;
}
-
- data->state.os_errno = error = SOCKERRNO;
- failf(data, "bind failed with errno %d: %s",
- error, Curl_strerror(conn, error));
+ {
+ char buffer[STRERROR_LEN];
+ data->state.os_errno = error = SOCKERRNO;
+ failf(data, "bind failed with errno %d: %s",
+ error, Curl_strerror(error, buffer, sizeof(buffer)));
+ }
return CURLE_INTERFACE_FAILED;
}
@@ -617,10 +620,13 @@ void Curl_persistconninfo(struct connectdata *conn)
conn->data->info.conn_local_port = conn->local_port;
}
+UNITTEST bool getaddressinfo(struct sockaddr *sa, char *addr,
+ long *port);
+
/* retrieves ip address and port from a sockaddr structure.
note it calls Curl_inet_ntop which sets errno on fail, not SOCKERRNO. */
-bool Curl_getaddressinfo(struct sockaddr *sa, char *addr,
- long *port)
+UNITTEST bool getaddressinfo(struct sockaddr *sa, char *addr,
+ long *port)
{
unsigned short us_port;
struct sockaddr_in *si = NULL;
@@ -683,11 +689,12 @@ void Curl_updateconninfo(struct connectdata *conn, curl_socket_t sockfd)
return;
if(!conn->bits.reuse && !conn->bits.tcp_fastopen) {
+ char buffer[STRERROR_LEN];
len = sizeof(struct Curl_sockaddr_storage);
if(getpeername(sockfd, (struct sockaddr*) &ssrem, &len)) {
int error = SOCKERRNO;
failf(data, "getpeername() failed with errno %d: %s",
- error, Curl_strerror(conn, error));
+ error, Curl_strerror(error, buffer, sizeof(buffer)));
return;
}
@@ -696,22 +703,22 @@ void Curl_updateconninfo(struct connectdata *conn, curl_socket_t sockfd)
if(getsockname(sockfd, (struct sockaddr*) &ssloc, &len)) {
int error = SOCKERRNO;
failf(data, "getsockname() failed with errno %d: %s",
- error, Curl_strerror(conn, error));
+ error, Curl_strerror(error, buffer, sizeof(buffer)));
return;
}
- if(!Curl_getaddressinfo((struct sockaddr*)&ssrem,
- conn->primary_ip, &conn->primary_port)) {
+ if(!getaddressinfo((struct sockaddr*)&ssrem,
+ conn->primary_ip, &conn->primary_port)) {
failf(data, "ssrem inet_ntop() failed with errno %d: %s",
- errno, Curl_strerror(conn, errno));
+ errno, Curl_strerror(errno, buffer, sizeof(buffer)));
return;
}
memcpy(conn->ip_addr_str, conn->primary_ip, MAX_IPADR_LEN);
- if(!Curl_getaddressinfo((struct sockaddr*)&ssloc,
- conn->local_ip, &conn->local_port)) {
+ if(!getaddressinfo((struct sockaddr*)&ssloc,
+ conn->local_ip, &conn->local_port)) {
failf(data, "ssloc inet_ntop() failed with errno %d: %s",
- errno, Curl_strerror(conn, errno));
+ errno, Curl_strerror(errno, buffer, sizeof(buffer)));
return;
}
@@ -836,9 +843,11 @@ CURLcode Curl_is_connected(struct connectdata *conn,
if(conn->tempaddr[i]) {
CURLcode status;
char ipaddress[MAX_IPADR_LEN];
+ char buffer[STRERROR_LEN];
Curl_printable_address(conn->tempaddr[i], ipaddress, MAX_IPADR_LEN);
infof(data, "connect to %s port %ld failed: %s\n",
- ipaddress, conn->port, Curl_strerror(conn, error));
+ ipaddress, conn->port,
+ Curl_strerror(error, buffer, sizeof(buffer)));
conn->timeoutms_per_addr = conn->tempaddr[i]->ai_next == NULL ?
allow : allow / 2;
@@ -854,8 +863,8 @@ CURLcode Curl_is_connected(struct connectdata *conn,
if(result) {
/* no more addresses to try */
-
const char *hostname;
+ char buffer[STRERROR_LEN];
/* if the first address family runs out of addresses to try before
the happy eyeball timeout, go ahead and try the next family now */
@@ -875,13 +884,14 @@ CURLcode Curl_is_connected(struct connectdata *conn,
hostname = conn->host.name;
failf(data, "Failed to connect to %s port %ld: %s",
- hostname, conn->port, Curl_strerror(conn, error));
+ hostname, conn->port,
+ Curl_strerror(error, buffer, sizeof(buffer)));
}
return result;
}
-void Curl_tcpnodelay(struct connectdata *conn, curl_socket_t sockfd)
+static void tcpnodelay(struct connectdata *conn, curl_socket_t sockfd)
{
#if defined(TCP_NODELAY)
#if !defined(CURL_DISABLE_VERBOSE_STRINGS)
@@ -889,6 +899,7 @@ void Curl_tcpnodelay(struct connectdata *conn, curl_socket_t sockfd)
#endif
curl_socklen_t onoff = (curl_socklen_t) 1;
int level = IPPROTO_TCP;
+ char buffer[STRERROR_LEN];
#if defined(CURL_DISABLE_VERBOSE_STRINGS)
(void) conn;
@@ -897,7 +908,7 @@ void Curl_tcpnodelay(struct connectdata *conn, curl_socket_t sockfd)
if(setsockopt(sockfd, level, TCP_NODELAY, (void *)&onoff,
sizeof(onoff)) < 0)
infof(data, "Could not set TCP_NODELAY: %s\n",
- Curl_strerror(conn, SOCKERRNO));
+ Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
else
infof(data, "TCP_NODELAY set\n");
#else
@@ -917,9 +928,11 @@ static void nosigpipe(struct connectdata *conn,
struct Curl_easy *data = conn->data;
int onoff = 1;
if(setsockopt(sockfd, SOL_SOCKET, SO_NOSIGPIPE, (void *)&onoff,
- sizeof(onoff)) < 0)
+ sizeof(onoff)) < 0) {
+ char buffer[STRERROR_LEN];
infof(data, "Could not set SO_NOSIGPIPE: %s\n",
- Curl_strerror(conn, SOCKERRNO));
+ Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
+ }
}
#else
#define nosigpipe(x,y) Curl_nop_stmt
@@ -995,6 +1008,7 @@ static CURLcode singleipconnect(struct connectdata *conn,
#ifdef TCP_FASTOPEN_CONNECT
int optval = 1;
#endif
+ char buffer[STRERROR_LEN];
*sockp = CURL_SOCKET_BAD;
@@ -1006,11 +1020,11 @@ static CURLcode singleipconnect(struct connectdata *conn,
return CURLE_OK;
/* store remote address and port used in this connection attempt */
- if(!Curl_getaddressinfo((struct sockaddr*)&addr.sa_addr,
- ipaddress, &port)) {
+ if(!getaddressinfo((struct sockaddr*)&addr.sa_addr,
+ ipaddress, &port)) {
/* malformed address or bug in inet_ntop, try next address */
failf(data, "sa_addr inet_ntop() failed with errno %d: %s",
- errno, Curl_strerror(conn, errno));
+ errno, Curl_strerror(errno, buffer, sizeof(buffer)));
Curl_closesocket(conn, sockfd);
return CURLE_OK;
}
@@ -1023,7 +1037,7 @@ static CURLcode singleipconnect(struct connectdata *conn,
is_tcp = (addr.family == AF_INET) && addr.socktype == SOCK_STREAM;
#endif
if(is_tcp && data->set.tcp_nodelay)
- Curl_tcpnodelay(conn, sockfd);
+ tcpnodelay(conn, sockfd);
nosigpipe(conn, sockfd);
@@ -1146,7 +1160,7 @@ static CURLcode singleipconnect(struct connectdata *conn,
default:
/* unknown error, fallthrough and try another address! */
infof(data, "Immediate connect fail for %s: %s\n",
- ipaddress, Curl_strerror(conn, error));
+ ipaddress, Curl_strerror(error, buffer, sizeof(buffer)));
data->state.os_errno = error;
/* connect failed */
@@ -1420,7 +1434,7 @@ void Curl_conncontrol(struct connectdata *conn,
if((ctrl == CONNCTRL_STREAM) &&
(conn->handler->flags & PROTOPT_STREAM))
DEBUGF(infof(conn->data, "Kill stream: %s\n", reason));
- else if(closeit != conn->bits.close) {
+ else if((bit)closeit != conn->bits.close) {
DEBUGF(infof(conn->data, "Marked for [%s]: %s\n",
closeit?"closure":"keep alive", reason));
conn->bits.close = closeit; /* the only place in the source code that
diff --git a/lib/connect.h b/lib/connect.h
index 193dc639..6a5c755c 100644
--- a/lib/connect.h
+++ b/lib/connect.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -76,11 +76,6 @@ void Curl_persistconninfo(struct connectdata *conn);
int Curl_closesocket(struct connectdata *conn, curl_socket_t sock);
/*
- * Get presentation format IP address and port from a sockaddr.
- */
-bool Curl_getaddressinfo(struct sockaddr *sa, char *addr, long *port);
-
-/*
* The Curl_sockaddr_ex structure is basically libcurl's external API
* curl_sockaddr structure with enough space available to directly hold any
* protocol-specific address structures. The variable declared here will be
@@ -111,8 +106,6 @@ CURLcode Curl_socket(struct connectdata *conn,
struct Curl_sockaddr_ex *addr,
curl_socket_t *sockfd);
-void Curl_tcpnodelay(struct connectdata *conn, curl_socket_t sockfd);
-
/*
* Curl_conncontrol() marks the end of a connection/stream. The 'closeit'
* argument specifies if it is the end of a connection or a stream.
diff --git a/lib/cookie.c b/lib/cookie.c
index 4fb992ac..44851a52 100644
--- a/lib/cookie.c
+++ b/lib/cookie.c
@@ -528,6 +528,19 @@ Curl_cookie_add(struct Curl_easy *data,
while(*whatptr && ISBLANK(*whatptr))
whatptr++;
+ /*
+ * Check if we have a reserved prefix set before anything else, as we
+ * otherwise have to test for the prefix in both the cookie name and
+ * "the rest". Prefixes must start with '__' and end with a '-', so
+ * only test for names where that can possibly be true.
+ */
+ if(nlen > 3 && name[0] == '_' && name[1] == '_') {
+ if(strncasecompare("__Secure-", name, 9))
+ co->prefix |= COOKIE_PREFIX__SECURE;
+ else if(strncasecompare("__Host-", name, 7))
+ co->prefix |= COOKIE_PREFIX__HOST;
+ }
+
if(!co->name) {
/* The very first name/value pair is the actual cookie name */
if(!sep) {
@@ -803,8 +816,6 @@ Curl_cookie_add(struct Curl_easy *data,
co->domain = strdup(ptr);
if(!co->domain)
badcookie = TRUE;
- else if(bad_domain(co->domain))
- badcookie = TRUE;
break;
case 1:
/* This field got its explanation on the 23rd of May 2001 by
@@ -862,6 +873,11 @@ Curl_cookie_add(struct Curl_easy *data,
co->name = strdup(ptr);
if(!co->name)
badcookie = TRUE;
+ /* For Netscape file format cookies we check prefix on the name */
+ if(strncasecompare("__Secure-", co->name, 9))
+ co->prefix |= COOKIE_PREFIX__SECURE;
+ else if(strncasecompare("__Host-", co->name, 7))
+ co->prefix |= COOKIE_PREFIX__HOST;
break;
case 6:
co->value = strdup(ptr);
@@ -890,6 +906,26 @@ Curl_cookie_add(struct Curl_easy *data,
}
+ if(co->prefix & COOKIE_PREFIX__SECURE) {
+ /* The __Secure- prefix only requires that the cookie be set secure */
+ if(!co->secure) {
+ freecookie(co);
+ return NULL;
+ }
+ }
+ if(co->prefix & COOKIE_PREFIX__HOST) {
+ /*
+ * The __Host- prefix requires the cookie to be secure, have a "/" path
+ * and not have a domain set.
+ */
+ if(co->secure && co->path && strcmp(co->path, "/") == 0 && !co->tailmatch)
+ ;
+ else {
+ freecookie(co);
+ return NULL;
+ }
+ }
+
if(!c->running && /* read from a file */
c->newsession && /* clean session cookies */
!co->expires) { /* this is a session cookie since it doesn't expire! */
@@ -908,20 +944,18 @@ Curl_cookie_add(struct Curl_easy *data,
if(!noexpire)
remove_expired(c);
- if(domain && co->domain && !isip(co->domain)) {
- int acceptable;
#ifdef USE_LIBPSL
+ /* Check if the domain is a Public Suffix and if yes, ignore the cookie. */
+ if(domain && co->domain && !isip(co->domain)) {
const psl_ctx_t *psl = Curl_psl_use(data);
+ int acceptable;
- /* Check if the domain is a Public Suffix and if yes, ignore the cookie. */
if(psl) {
acceptable = psl_is_cookie_domain_acceptable(psl, domain, co->domain);
Curl_psl_release(data);
}
else
-#endif
- /* Without libpsl, do the best we can. */
- acceptable = !bad_domain(co->domain);
+ acceptable = !bad_domain(domain);
if(!acceptable) {
infof(data, "cookie '%s' dropped, domain '%s' must not "
@@ -930,6 +964,7 @@ Curl_cookie_add(struct Curl_easy *data,
return NULL;
}
}
+#endif
myhash = cookiehash(co->domain);
clist = c->cookies[myhash];
@@ -1054,7 +1089,7 @@ Curl_cookie_add(struct Curl_easy *data,
* get_line() makes sure to only return complete whole lines that fit in 'len'
* bytes and end with a newline.
*/
-static char *get_line(char *buf, int len, FILE *input)
+char *Curl_get_line(char *buf, int len, FILE *input)
{
bool partial = FALSE;
while(1) {
@@ -1134,7 +1169,7 @@ struct CookieInfo *Curl_cookie_init(struct Curl_easy *data,
line = malloc(MAX_COOKIE_LINE);
if(!line)
goto fail;
- while(get_line(line, MAX_COOKIE_LINE, fp)) {
+ while(Curl_get_line(line, MAX_COOKIE_LINE, fp)) {
if(checkprefix("Set-Cookie:", line)) {
/* This is a cookie line, get it! */
lineptr = &line[11];
@@ -1503,6 +1538,10 @@ static int cookie_output(struct CookieInfo *c, const char *dumphere)
unsigned int j;
struct Cookie **array;
+ if(!c)
+ /* no cookie engine alive */
+ return 0;
+
/* at first, remove expired cookies */
remove_expired(c);
diff --git a/lib/cookie.h b/lib/cookie.h
index 3ee457c6..6ac4a6ac 100644
--- a/lib/cookie.h
+++ b/lib/cookie.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -44,8 +44,16 @@ struct Cookie {
bool livecookie; /* updated from a server, not a stored file */
bool httponly; /* true if the httponly directive is present */
int creationtime; /* time when the cookie was written */
+ unsigned char prefix; /* bitmap fields indicating which prefix are set */
};
+/*
+ * Available cookie prefixes, as defined in
+ * draft-ietf-httpbis-rfc6265bis-02
+ */
+#define COOKIE_PREFIX__SECURE (1<<0)
+#define COOKIE_PREFIX__HOST (1<<1)
+
#define COOKIE_HASH_SIZE 256
struct CookieInfo {
@@ -93,6 +101,7 @@ struct Cookie *Curl_cookie_getlist(struct CookieInfo *, const char *,
void Curl_cookie_freelist(struct Cookie *cookies);
void Curl_cookie_clearall(struct CookieInfo *cookies);
void Curl_cookie_clearsess(struct CookieInfo *cookies);
+char *Curl_get_line(char *buf, int len, FILE *input);
#if defined(CURL_DISABLE_HTTP) || defined(CURL_DISABLE_COOKIES)
#define Curl_cookie_list(x) NULL
diff --git a/lib/curl_addrinfo.c b/lib/curl_addrinfo.c
index fd49679c..16c4779c 100644
--- a/lib/curl_addrinfo.c
+++ b/lib/curl_addrinfo.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -539,7 +539,7 @@ Curl_addrinfo *Curl_unix2addr(const char *path, bool *longpath, bool abstract)
#if defined(CURLDEBUG) && defined(HAVE_GETADDRINFO) && \
defined(HAVE_FREEADDRINFO)
/*
- * curl_dofreeaddrinfo()
+ * curl_dbg_freeaddrinfo()
*
* This is strictly for memory tracing and are using the same style as the
* family otherwise present in memdebug.c. I put these ones here since they
@@ -547,23 +547,23 @@ Curl_addrinfo *Curl_unix2addr(const char *path, bool *longpath, bool abstract)
*/
void
-curl_dofreeaddrinfo(struct addrinfo *freethis,
- int line, const char *source)
+curl_dbg_freeaddrinfo(struct addrinfo *freethis,
+ int line, const char *source)
{
+ curl_dbg_log("ADDR %s:%d freeaddrinfo(%p)\n",
+ source, line, (void *)freethis);
#ifdef USE_LWIPSOCK
lwip_freeaddrinfo(freethis);
#else
(freeaddrinfo)(freethis);
#endif
- curl_memlog("ADDR %s:%d freeaddrinfo(%p)\n",
- source, line, (void *)freethis);
}
#endif /* defined(CURLDEBUG) && defined(HAVE_FREEADDRINFO) */
#if defined(CURLDEBUG) && defined(HAVE_GETADDRINFO)
/*
- * curl_dogetaddrinfo()
+ * curl_dbg_getaddrinfo()
*
* This is strictly for memory tracing and are using the same style as the
* family otherwise present in memdebug.c. I put these ones here since they
@@ -571,11 +571,11 @@ curl_dofreeaddrinfo(struct addrinfo *freethis,
*/
int
-curl_dogetaddrinfo(const char *hostname,
- const char *service,
- const struct addrinfo *hints,
- struct addrinfo **result,
- int line, const char *source)
+curl_dbg_getaddrinfo(const char *hostname,
+ const char *service,
+ const struct addrinfo *hints,
+ struct addrinfo **result,
+ int line, const char *source)
{
#ifdef USE_LWIPSOCK
int res = lwip_getaddrinfo(hostname, service, hints, result);
@@ -584,11 +584,11 @@ curl_dogetaddrinfo(const char *hostname,
#endif
if(0 == res)
/* success */
- curl_memlog("ADDR %s:%d getaddrinfo() = %p\n",
- source, line, (void *)*result);
+ curl_dbg_log("ADDR %s:%d getaddrinfo() = %p\n",
+ source, line, (void *)*result);
else
- curl_memlog("ADDR %s:%d getaddrinfo() failed\n",
- source, line);
+ curl_dbg_log("ADDR %s:%d getaddrinfo() failed\n",
+ source, line);
return res;
}
#endif /* defined(CURLDEBUG) && defined(HAVE_GETADDRINFO) */
diff --git a/lib/curl_addrinfo.h b/lib/curl_addrinfo.h
index 8f6f3d10..205e121e 100644
--- a/lib/curl_addrinfo.h
+++ b/lib/curl_addrinfo.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -86,17 +86,14 @@ Curl_addrinfo *Curl_unix2addr(const char *path, bool *longpath, bool abstract);
#if defined(CURLDEBUG) && defined(HAVE_GETADDRINFO) && \
defined(HAVE_FREEADDRINFO)
void
-curl_dofreeaddrinfo(struct addrinfo *freethis,
- int line, const char *source);
+curl_dbg_freeaddrinfo(struct addrinfo *freethis, int line, const char *source);
#endif
#if defined(CURLDEBUG) && defined(HAVE_GETADDRINFO)
int
-curl_dogetaddrinfo(const char *hostname,
- const char *service,
- const struct addrinfo *hints,
- struct addrinfo **result,
- int line, const char *source);
+curl_dbg_getaddrinfo(const char *hostname, const char *service,
+ const struct addrinfo *hints, struct addrinfo **result,
+ int line, const char *source);
#endif
#ifdef HAVE_GETADDRINFO
diff --git a/lib/curl_config.h b/lib/curl_config.h
index 2bc705cc..a714d635 100644
--- a/lib/curl_config.h
+++ b/lib/curl_config.h
@@ -191,9 +191,6 @@
/* Define to 1 if you have a working fcntl O_NONBLOCK function. */
#define HAVE_FCNTL_O_NONBLOCK 1
-/* Define to 1 if you have the fdopen function. */
-#define HAVE_FDOPEN 1
-
/* Define to 1 if you have the `fnmatch' function. */
#define HAVE_FNMATCH 1
@@ -527,6 +524,9 @@
/* Define to 1 if you have a working POSIX-style strerror_r function. */
#define HAVE_POSIX_STRERROR_R 1
+/* Define to 1 if you have the <proto/bsdsocket.h> header file. */
+/* #undef HAVE_PROTO_BSDSOCKET_H */
+
/* if you have <pthread.h> */
#define HAVE_PTHREAD_H 1
@@ -617,9 +617,6 @@
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
-/* Define to 1 if you have the <stdio.h> header file. */
-#define HAVE_STDIO_H 1
-
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
@@ -767,9 +764,6 @@
/* Define to 1 if you have the `wolfSSLv3_client_method' function. */
/* #undef HAVE_WOLFSSLV3_CLIENT_METHOD */
-/* Define to 1 if you have the `wolfSSL_CTX_UseSupportedCurve' function. */
-/* #undef HAVE_WOLFSSL_CTX_USESUPPORTEDCURVE */
-
/* Define to 1 if you have the `wolfSSL_get_peer_certificate' function. */
/* #undef HAVE_WOLFSSL_GET_PEER_CERTIFICATE */
@@ -908,15 +902,18 @@
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#define TIME_WITH_SYS_TIME 1
+/* to enable alt-svc */
+/* #undef USE_ALTSVC */
+
+/* if AmiSSL is in use */
+/* #undef USE_AMISSL */
+
/* Define to enable c-ares support */
/* #undef USE_ARES */
/* if CyaSSL/WolfSSL is enabled */
/* #undef USE_CYASSL */
-/* to enable Apple OS native SSL/TLS support */
-/* #undef USE_DARWINSSL */
-
/* if GnuTLS is enabled */
/* #undef USE_GNUTLS */
@@ -965,6 +962,9 @@
/* to enable Windows native SSL/TLS support */
/* #undef USE_SCHANNEL */
+/* enable Secure Transport */
+/* #undef USE_SECTRANSP */
+
/* if you want POSIX threaded DNS lookup */
#define USE_THREADS_POSIX 1
diff --git a/lib/curl_config.h.in b/lib/curl_config.h.in
index 7ab164b7..04ed02a5 100644
--- a/lib/curl_config.h.in
+++ b/lib/curl_config.h.in
@@ -190,9 +190,6 @@
/* Define to 1 if you have a working fcntl O_NONBLOCK function. */
#undef HAVE_FCNTL_O_NONBLOCK
-/* Define to 1 if you have the fdopen function. */
-#undef HAVE_FDOPEN
-
/* Define to 1 if you have the `fnmatch' function. */
#undef HAVE_FNMATCH
@@ -526,6 +523,9 @@
/* Define to 1 if you have a working POSIX-style strerror_r function. */
#undef HAVE_POSIX_STRERROR_R
+/* Define to 1 if you have the <proto/bsdsocket.h> header file. */
+#undef HAVE_PROTO_BSDSOCKET_H
+
/* if you have <pthread.h> */
#undef HAVE_PTHREAD_H
@@ -616,9 +616,6 @@
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
-/* Define to 1 if you have the <stdio.h> header file. */
-#undef HAVE_STDIO_H
-
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
@@ -766,9 +763,6 @@
/* Define to 1 if you have the `wolfSSLv3_client_method' function. */
#undef HAVE_WOLFSSLV3_CLIENT_METHOD
-/* Define to 1 if you have the `wolfSSL_CTX_UseSupportedCurve' function. */
-#undef HAVE_WOLFSSL_CTX_USESUPPORTEDCURVE
-
/* Define to 1 if you have the `wolfSSL_get_peer_certificate' function. */
#undef HAVE_WOLFSSL_GET_PEER_CERTIFICATE
@@ -925,15 +919,18 @@
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#undef TIME_WITH_SYS_TIME
+/* to enable alt-svc */
+#undef USE_ALTSVC
+
+/* if AmiSSL is in use */
+#undef USE_AMISSL
+
/* Define to enable c-ares support */
#undef USE_ARES
/* if CyaSSL/WolfSSL is enabled */
#undef USE_CYASSL
-/* to enable Apple OS native SSL/TLS support */
-#undef USE_DARWINSSL
-
/* if GnuTLS is enabled */
#undef USE_GNUTLS
@@ -982,6 +979,9 @@
/* to enable Windows native SSL/TLS support */
#undef USE_SCHANNEL
+/* enable Secure Transport */
+#undef USE_SECTRANSP
+
/* if you want POSIX threaded DNS lookup */
#undef USE_THREADS_POSIX
diff --git a/lib/curl_endian.c b/lib/curl_endian.c
index c25db495..b7563b3d 100644
--- a/lib/curl_endian.c
+++ b/lib/curl_endian.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -82,7 +82,7 @@ unsigned short Curl_read16_be(const unsigned char *buf)
}
/*
- * Curl_write32_le()
+ * write32_le()
*
* This function converts a 32-bit integer from the native endian format,
* to little endian format ready for sending down the wire.
@@ -92,7 +92,7 @@ unsigned short Curl_read16_be(const unsigned char *buf)
* value [in] - The 32-bit integer value.
* buffer [in] - A pointer to the output buffer.
*/
-void Curl_write32_le(const int value, unsigned char *buffer)
+static void write32_le(const int value, unsigned char *buffer)
{
buffer[0] = (char)(value & 0x000000FF);
buffer[1] = (char)((value & 0x0000FF00) >> 8);
@@ -118,7 +118,7 @@ void Curl_write64_le(const long long value, unsigned char *buffer)
void Curl_write64_le(const __int64 value, unsigned char *buffer)
#endif
{
- Curl_write32_le((int)value, buffer);
- Curl_write32_le((int)(value >> 32), buffer + 4);
+ write32_le((int)value, buffer);
+ write32_le((int)(value >> 32), buffer + 4);
}
#endif /* CURL_SIZEOF_CURL_OFF_T > 4 */
diff --git a/lib/curl_fnmatch.c b/lib/curl_fnmatch.c
index fbfd85c4..846ecaec 100644
--- a/lib/curl_fnmatch.c
+++ b/lib/curl_fnmatch.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -21,7 +21,7 @@
***************************************************************************/
#include "curl_setup.h"
-
+#ifndef CURL_DISABLE_FTP
#include <curl/curl.h>
#include "curl_fnmatch.h"
@@ -394,3 +394,5 @@ int Curl_fnmatch(void *ptr, const char *pattern, const char *string)
}
#endif
+
+#endif /* if FTP is disabled */
diff --git a/lib/curl_gssapi.h b/lib/curl_gssapi.h
index 9700a281..88f68dbb 100644
--- a/lib/curl_gssapi.h
+++ b/lib/curl_gssapi.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2011 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2011 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -26,19 +26,6 @@
#include "urldata.h"
#ifdef HAVE_GSSAPI
-
-#ifdef HAVE_GSSGNU
-# include <gss.h>
-#elif defined HAVE_GSSMIT
- /* MIT style */
-# include <gssapi/gssapi.h>
-# include <gssapi/gssapi_generic.h>
-# include <gssapi/gssapi_krb5.h>
-#else
- /* Heimdal-style */
-# include <gssapi.h>
-#endif
-
extern gss_OID_desc Curl_spnego_mech_oid;
extern gss_OID_desc Curl_krb5_mech_oid;
@@ -71,5 +58,4 @@ void Curl_gss_log_error(struct Curl_easy *data, const char *prefix,
#define GSSAUTH_P_PRIVACY 4
#endif /* HAVE_GSSAPI */
-
#endif /* HEADER_CURL_GSSAPI_H */
diff --git a/lib/curl_ntlm_core.c b/lib/curl_ntlm_core.c
index 9eb6c43c..e7060eb2 100644
--- a/lib/curl_ntlm_core.c
+++ b/lib/curl_ntlm_core.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -38,7 +38,7 @@
3. USE_GNUTLS
4. USE_NSS
5. USE_MBEDTLS
- 6. USE_DARWINSSL
+ 6. USE_SECTRANSP
7. USE_OS400CRYPTO
8. USE_WIN32_CRYPTO
@@ -101,7 +101,7 @@
# include "curl_md4.h"
# endif
-#elif defined(USE_DARWINSSL)
+#elif defined(USE_SECTRANSP)
# include <CommonCrypto/CommonCryptor.h>
# include <CommonCrypto/CommonDigest.h>
@@ -290,7 +290,7 @@ static bool encrypt_des(const unsigned char *in, unsigned char *out,
return mbedtls_des_crypt_ecb(&ctx, in, out) == 0;
}
-#elif defined(USE_DARWINSSL)
+#elif defined(USE_SECTRANSP)
static bool encrypt_des(const unsigned char *in, unsigned char *out,
const unsigned char *key_56)
@@ -437,7 +437,7 @@ void Curl_ntlm_core_lm_resp(const unsigned char *keys,
setup_des_key(keys + 14, &des);
gcry_cipher_encrypt(des, results + 16, 8, plaintext, 8);
gcry_cipher_close(des);
-#elif defined(USE_NSS) || defined(USE_MBEDTLS) || defined(USE_DARWINSSL) \
+#elif defined(USE_NSS) || defined(USE_MBEDTLS) || defined(USE_SECTRANSP) \
|| defined(USE_OS400CRYPTO) || defined(USE_WIN32_CRYPTO)
encrypt_des(plaintext, results, keys);
encrypt_des(plaintext, results + 8, keys + 7);
@@ -501,7 +501,7 @@ CURLcode Curl_ntlm_core_mk_lm_hash(struct Curl_easy *data,
setup_des_key(pw + 7, &des);
gcry_cipher_encrypt(des, lmbuffer + 8, 8, magic, 8);
gcry_cipher_close(des);
-#elif defined(USE_NSS) || defined(USE_MBEDTLS) || defined(USE_DARWINSSL) \
+#elif defined(USE_NSS) || defined(USE_MBEDTLS) || defined(USE_SECTRANSP) \
|| defined(USE_OS400CRYPTO) || defined(USE_WIN32_CRYPTO)
encrypt_des(magic, lmbuffer, pw);
encrypt_des(magic, lmbuffer + 8, pw + 7);
@@ -591,7 +591,7 @@ CURLcode Curl_ntlm_core_mk_nt_hash(struct Curl_easy *data,
#else
Curl_md4it(ntbuffer, pw, 2 * len);
#endif
-#elif defined(USE_DARWINSSL)
+#elif defined(USE_SECTRANSP)
(void)CC_MD4(pw, (CC_LONG)(2 * len), ntbuffer);
#elif defined(USE_OS400CRYPTO)
Curl_md4it(ntbuffer, pw, 2 * len);
@@ -621,9 +621,9 @@ CURLcode Curl_ntlm_core_mk_nt_hash(struct Curl_easy *data,
#if defined(USE_NTLM_V2) && !defined(USE_WINDOWS_SSPI)
/* This returns the HMAC MD5 digest */
-CURLcode Curl_hmac_md5(const unsigned char *key, unsigned int keylen,
- const unsigned char *data, unsigned int datalen,
- unsigned char *output)
+static CURLcode hmac_md5(const unsigned char *key, unsigned int keylen,
+ const unsigned char *data, unsigned int datalen,
+ unsigned char *output)
{
HMAC_context *ctxt = Curl_HMAC_init(Curl_HMAC_MD5, key, keylen);
@@ -668,9 +668,8 @@ CURLcode Curl_ntlm_core_mk_ntlmv2_hash(const char *user, size_t userlen,
ascii_uppercase_to_unicode_le(identity, user, userlen);
ascii_to_unicode_le(identity + (userlen << 1), domain, domlen);
- result = Curl_hmac_md5(ntlmhash, 16, identity, curlx_uztoui(identity_len),
- ntlmv2hash);
-
+ result = hmac_md5(ntlmhash, 16, identity, curlx_uztoui(identity_len),
+ ntlmv2hash);
free(identity);
return result;
@@ -756,8 +755,8 @@ CURLcode Curl_ntlm_core_mk_ntlmv2_resp(unsigned char *ntlmv2hash,
/* Concatenate the Type 2 challenge with the BLOB and do HMAC MD5 */
memcpy(ptr + 8, &ntlm->nonce[0], 8);
- result = Curl_hmac_md5(ntlmv2hash, NTLM_HMAC_MD5_LEN, ptr + 8,
- NTLMv2_BLOB_LEN + 8, hmac_output);
+ result = hmac_md5(ntlmv2hash, NTLM_HMAC_MD5_LEN, ptr + 8,
+ NTLMv2_BLOB_LEN + 8, hmac_output);
if(result) {
free(ptr);
return result;
@@ -799,7 +798,7 @@ CURLcode Curl_ntlm_core_mk_lmv2_resp(unsigned char *ntlmv2hash,
memcpy(&data[0], challenge_server, 8);
memcpy(&data[8], challenge_client, 8);
- result = Curl_hmac_md5(ntlmv2hash, 16, &data[0], 16, hmac_output);
+ result = hmac_md5(ntlmv2hash, 16, &data[0], 16, hmac_output);
if(result)
return result;
diff --git a/lib/curl_ntlm_wb.c b/lib/curl_ntlm_wb.c
index a4791eb4..18ee75dd 100644
--- a/lib/curl_ntlm_wb.c
+++ b/lib/curl_ntlm_wb.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -124,6 +124,7 @@ static CURLcode ntlm_wb_init(struct connectdata *conn, const char *userp)
struct passwd pw, *pw_res;
char pwbuf[1024];
#endif
+ char buffer[STRERROR_LEN];
/* Return if communication with ntlm_auth already set up */
if(conn->ntlm_auth_hlpr_socket != CURL_SOCKET_BAD ||
@@ -179,13 +180,13 @@ static CURLcode ntlm_wb_init(struct connectdata *conn, const char *userp)
if(access(ntlm_auth, X_OK) != 0) {
failf(conn->data, "Could not access ntlm_auth: %s errno %d: %s",
- ntlm_auth, errno, Curl_strerror(conn, errno));
+ ntlm_auth, errno, Curl_strerror(errno, buffer, sizeof(buffer)));
goto done;
}
if(socketpair(AF_UNIX, SOCK_STREAM, 0, sockfds)) {
failf(conn->data, "Could not open socket pair. errno %d: %s",
- errno, Curl_strerror(conn, errno));
+ errno, Curl_strerror(errno, buffer, sizeof(buffer)));
goto done;
}
@@ -194,7 +195,7 @@ static CURLcode ntlm_wb_init(struct connectdata *conn, const char *userp)
sclose(sockfds[0]);
sclose(sockfds[1]);
failf(conn->data, "Could not fork. errno %d: %s",
- errno, Curl_strerror(conn, errno));
+ errno, Curl_strerror(errno, buffer, sizeof(buffer)));
goto done;
}
else if(!child_pid) {
@@ -206,13 +207,13 @@ static CURLcode ntlm_wb_init(struct connectdata *conn, const char *userp)
sclose_nolog(sockfds[0]);
if(dup2(sockfds[1], STDIN_FILENO) == -1) {
failf(conn->data, "Could not redirect child stdin. errno %d: %s",
- errno, Curl_strerror(conn, errno));
+ errno, Curl_strerror(errno, buffer, sizeof(buffer)));
exit(1);
}
if(dup2(sockfds[1], STDOUT_FILENO) == -1) {
failf(conn->data, "Could not redirect child stdout. errno %d: %s",
- errno, Curl_strerror(conn, errno));
+ errno, Curl_strerror(errno, buffer, sizeof(buffer)));
exit(1);
}
@@ -232,7 +233,7 @@ static CURLcode ntlm_wb_init(struct connectdata *conn, const char *userp)
sclose_nolog(sockfds[1]);
failf(conn->data, "Could not execl(). errno %d: %s",
- errno, Curl_strerror(conn, errno));
+ errno, Curl_strerror(errno, buffer, sizeof(buffer)));
exit(1);
}
diff --git a/lib/curl_path.c b/lib/curl_path.c
index 68f3e44b..ad386e74 100644
--- a/lib/curl_path.c
+++ b/lib/curl_path.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -22,6 +22,8 @@
#include "curl_setup.h"
+#if defined(USE_LIBSSH2) || defined(USE_LIBSSH)
+
#include <curl/curl.h>
#include "curl_memory.h"
#include "curl_path.h"
@@ -193,3 +195,5 @@ CURLcode Curl_get_pathname(const char **cpp, char **path, char *homedir)
Curl_safefree(*path);
return CURLE_QUOTE_ERROR;
}
+
+#endif /* if SSH is used */
diff --git a/lib/curl_rtmp.c b/lib/curl_rtmp.c
index f09f2f33..16b1de1a 100644
--- a/lib/curl_rtmp.c
+++ b/lib/curl_rtmp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 2010, Howard Chu, <hyc@highlandsun.com>
*
* This software is licensed as described in the file COPYING, which
@@ -239,17 +239,18 @@ static CURLcode rtmp_connect(struct connectdata *conn, bool *done)
static CURLcode rtmp_do(struct connectdata *conn, bool *done)
{
+ struct Curl_easy *data = conn->data;
RTMP *r = conn->proto.generic;
if(!RTMP_ConnectStream(r, 0))
return CURLE_FAILED_INIT;
if(conn->data->set.upload) {
- Curl_pgrsSetUploadSize(conn->data, conn->data->state.infilesize);
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, FIRSTSOCKET, NULL);
+ Curl_pgrsSetUploadSize(data, data->state.infilesize);
+ Curl_setup_transfer(data, -1, -1, FALSE, FIRSTSOCKET);
}
else
- Curl_setup_transfer(conn, FIRSTSOCKET, -1, FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(data, FIRSTSOCKET, -1, FALSE, -1);
*done = TRUE;
return CURLE_OK;
}
diff --git a/lib/curl_setup.h b/lib/curl_setup.h
index f83e1ea4..4c3a1735 100644
--- a/lib/curl_setup.h
+++ b/lib/curl_setup.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -310,11 +310,12 @@
#endif
#ifdef __AMIGA__
-# ifndef __ixemul__
-# include <exec/types.h>
-# include <exec/execbase.h>
-# include <proto/exec.h>
-# include <proto/dos.h>
+# include <exec/types.h>
+# include <exec/execbase.h>
+# include <proto/exec.h>
+# include <proto/dos.h>
+# ifdef HAVE_PROTO_BSDSOCKET_H
+# include <proto/bsdsocket.h> /* ensure bsdsocket.library use */
# define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
# endif
#endif
@@ -648,7 +649,7 @@ int netware_init(void);
#if defined(USE_GNUTLS) || defined(USE_OPENSSL) || defined(USE_NSS) || \
defined(USE_POLARSSL) || defined(USE_MBEDTLS) || \
defined(USE_CYASSL) || defined(USE_SCHANNEL) || \
- defined(USE_DARWINSSL) || defined(USE_GSKIT) || defined(USE_MESALINK)
+ defined(USE_SECTRANSP) || defined(USE_GSKIT) || defined(USE_MESALINK)
#define USE_SSL /* SSL support has been enabled */
#endif
@@ -667,7 +668,7 @@ int netware_init(void);
/* Single point where USE_NTLM definition might be defined */
#if !defined(CURL_DISABLE_NTLM) && !defined(CURL_DISABLE_CRYPTO_AUTH)
#if defined(USE_OPENSSL) || defined(USE_WINDOWS_SSPI) || \
- defined(USE_GNUTLS) || defined(USE_NSS) || defined(USE_DARWINSSL) || \
+ defined(USE_GNUTLS) || defined(USE_NSS) || defined(USE_SECTRANSP) || \
defined(USE_OS400CRYPTO) || defined(USE_WIN32_CRYPTO) || \
defined(USE_MBEDTLS)
@@ -816,4 +817,10 @@ int getpwuid_r(uid_t uid, struct passwd *pwd, char *buf,
size_t buflen, struct passwd **result);
#endif
+#ifdef DEBUGBUILD
+#define UNITTEST
+#else
+#define UNITTEST static
+#endif
+
#endif /* HEADER_CURL_SETUP_H */
diff --git a/lib/dict.c b/lib/dict.c
index 78ef046d..208a2336 100644
--- a/lib/dict.c
+++ b/lib/dict.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -137,7 +137,6 @@ static CURLcode dict_do(struct connectdata *conn, bool *done)
curl_socket_t sockfd = conn->sock[FIRSTSOCKET];
char *path = data->state.up.path;
- curl_off_t *bytecount = &data->req.bytecount;
*done = TRUE; /* unconditionally */
@@ -200,8 +199,7 @@ static CURLcode dict_do(struct connectdata *conn, bool *done)
failf(data, "Failed sending DICT request");
return result;
}
- Curl_setup_transfer(conn, FIRSTSOCKET, -1, FALSE, bytecount,
- -1, NULL); /* no upload */
+ Curl_setup_transfer(data, FIRSTSOCKET, -1, FALSE, -1); /* no upload */
}
else if(strncasecompare(path, DICT_DEFINE, sizeof(DICT_DEFINE)-1) ||
strncasecompare(path, DICT_DEFINE2, sizeof(DICT_DEFINE2)-1) ||
@@ -247,8 +245,7 @@ static CURLcode dict_do(struct connectdata *conn, bool *done)
failf(data, "Failed sending DICT request");
return result;
}
- Curl_setup_transfer(conn, FIRSTSOCKET, -1, FALSE, bytecount,
- -1, NULL); /* no upload */
+ Curl_setup_transfer(data, FIRSTSOCKET, -1, FALSE, -1);
}
else {
@@ -270,7 +267,7 @@ static CURLcode dict_do(struct connectdata *conn, bool *done)
return result;
}
- Curl_setup_transfer(conn, FIRSTSOCKET, -1, FALSE, bytecount, -1, NULL);
+ Curl_setup_transfer(data, FIRSTSOCKET, -1, FALSE, -1);
}
}
diff --git a/lib/doh.c b/lib/doh.c
index f06ed331..b5327c4a 100644
--- a/lib/doh.c
+++ b/lib/doh.c
@@ -173,8 +173,12 @@ static int Curl_doh_done(struct Curl_easy *doh, CURLcode result)
return 0;
}
-#define ERROR_CHECK_SETOPT(x,y) result = curl_easy_setopt(doh, x, y); \
- if(result) goto error
+#define ERROR_CHECK_SETOPT(x,y) \
+do { \
+ result = curl_easy_setopt(doh, x, y); \
+ if(result) \
+ goto error; \
+} WHILE_FALSE
static CURLcode dohprobe(struct Curl_easy *data,
struct dnsprobe *p, DNStype dnstype,
@@ -242,7 +246,68 @@ static CURLcode dohprobe(struct Curl_easy *data,
ERROR_CHECK_SETOPT(CURLOPT_PROTOCOLS, CURLPROTO_HTTPS);
#endif
ERROR_CHECK_SETOPT(CURLOPT_TIMEOUT_MS, (long)timeout_ms);
- ERROR_CHECK_SETOPT(CURLOPT_VERBOSE, 1L);
+ if(data->set.verbose)
+ ERROR_CHECK_SETOPT(CURLOPT_VERBOSE, 1L);
+ if(data->set.no_signal)
+ ERROR_CHECK_SETOPT(CURLOPT_NOSIGNAL, 1L);
+
+ /* Inherit *some* SSL options from the user's transfer. This is a
+ best-guess as to which options are needed for compatibility. #3661 */
+ if(data->set.ssl.falsestart)
+ ERROR_CHECK_SETOPT(CURLOPT_SSL_FALSESTART, 1L);
+ if(data->set.ssl.primary.verifyhost)
+ ERROR_CHECK_SETOPT(CURLOPT_SSL_VERIFYHOST, 2L);
+ if(data->set.proxy_ssl.primary.verifyhost)
+ ERROR_CHECK_SETOPT(CURLOPT_PROXY_SSL_VERIFYHOST, 2L);
+ if(data->set.ssl.primary.verifypeer)
+ ERROR_CHECK_SETOPT(CURLOPT_SSL_VERIFYPEER, 1L);
+ if(data->set.proxy_ssl.primary.verifypeer)
+ ERROR_CHECK_SETOPT(CURLOPT_PROXY_SSL_VERIFYPEER, 1L);
+ if(data->set.ssl.primary.verifystatus)
+ ERROR_CHECK_SETOPT(CURLOPT_SSL_VERIFYSTATUS, 1L);
+ if(data->set.str[STRING_SSL_CAFILE_ORIG]) {
+ ERROR_CHECK_SETOPT(CURLOPT_CAINFO,
+ data->set.str[STRING_SSL_CAFILE_ORIG]);
+ }
+ if(data->set.str[STRING_SSL_CAFILE_PROXY]) {
+ ERROR_CHECK_SETOPT(CURLOPT_PROXY_CAINFO,
+ data->set.str[STRING_SSL_CAFILE_PROXY]);
+ }
+ if(data->set.str[STRING_SSL_CAPATH_ORIG]) {
+ ERROR_CHECK_SETOPT(CURLOPT_CAPATH,
+ data->set.str[STRING_SSL_CAPATH_ORIG]);
+ }
+ if(data->set.str[STRING_SSL_CAPATH_PROXY]) {
+ ERROR_CHECK_SETOPT(CURLOPT_PROXY_CAPATH,
+ data->set.str[STRING_SSL_CAPATH_PROXY]);
+ }
+ if(data->set.str[STRING_SSL_CRLFILE_ORIG]) {
+ ERROR_CHECK_SETOPT(CURLOPT_CRLFILE,
+ data->set.str[STRING_SSL_CRLFILE_ORIG]);
+ }
+ if(data->set.str[STRING_SSL_CRLFILE_PROXY]) {
+ ERROR_CHECK_SETOPT(CURLOPT_PROXY_CRLFILE,
+ data->set.str[STRING_SSL_CRLFILE_PROXY]);
+ }
+ if(data->set.ssl.certinfo)
+ ERROR_CHECK_SETOPT(CURLOPT_CERTINFO, 1L);
+ if(data->set.str[STRING_SSL_RANDOM_FILE]) {
+ ERROR_CHECK_SETOPT(CURLOPT_RANDOM_FILE,
+ data->set.str[STRING_SSL_RANDOM_FILE]);
+ }
+ if(data->set.str[STRING_SSL_EGDSOCKET]) {
+ ERROR_CHECK_SETOPT(CURLOPT_EGDSOCKET,
+ data->set.str[STRING_SSL_EGDSOCKET]);
+ }
+ if(data->set.ssl.no_revoke)
+ ERROR_CHECK_SETOPT(CURLOPT_SSL_OPTIONS, CURLSSLOPT_NO_REVOKE);
+ if(data->set.proxy_ssl.no_revoke)
+ ERROR_CHECK_SETOPT(CURLOPT_PROXY_SSL_OPTIONS, CURLSSLOPT_NO_REVOKE);
+ if(data->set.ssl.fsslctx)
+ ERROR_CHECK_SETOPT(CURLOPT_SSL_CTX_FUNCTION, data->set.ssl.fsslctx);
+ if(data->set.ssl.fsslctxp)
+ ERROR_CHECK_SETOPT(CURLOPT_SSL_CTX_DATA, data->set.ssl.fsslctxp);
+
doh->set.fmultidone = Curl_doh_done;
doh->set.dohfor = data; /* identify for which transfer this is done */
p->easy = doh;
diff --git a/lib/easy.c b/lib/easy.c
index 6fcad3de..ae6176f2 100644
--- a/lib/easy.c
+++ b/lib/easy.c
@@ -75,6 +75,7 @@
#include "ssh.h"
#include "setopt.h"
#include "http_digest.h"
+#include "system_win32.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
@@ -83,70 +84,6 @@
void Curl_version_init(void);
-/* win32_cleanup() is for win32 socket cleanup functionality, the opposite
- of win32_init() */
-static void win32_cleanup(void)
-{
-#ifdef USE_WINSOCK
- WSACleanup();
-#endif
-#ifdef USE_WINDOWS_SSPI
- Curl_sspi_global_cleanup();
-#endif
-}
-
-/* win32_init() performs win32 socket initialization to properly setup the
- stack to allow networking */
-static CURLcode win32_init(void)
-{
-#ifdef USE_WINSOCK
- WORD wVersionRequested;
- WSADATA wsaData;
- int res;
-
-#if defined(ENABLE_IPV6) && (USE_WINSOCK < 2)
- Error IPV6_requires_winsock2
-#endif
-
- wVersionRequested = MAKEWORD(USE_WINSOCK, USE_WINSOCK);
-
- res = WSAStartup(wVersionRequested, &wsaData);
-
- if(res != 0)
- /* Tell the user that we couldn't find a usable */
- /* winsock.dll. */
- return CURLE_FAILED_INIT;
-
- /* Confirm that the Windows Sockets DLL supports what we need.*/
- /* Note that if the DLL supports versions greater */
- /* than wVersionRequested, it will still return */
- /* wVersionRequested in wVersion. wHighVersion contains the */
- /* highest supported version. */
-
- if(LOBYTE(wsaData.wVersion) != LOBYTE(wVersionRequested) ||
- HIBYTE(wsaData.wVersion) != HIBYTE(wVersionRequested) ) {
- /* Tell the user that we couldn't find a usable */
-
- /* winsock.dll. */
- WSACleanup();
- return CURLE_FAILED_INIT;
- }
- /* The Windows Sockets DLL is acceptable. Proceed. */
-#elif defined(USE_LWIPSOCK)
- lwip_init();
-#endif
-
-#ifdef USE_WINDOWS_SSPI
- {
- CURLcode result = Curl_sspi_global_init();
- if(result)
- return result;
- }
-#endif
-
- return CURLE_OK;
-}
-
/* true globals -- for curl_global_init() and curl_global_cleanup() */
static unsigned int initialized;
static long init_flags;
@@ -223,11 +160,12 @@ static CURLcode global_init(long flags, bool memoryfuncs)
return CURLE_FAILED_INIT;
}
- if(flags & CURL_GLOBAL_WIN32)
- if(win32_init()) {
- DEBUGF(fprintf(stderr, "Error: win32_init failed\n"));
- return CURLE_FAILED_INIT;
- }
+#ifdef WIN32
+ if(Curl_win32_init(flags)) {
+ DEBUGF(fprintf(stderr, "Error: win32_init failed\n"));
+ return CURLE_FAILED_INIT;
+ }
+#endif
#ifdef __AMIGA__
if(!Curl_amiga_init()) {
@@ -331,8 +269,9 @@ void curl_global_cleanup(void)
Curl_ssl_cleanup();
Curl_resolver_global_cleanup();
- if(init_flags & CURL_GLOBAL_WIN32)
- win32_cleanup();
+#ifdef WIN32
+ Curl_win32_cleanup(init_flags);
+#endif
Curl_amiga_cleanup();
diff --git a/lib/file.c b/lib/file.c
index 8bba3b91..d349cd92 100644
--- a/lib/file.c
+++ b/lib/file.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -311,7 +311,7 @@ static CURLcode file_upload(struct connectdata *conn)
if(result)
break;
- if(readcount <= 0) /* fix questionable compare error. curlvms */
+ if(!readcount)
break;
nread = readcount;
diff --git a/lib/ftp.c b/lib/ftp.c
index c5f95400..825aaaa1 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -448,7 +448,6 @@ static CURLcode ReceivedServerConnect(struct connectdata *conn, bool *received)
static CURLcode InitiateTransfer(struct connectdata *conn)
{
struct Curl_easy *data = conn->data;
- struct FTP *ftp = data->req.protop;
CURLcode result = CURLE_OK;
if(conn->bits.ftp_use_data_ssl) {
@@ -461,24 +460,19 @@ static CURLcode InitiateTransfer(struct connectdata *conn)
}
if(conn->proto.ftpc.state_saved == FTP_STOR) {
- *(ftp->bytecountp) = 0;
-
/* When we know we're uploading a specified file, we can get the file
size prior to the actual upload. */
-
Curl_pgrsSetUploadSize(data, data->state.infilesize);
/* set the SO_SNDBUF for the secondary socket for those who need it */
Curl_sndbufset(conn->sock[SECONDARYSOCKET]);
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, /* no download */
- SECONDARYSOCKET, ftp->bytecountp);
+ Curl_setup_transfer(data, -1, -1, FALSE, SECONDARYSOCKET);
}
else {
/* FTP download: */
- Curl_setup_transfer(conn, SECONDARYSOCKET,
- conn->proto.ftpc.retr_size_saved, FALSE,
- ftp->bytecountp, -1, NULL); /* no upload here */
+ Curl_setup_transfer(data, SECONDARYSOCKET,
+ conn->proto.ftpc.retr_size_saved, FALSE, -1);
}
conn->proto.ftpc.pp.pending_resp = TRUE; /* expect server response */
@@ -955,7 +949,7 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
unsigned short port_max = 0;
unsigned short port;
bool possibly_non_local = TRUE;
-
+ char buffer[STRERROR_LEN];
char *addr = NULL;
/* Step 1, figure out what is requested,
@@ -1064,11 +1058,10 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
if(!host) {
/* not an interface and not a host name, get default by extracting
the IP from the control connection */
-
sslen = sizeof(ss);
if(getsockname(conn->sock[FIRSTSOCKET], sa, &sslen)) {
failf(data, "getsockname() failed: %s",
- Curl_strerror(conn, SOCKERRNO) );
+ Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
free(addr);
return CURLE_FTP_PORT_FAILED;
}
@@ -1121,7 +1114,8 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
break;
}
if(!ai) {
- failf(data, "socket failure: %s", Curl_strerror(conn, error));
+ failf(data, "socket failure: %s",
+ Curl_strerror(error, buffer, sizeof(buffer)));
return CURLE_FTP_PORT_FAILED;
}
@@ -1145,14 +1139,13 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
/* The requested bind address is not local. Use the address used for
* the control connection instead and restart the port loop
*/
-
infof(data, "bind(port=%hu) on non-local address failed: %s\n", port,
- Curl_strerror(conn, error) );
+ Curl_strerror(error, buffer, sizeof(buffer)));
sslen = sizeof(ss);
if(getsockname(conn->sock[FIRSTSOCKET], sa, &sslen)) {
failf(data, "getsockname() failed: %s",
- Curl_strerror(conn, SOCKERRNO) );
+ Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
Curl_closesocket(conn, portsock);
return CURLE_FTP_PORT_FAILED;
}
@@ -1162,7 +1155,7 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
}
if(error != EADDRINUSE && error != EACCES) {
failf(data, "bind(port=%hu) failed: %s", port,
- Curl_strerror(conn, error) );
+ Curl_strerror(error, buffer, sizeof(buffer)));
Curl_closesocket(conn, portsock);
return CURLE_FTP_PORT_FAILED;
}
@@ -1185,7 +1178,7 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
sslen = sizeof(ss);
if(getsockname(portsock, (struct sockaddr *)sa, &sslen)) {
failf(data, "getsockname() failed: %s",
- Curl_strerror(conn, SOCKERRNO) );
+ Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
Curl_closesocket(conn, portsock);
return CURLE_FTP_PORT_FAILED;
}
@@ -1193,7 +1186,8 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
/* step 4, listen on the socket */
if(listen(portsock, 1)) {
- failf(data, "socket failure: %s", Curl_strerror(conn, SOCKERRNO));
+ failf(data, "socket failure: %s",
+ Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
Curl_closesocket(conn, portsock);
return CURLE_FTP_PORT_FAILED;
}
@@ -1658,7 +1652,7 @@ static CURLcode ftp_state_ul_setup(struct connectdata *conn,
infof(data, "File already completely uploaded\n");
/* no data to transfer */
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(data, -1, -1, FALSE, -1);
/* Set ->transfer so that we won't get any error in
* ftp_done() because we didn't transfer anything! */
@@ -2230,7 +2224,7 @@ static CURLcode ftp_state_retr(struct connectdata *conn,
if(ftp->downloadsize == 0) {
/* no data to transfer */
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(data, -1, -1, FALSE, -1);
infof(data, "File already completely downloaded\n");
/* Set ->transfer so that we won't get any error in ftp_done()
@@ -3308,33 +3302,33 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status,
;
else if(data->set.upload) {
if((-1 != data->state.infilesize) &&
- (data->state.infilesize != *ftp->bytecountp) &&
+ (data->state.infilesize != data->req.writebytecount) &&
!data->set.crlf &&
(ftp->transfer == FTPTRANSFER_BODY)) {
failf(data, "Uploaded unaligned file size (%" CURL_FORMAT_CURL_OFF_T
" out of %" CURL_FORMAT_CURL_OFF_T " bytes)",
- *ftp->bytecountp, data->state.infilesize);
+ data->req.bytecount, data->state.infilesize);
result = CURLE_PARTIAL_FILE;
}
}
else {
if((-1 != data->req.size) &&
- (data->req.size != *ftp->bytecountp) &&
+ (data->req.size != data->req.bytecount) &&
#ifdef CURL_DO_LINEEND_CONV
/* Most FTP servers don't adjust their file SIZE response for CRLFs, so
* we'll check to see if the discrepancy can be explained by the number
* of CRLFs we've changed to LFs.
*/
((data->req.size + data->state.crlf_conversions) !=
- *ftp->bytecountp) &&
+ data->req.bytecount) &&
#endif /* CURL_DO_LINEEND_CONV */
- (data->req.maxdownload != *ftp->bytecountp)) {
+ (data->req.maxdownload != data->req.bytecount)) {
failf(data, "Received only partial file: %" CURL_FORMAT_CURL_OFF_T
- " bytes", *ftp->bytecountp);
+ " bytes", data->req.bytecount);
result = CURLE_PARTIAL_FILE;
}
else if(!ftpc->dont_check &&
- !*ftp->bytecountp &&
+ !data->req.bytecount &&
(data->req.size>0)) {
failf(data, "No data was received!");
result = CURLE_FTP_COULDNT_RETR_FILE;
@@ -3629,7 +3623,7 @@ static CURLcode ftp_do_more(struct connectdata *conn, int *completep)
if(!result && (ftp->transfer != FTPTRANSFER_BODY))
/* no data to transfer. FIX: it feels like a kludge to have this here
too! */
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(data, -1, -1, FALSE, -1);
if(!ftpc->wait_data_conn) {
/* no waiting for the data connection so this is now complete */
@@ -4308,7 +4302,7 @@ static CURLcode ftp_dophase_done(struct connectdata *conn,
if(ftp->transfer != FTPTRANSFER_BODY)
/* no data to transfer */
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(conn->data, -1, -1, FALSE, -1);
else if(!connected)
/* since we didn't connect now, we want do_more to get called */
conn->bits.do_more = TRUE;
@@ -4395,7 +4389,6 @@ static CURLcode ftp_setup_connection(struct connectdata *conn)
return CURLE_OUT_OF_MEMORY;
ftp->path = &data->state.up.path[1]; /* don't include the initial slash */
- data->state.slash_removed = TRUE; /* we've skipped the slash */
/* FTP URLs support an extension like ";type=<typecode>" that
* we'll try to get now! */
@@ -4428,7 +4421,6 @@ static CURLcode ftp_setup_connection(struct connectdata *conn)
}
/* get some initial data into the ftp struct */
- ftp->bytecountp = &conn->data->req.bytecount;
ftp->transfer = FTPTRANSFER_BODY;
ftp->downloadsize = 0;
diff --git a/lib/ftp.h b/lib/ftp.h
index 38d03223..828d69a2 100644
--- a/lib/ftp.h
+++ b/lib/ftp.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -102,7 +102,6 @@ typedef enum {
perhaps the Curl_easy is changed between the times the connection is
used. */
struct FTP {
- curl_off_t *bytecountp;
char *user; /* user name string */
char *passwd; /* password string */
char *path; /* points to the urlpieces struct field */
diff --git a/lib/getinfo.c b/lib/getinfo.c
index 19de657d..e118da80 100644
--- a/lib/getinfo.c
+++ b/lib/getinfo.c
@@ -163,10 +163,10 @@ static CURLcode getinfo_long(struct Curl_easy *data, CURLINFO info,
*param_longp = (long)data->info.filetime;
break;
case CURLINFO_HEADER_SIZE:
- *param_longp = data->info.header_size;
+ *param_longp = (long)data->info.header_size;
break;
case CURLINFO_REQUEST_SIZE:
- *param_longp = data->info.request_size;
+ *param_longp = (long)data->info.request_size;
break;
case CURLINFO_SSL_VERIFYRESULT:
*param_longp = data->set.ssl.certverifyresult;
diff --git a/lib/gopher.c b/lib/gopher.c
index 485b4b79..b296c62d 100644
--- a/lib/gopher.c
+++ b/lib/gopher.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -78,8 +78,6 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done)
CURLcode result = CURLE_OK;
struct Curl_easy *data = conn->data;
curl_socket_t sockfd = conn->sock[FIRSTSOCKET];
-
- curl_off_t *bytecount = &data->req.bytecount;
char *gopherpath;
char *path = data->state.up.path;
char *query = data->state.up.query;
@@ -90,7 +88,10 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done)
*done = TRUE; /* unconditionally */
- if(path && query)
+ /* path is guaranteed non-NULL */
+ DEBUGASSERT(path);
+
+ if(query)
gopherpath = aprintf("%s?%s", path, query);
else
gopherpath = strdup(path);
@@ -167,8 +168,7 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done)
if(result)
return result;
- Curl_setup_transfer(conn, FIRSTSOCKET, -1, FALSE, bytecount,
- -1, NULL); /* no upload */
+ Curl_setup_transfer(data, FIRSTSOCKET, -1, FALSE, -1);
return CURLE_OK;
}
#endif /*CURL_DISABLE_GOPHER*/
diff --git a/lib/hostasyn.c b/lib/hostasyn.c
index 6ff60ba6..99d872b3 100644
--- a/lib/hostasyn.c
+++ b/lib/hostasyn.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -85,14 +85,14 @@ CURLcode Curl_addrinfo_callback(struct connectdata *conn,
dns = Curl_cache_addr(data, ai,
conn->async.hostname,
conn->async.port);
+ if(data->share)
+ Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
+
if(!dns) {
/* failed to store, cleanup and return error */
Curl_freeaddrinfo(ai);
result = CURLE_OUT_OF_MEMORY;
}
-
- if(data->share)
- Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
}
else {
result = CURLE_OUT_OF_MEMORY;
diff --git a/lib/hostip.c b/lib/hostip.c
index 89b88e93..7909141c 100644
--- a/lib/hostip.c
+++ b/lib/hostip.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -73,6 +73,8 @@
#define USE_ALARM_TIMEOUT
#endif
+#define MAX_HOSTCACHE_LEN (255 + 7) /* max FQDN + colon + port number + zero */
+
/*
* hostip.c explained
* ==================
@@ -198,23 +200,19 @@ Curl_printable_address(const Curl_addrinfo *ai, char *buf, size_t bufsize)
}
/*
- * Return a hostcache id string for the provided host + port, to be used by
- * the DNS caching.
+ * Create a hostcache id string for the provided host + port, to be used by
+ * the DNS caching. Without alloc.
*/
-static char *
-create_hostcache_id(const char *name, int port)
+static void
+create_hostcache_id(const char *name, int port, char *ptr, size_t buflen)
{
- /* create and return the new allocated entry */
- char *id = aprintf("%s:%d", name, port);
- char *ptr = id;
- if(ptr) {
- /* lower case the name part */
- while(*ptr && (*ptr != ':')) {
- *ptr = (char)TOLOWER(*ptr);
- ptr++;
- }
- }
- return id;
+ size_t len = strlen(name);
+ if(len > (buflen - 7))
+ len = buflen - 7;
+ /* store and lower case the name */
+ while(len--)
+ *ptr++ = (char)TOLOWER(*name++);
+ msnprintf(ptr, 7, ":%u", port);
}
struct hostcache_prune_data {
@@ -296,17 +294,13 @@ fetch_addr(struct connectdata *conn,
const char *hostname,
int port)
{
- char *entry_id = NULL;
struct Curl_dns_entry *dns = NULL;
size_t entry_len;
struct Curl_easy *data = conn->data;
+ char entry_id[MAX_HOSTCACHE_LEN];
/* Create an entry id, based upon the hostname and port */
- entry_id = create_hostcache_id(hostname, port);
- /* If we can't create the entry id, fail */
- if(!entry_id)
- return dns;
-
+ create_hostcache_id(hostname, port, entry_id, sizeof(entry_id));
entry_len = strlen(entry_id);
/* See if its already in our dns cache */
@@ -314,18 +308,7 @@ fetch_addr(struct connectdata *conn,
/* No entry found in cache, check if we might have a wildcard entry */
if(!dns && data->change.wildcard_resolve) {
- /*
- * Free the previous entry_id before requesting a new one to avoid leaking
- * memory
- */
- free(entry_id);
-
- entry_id = create_hostcache_id("*", port);
-
- /* If we can't create the entry id, fail */
- if(!entry_id)
- return dns;
-
+ create_hostcache_id("*", port, entry_id, sizeof(entry_id));
entry_len = strlen(entry_id);
/* See if it's already in our dns cache */
@@ -346,9 +329,6 @@ fetch_addr(struct connectdata *conn,
}
}
- /* free the allocated entry_id again */
- free(entry_id);
-
return dns;
}
@@ -388,6 +368,9 @@ Curl_fetch_addr(struct connectdata *conn,
return dns;
}
+UNITTEST CURLcode Curl_shuffle_addr(struct Curl_easy *data,
+ Curl_addrinfo **addr);
+
/*
* Curl_shuffle_addr() shuffles the order of addresses in a 'Curl_addrinfo'
* struct by re-linking its linked list.
@@ -400,7 +383,8 @@ Curl_fetch_addr(struct connectdata *conn,
*
* @unittest: 1608
*/
-CURLcode Curl_shuffle_addr(struct Curl_easy *data, Curl_addrinfo **addr)
+UNITTEST CURLcode Curl_shuffle_addr(struct Curl_easy *data,
+ Curl_addrinfo **addr)
{
CURLcode result = CURLE_OK;
const int num_addrs = Curl_num_addresses(*addr);
@@ -467,7 +451,7 @@ Curl_cache_addr(struct Curl_easy *data,
const char *hostname,
int port)
{
- char *entry_id;
+ char entry_id[MAX_HOSTCACHE_LEN];
size_t entry_len;
struct Curl_dns_entry *dns;
struct Curl_dns_entry *dns2;
@@ -479,20 +463,16 @@ Curl_cache_addr(struct Curl_easy *data,
return NULL;
}
- /* Create an entry id, based upon the hostname and port */
- entry_id = create_hostcache_id(hostname, port);
- /* If we can't create the entry id, fail */
- if(!entry_id)
- return NULL;
- entry_len = strlen(entry_id);
-
/* Create a new cache entry */
dns = calloc(1, sizeof(struct Curl_dns_entry));
if(!dns) {
- free(entry_id);
return NULL;
}
+ /* Create an entry id, based upon the hostname and port */
+ create_hostcache_id(hostname, port, entry_id, sizeof(entry_id));
+ entry_len = strlen(entry_id);
+
dns->inuse = 1; /* the cache has the first reference */
dns->addr = addr; /* this is the address(es) */
time(&dns->timestamp);
@@ -504,16 +484,11 @@ Curl_cache_addr(struct Curl_easy *data,
(void *)dns);
if(!dns2) {
free(dns);
- free(entry_id);
return NULL;
}
dns = dns2;
dns->inuse++; /* mark entry as in-use */
-
- /* free the allocated entry_id */
- free(entry_id);
-
return dns;
}
@@ -568,7 +543,7 @@ int Curl_resolv(struct connectdata *conn,
/* The entry was not in the cache. Resolve it to IP address */
Curl_addrinfo *addr;
- int respwait;
+ int respwait = 0;
/* Check what IP specifics the app has requested and if we can provide it.
* If not, bail out. */
@@ -896,10 +871,10 @@ CURLcode Curl_loadhostpairs(struct Curl_easy *data)
data->change.wildcard_resolve = false;
for(hostp = data->change.resolve; hostp; hostp = hostp->next) {
+ char entry_id[MAX_HOSTCACHE_LEN];
if(!hostp->data)
continue;
if(hostp->data[0] == '-') {
- char *entry_id;
size_t entry_len;
if(2 != sscanf(hostp->data + 1, "%255[^:]:%d", hostname, &port)) {
@@ -909,12 +884,7 @@ CURLcode Curl_loadhostpairs(struct Curl_easy *data)
}
/* Create an entry id, based upon the hostname and port */
- entry_id = create_hostcache_id(hostname, port);
- /* If we can't create the entry id, fail */
- if(!entry_id) {
- return CURLE_OUT_OF_MEMORY;
- }
-
+ create_hostcache_id(hostname, port, entry_id, sizeof(entry_id));
entry_len = strlen(entry_id);
if(data->share)
@@ -925,14 +895,10 @@ CURLcode Curl_loadhostpairs(struct Curl_easy *data)
if(data->share)
Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
-
- /* free the allocated entry_id again */
- free(entry_id);
}
else {
struct Curl_dns_entry *dns;
Curl_addrinfo *head = NULL, *tail = NULL;
- char *entry_id;
size_t entry_len;
char address[64];
#if !defined(CURL_DISABLE_VERBOSE_STRINGS)
@@ -1028,12 +994,7 @@ CURLcode Curl_loadhostpairs(struct Curl_easy *data)
}
/* Create an entry id, based upon the hostname and port */
- entry_id = create_hostcache_id(hostname, port);
- /* If we can't create the entry id, fail */
- if(!entry_id) {
- Curl_freeaddrinfo(head);
- return CURLE_OUT_OF_MEMORY;
- }
+ create_hostcache_id(hostname, port, entry_id, sizeof(entry_id));
entry_len = strlen(entry_id);
if(data->share)
@@ -1054,8 +1015,6 @@ CURLcode Curl_loadhostpairs(struct Curl_easy *data)
Curl_hash_delete(data->dns.hostcache, entry_id, entry_len + 1);
}
- /* free the allocated entry_id again */
- free(entry_id);
/* put this new host in the cache */
dns = Curl_cache_addr(data, head, hostname, port);
diff --git a/lib/hostip.h b/lib/hostip.h
index 29fd1ef7..cd43882a 100644
--- a/lib/hostip.h
+++ b/lib/hostip.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -179,16 +179,6 @@ Curl_fetch_addr(struct connectdata *conn,
int port);
/*
- * Curl_shuffle_addr() shuffles the order of addresses in a 'Curl_addrinfo'
- * struct by re-linking its linked list.
- *
- * The addr argument should be the address of a pointer to the head node of a
- * `Curl_addrinfo` list and it will be modified to point to the new head after
- * shuffling.
- */
-CURLcode Curl_shuffle_addr(struct Curl_easy *data, Curl_addrinfo **addr);
-
-/*
* Curl_cache_addr() stores a 'Curl_addrinfo' struct in the DNS cache.
*
* Returns the Curl_dns_entry entry pointer or NULL if the storage failed.
diff --git a/lib/hostip6.c b/lib/hostip6.c
index e06d0343..fb2f35ce 100644
--- a/lib/hostip6.c
+++ b/lib/hostip6.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -101,14 +101,15 @@ static void dump_addrinfo(struct connectdata *conn, const Curl_addrinfo *ai)
{
printf("dump_addrinfo:\n");
for(; ai; ai = ai->ai_next) {
- char buf[INET6_ADDRSTRLEN];
-
+ char buf[INET6_ADDRSTRLEN];
+ char buffer[STRERROR_LEN];
printf(" fam %2d, CNAME %s, ",
ai->ai_family, ai->ai_canonname ? ai->ai_canonname : "<none>");
if(Curl_printable_address(ai, buf, sizeof(buf)))
printf("%s\n", buf);
else
- printf("failed; %s\n", Curl_strerror(conn, SOCKERRNO));
+ printf("failed; %s\n",
+ Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
}
}
#else
diff --git a/lib/http.c b/lib/http.c
index dd98e4a1..a0520b40 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -77,6 +77,7 @@
#include "http2.h"
#include "connect.h"
#include "strdup.h"
+#include "altsvc.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
@@ -102,13 +103,14 @@ static int https_getsock(struct connectdata *conn,
#else
#define https_connecting(x,y) CURLE_COULDNT_CONNECT
#endif
+static CURLcode http_setup_conn(struct connectdata *conn);
/*
* HTTP handler interface.
*/
const struct Curl_handler Curl_handler_http = {
"HTTP", /* scheme */
- Curl_http_setup_conn, /* setup_connection */
+ http_setup_conn, /* setup_connection */
Curl_http, /* do_it */
Curl_http_done, /* done */
ZERO_NULL, /* do_more */
@@ -133,7 +135,7 @@ const struct Curl_handler Curl_handler_http = {
*/
const struct Curl_handler Curl_handler_https = {
"HTTPS", /* scheme */
- Curl_http_setup_conn, /* setup_connection */
+ http_setup_conn, /* setup_connection */
Curl_http, /* do_it */
Curl_http_done, /* done */
ZERO_NULL, /* do_more */
@@ -153,7 +155,7 @@ const struct Curl_handler Curl_handler_https = {
};
#endif
-CURLcode Curl_http_setup_conn(struct connectdata *conn)
+static CURLcode http_setup_conn(struct connectdata *conn)
{
/* allocate the HTTP-specific struct for the Curl_easy, only to survive
during this request */
@@ -415,7 +417,7 @@ static CURLcode http_perhapsrewind(struct connectdata *conn)
break;
}
- bytessent = http->writebytecount;
+ bytessent = data->req.writebytecount;
if(conn->bits.authneg) {
/* This is a state where we are known to be negotiating and we don't send
@@ -479,8 +481,36 @@ static CURLcode http_perhapsrewind(struct connectdata *conn)
(curl_off_t)(expectsend - bytessent));
}
#endif
+#if defined(USE_SPNEGO)
+ /* There is still data left to send */
+ if((data->state.authproxy.picked == CURLAUTH_NEGOTIATE) ||
+ (data->state.authhost.picked == CURLAUTH_NEGOTIATE)) {
+ if(((expectsend - bytessent) < 2000) ||
+ (conn->negotiate.state != GSS_AUTHNONE) ||
+ (conn->proxyneg.state != GSS_AUTHNONE)) {
+ /* The NEGOTIATE-negotiation has started *OR*
+ there is just a little (<2K) data left to send, keep on sending. */
+
+ /* rewind data when completely done sending! */
+ if(!conn->bits.authneg && (conn->writesockfd != CURL_SOCKET_BAD)) {
+ conn->bits.rewindaftersend = TRUE;
+ infof(data, "Rewind stream after send\n");
+ }
+
+ return CURLE_OK;
+ }
+
+ if(conn->bits.close)
+ /* this is already marked to get closed */
+ return CURLE_OK;
- /* This is not NTLM or many bytes left to send: close */
+ infof(data, "NEGOTIATE send, close instead of sending %"
+ CURL_FORMAT_CURL_OFF_T " bytes\n",
+ (curl_off_t)(expectsend - bytessent));
+ }
+#endif
+
+ /* This is not NEGOTIATE/NTLM or many bytes left to send: close */
streamclose(conn, "Mid-auth HTTP and much data left to send");
data->req.size = 0; /* don't download any more than 0 bytes */
@@ -598,10 +628,6 @@ output_auth_headers(struct connectdata *conn,
#if !defined(CURL_DISABLE_VERBOSE_STRINGS) || defined(USE_SPNEGO)
struct Curl_easy *data = conn->data;
#endif
-#ifdef USE_SPNEGO
- struct negotiatedata *negdata = proxy ?
- &data->state.proxyneg : &data->state.negotiate;
-#endif
#ifdef CURL_DISABLE_CRYPTO_AUTH
(void)request;
@@ -609,15 +635,11 @@ output_auth_headers(struct connectdata *conn,
#endif
#ifdef USE_SPNEGO
- negdata->state = GSS_AUTHNONE;
- if((authstatus->picked == CURLAUTH_NEGOTIATE) &&
- negdata->context && !GSS_ERROR(negdata->status)) {
+ if((authstatus->picked == CURLAUTH_NEGOTIATE)) {
auth = "Negotiate";
result = Curl_output_negotiate(conn, proxy);
if(result)
return result;
- authstatus->done = TRUE;
- negdata->state = GSS_AUTHSENT;
}
else
#endif
@@ -750,7 +772,7 @@ Curl_http_output_auth(struct connectdata *conn,
#ifndef CURL_DISABLE_PROXY
/* Send proxy authentication header if needed */
if(conn->bits.httpproxy &&
- (conn->bits.tunnel_proxy == proxytunnel)) {
+ (conn->bits.tunnel_proxy == (bit)proxytunnel)) {
result = output_auth_headers(conn, authproxy, request, path, TRUE);
if(result)
return result;
@@ -794,7 +816,7 @@ CURLcode Curl_http_input_auth(struct connectdata *conn, bool proxy,
#ifdef USE_SPNEGO
struct negotiatedata *negdata = proxy?
- &data->state.proxyneg:&data->state.negotiate;
+ &conn->proxyneg:&conn->negotiate;
#endif
unsigned long *availp;
struct auth *authp;
@@ -833,21 +855,18 @@ CURLcode Curl_http_input_auth(struct connectdata *conn, bool proxy,
authp->avail |= CURLAUTH_NEGOTIATE;
if(authp->picked == CURLAUTH_NEGOTIATE) {
- if(negdata->state == GSS_AUTHSENT ||
- negdata->state == GSS_AUTHNONE) {
- CURLcode result = Curl_input_negotiate(conn, proxy, auth);
- if(!result) {
- DEBUGASSERT(!data->req.newurl);
- data->req.newurl = strdup(data->change.url);
- if(!data->req.newurl)
- return CURLE_OUT_OF_MEMORY;
- data->state.authproblem = FALSE;
- /* we received a GSS auth token and we dealt with it fine */
- negdata->state = GSS_AUTHRECV;
- }
- else
- data->state.authproblem = TRUE;
+ CURLcode result = Curl_input_negotiate(conn, proxy, auth);
+ if(!result) {
+ DEBUGASSERT(!data->req.newurl);
+ data->req.newurl = strdup(data->change.url);
+ if(!data->req.newurl)
+ return CURLE_OUT_OF_MEMORY;
+ data->state.authproblem = FALSE;
+ /* we received a GSS auth token and we dealt with it fine */
+ negdata->state = GSS_AUTHRECV;
}
+ else
+ data->state.authproblem = TRUE;
}
}
}
@@ -1117,14 +1136,13 @@ void Curl_add_buffer_free(Curl_send_buffer **inp)
CURLcode Curl_add_buffer_send(Curl_send_buffer **inp,
struct connectdata *conn,
- /* add the number of sent bytes to this
- counter */
- long *bytes_written,
+ /* add the number of sent bytes to this
+ counter */
+ curl_off_t *bytes_written,
- /* how much of the buffer contains body data */
+ /* how much of the buffer contains body data */
size_t included_body_bytes,
int socketindex)
-
{
ssize_t amount;
CURLcode result;
@@ -1220,7 +1238,8 @@ CURLcode Curl_add_buffer_send(Curl_send_buffer **inp,
if(http) {
/* if we sent a piece of the body here, up the byte counter for it
accordingly */
- http->writebytecount += bodylen;
+ data->req.writebytecount += bodylen;
+ Curl_pgrsSetUploadCounter(data, data->req.writebytecount);
if((size_t)amount != size) {
/* The whole request could not be sent in one system call. We must
@@ -1553,20 +1572,6 @@ CURLcode Curl_http_done(struct connectdata *conn,
Curl_unencode_cleanup(conn);
-#ifdef USE_SPNEGO
- if(data->state.proxyneg.state == GSS_AUTHSENT ||
- data->state.negotiate.state == GSS_AUTHSENT) {
- /* add forbid re-use if http-code != 401/407 as a WA only needed for
- * 401/407 that signal auth failure (empty) otherwise state will be RECV
- * with current code.
- * Do not close CONNECT_ONLY connections. */
- if((data->req.httpcode != 401) && (data->req.httpcode != 407) &&
- !data->set.connect_only)
- streamclose(conn, "Negotiate transfer completed");
- Curl_cleanup_negotiate(data);
- }
-#endif
-
/* set the proper values (possibly modified on POST) */
conn->seek_func = data->set.seek_func; /* restore */
conn->seek_client = data->set.seek_client; /* restore */
@@ -1582,16 +1587,6 @@ CURLcode Curl_http_done(struct connectdata *conn,
Curl_mime_cleanpart(&http->form);
- switch(data->set.httpreq) {
- case HTTPREQ_PUT:
- case HTTPREQ_POST_FORM:
- case HTTPREQ_POST_MIME:
- data->req.bytecount = http->readbytecount + http->writebytecount;
- break;
- default:
- break;
- }
-
if(status)
return status;
@@ -1599,7 +1594,7 @@ CURLcode Curl_http_done(struct connectdata *conn,
entire operation is complete */
!conn->bits.retry &&
!data->set.connect_only &&
- (http->readbytecount +
+ (data->req.bytecount +
data->req.headerbytecount -
data->req.deductheadercount) <= 0) {
/* If this connection isn't simply closed to be retried, AND nothing was
@@ -1789,9 +1784,16 @@ CURLcode Curl_add_custom_headers(struct connectdata *conn,
}
else {
if(*(--ptr) == ';') {
- /* send no-value custom header if terminated by semicolon */
- *ptr = ':';
- semicolonp = ptr;
+ /* copy the source */
+ semicolonp = strdup(headers->data);
+ if(!semicolonp) {
+ Curl_add_buffer_free(&req_buffer);
+ return CURLE_OUT_OF_MEMORY;
+ }
+ /* put a colon where the semicolon is */
+ semicolonp[ptr - headers->data] = ':';
+ /* point at the colon */
+ optr = &semicolonp [ptr - headers->data];
}
}
ptr = optr;
@@ -1807,36 +1809,37 @@ CURLcode Curl_add_custom_headers(struct connectdata *conn,
if(*ptr || semicolonp) {
/* only send this if the contents was non-blank or done special */
CURLcode result = CURLE_OK;
+ char *compare = semicolonp ? semicolonp : headers->data;
if(conn->allocptr.host &&
/* a Host: header was sent already, don't pass on any custom Host:
header as that will produce *two* in the same request! */
- checkprefix("Host:", headers->data))
+ checkprefix("Host:", compare))
;
else if(data->set.httpreq == HTTPREQ_POST_FORM &&
/* this header (extended by formdata.c) is sent later */
- checkprefix("Content-Type:", headers->data))
+ checkprefix("Content-Type:", compare))
;
else if(data->set.httpreq == HTTPREQ_POST_MIME &&
/* this header is sent later */
- checkprefix("Content-Type:", headers->data))
+ checkprefix("Content-Type:", compare))
;
else if(conn->bits.authneg &&
/* while doing auth neg, don't allow the custom length since
we will force length zero then */
- checkprefix("Content-Length:", headers->data))
+ checkprefix("Content-Length:", compare))
;
else if(conn->allocptr.te &&
/* when asking for Transfer-Encoding, don't pass on a custom
Connection: */
- checkprefix("Connection:", headers->data))
+ checkprefix("Connection:", compare))
;
else if((conn->httpversion == 20) &&
- checkprefix("Transfer-Encoding:", headers->data))
+ checkprefix("Transfer-Encoding:", compare))
/* HTTP/2 doesn't support chunked requests */
;
- else if((checkprefix("Authorization:", headers->data) ||
- checkprefix("Cookie:", headers->data)) &&
+ else if((checkprefix("Authorization:", compare) ||
+ checkprefix("Cookie:", compare)) &&
/* be careful of sending this potentially sensitive header to
other hosts */
(data->state.this_is_a_follow &&
@@ -1845,10 +1848,10 @@ CURLcode Curl_add_custom_headers(struct connectdata *conn,
!strcasecompare(data->state.first_host, conn->host.name)))
;
else {
- result = Curl_add_bufferf(&req_buffer, "%s\r\n", headers->data);
+ result = Curl_add_bufferf(&req_buffer, "%s\r\n", compare);
}
if(semicolonp)
- *semicolonp = ';'; /* put back the semicolon */
+ free(semicolonp);
if(result)
return result;
}
@@ -2000,7 +2003,6 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
data->state.first_remote_port = conn->remote_port;
}
- http->writebytecount = http->readbytecount = 0;
if((conn->handler->protocol&(PROTO_FAMILY_HTTP|CURLPROTO_FTP)) &&
data->set.upload) {
@@ -2061,7 +2063,8 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
return result;
}
- if((data->state.authhost.multipass || data->state.authproxy.multipass) &&
+ if(((data->state.authhost.multipass && !data->state.authhost.done)
+ || (data->state.authproxy.multipass && !data->state.authproxy.done)) &&
(httpreq != HTTPREQ_GET) &&
(httpreq != HTTPREQ_HEAD)) {
/* Auth is required and we are not authenticated yet. Make a PUT or POST
@@ -2697,9 +2700,8 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
failf(data, "Failed sending PUT request");
else
/* prepare for transfer */
- Curl_setup_transfer(conn, FIRSTSOCKET, -1, TRUE,
- &http->readbytecount, postsize?FIRSTSOCKET:-1,
- postsize?&http->writebytecount:NULL);
+ Curl_setup_transfer(data, FIRSTSOCKET, -1, TRUE,
+ postsize?FIRSTSOCKET:-1);
if(result)
return result;
break;
@@ -2719,12 +2721,11 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
failf(data, "Failed sending POST request");
else
/* setup variables for the upcoming transfer */
- Curl_setup_transfer(conn, FIRSTSOCKET, -1, TRUE, &http->readbytecount,
- -1, NULL);
+ Curl_setup_transfer(data, FIRSTSOCKET, -1, TRUE, -1);
break;
}
- postsize = http->postsize;
+ data->state.infilesize = postsize = http->postsize;
/* We only set Content-Length and allow a custom Content-Length if
we don't upload data chunked, as RFC2616 forbids us to set both
@@ -2788,9 +2789,8 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
failf(data, "Failed sending POST request");
else
/* prepare for transfer */
- Curl_setup_transfer(conn, FIRSTSOCKET, -1, TRUE,
- &http->readbytecount, postsize?FIRSTSOCKET:-1,
- postsize?&http->writebytecount:NULL);
+ Curl_setup_transfer(data, FIRSTSOCKET, -1, TRUE,
+ postsize?FIRSTSOCKET:-1);
if(result)
return result;
@@ -2944,9 +2944,8 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
if(result)
failf(data, "Failed sending HTTP POST request");
else
- Curl_setup_transfer(conn, FIRSTSOCKET, -1, TRUE,
- &http->readbytecount, http->postdata?FIRSTSOCKET:-1,
- http->postdata?&http->writebytecount:NULL);
+ Curl_setup_transfer(data, FIRSTSOCKET, -1, TRUE,
+ http->postdata?FIRSTSOCKET:-1);
break;
default:
@@ -2962,33 +2961,30 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
failf(data, "Failed sending HTTP request");
else
/* HTTP GET/HEAD download: */
- Curl_setup_transfer(conn, FIRSTSOCKET, -1, TRUE, &http->readbytecount,
- http->postdata?FIRSTSOCKET:-1,
- http->postdata?&http->writebytecount:NULL);
+ Curl_setup_transfer(data, FIRSTSOCKET, -1, TRUE,
+ http->postdata?FIRSTSOCKET:-1);
}
if(result)
return result;
- if(http->writebytecount) {
+ if(data->req.writebytecount) {
/* if a request-body has been sent off, we make sure this progress is noted
properly */
- Curl_pgrsSetUploadCounter(data, http->writebytecount);
+ Curl_pgrsSetUploadCounter(data, data->req.writebytecount);
if(Curl_pgrsUpdate(conn))
result = CURLE_ABORTED_BY_CALLBACK;
- if(http->writebytecount >= postsize) {
+ if(data->req.writebytecount >= postsize) {
/* already sent the entire request body, mark the "upload" as
complete */
infof(data, "upload completely sent off: %" CURL_FORMAT_CURL_OFF_T
" out of %" CURL_FORMAT_CURL_OFF_T " bytes\n",
- http->writebytecount, postsize);
+ data->req.writebytecount, postsize);
data->req.upload_done = TRUE;
data->req.keepon &= ~KEEP_SEND; /* we're done writing */
data->req.exp100 = EXP100_SEND_DATA; /* already sent */
Curl_expire_done(data, EXPIRE_100_TIMEOUT);
}
- else
- data->req.writebytecount = http->writebytecount;
}
if((conn->httpversion == 20) && data->req.upload_chunky)
@@ -3383,7 +3379,24 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
data->state.authproblem = TRUE;
}
#endif
-
+#if defined(USE_SPNEGO)
+ if(conn->bits.close &&
+ (((data->req.httpcode == 401) &&
+ (conn->negotiate.state == GSS_AUTHRECV)) ||
+ ((data->req.httpcode == 407) &&
+ (conn->proxyneg.state == GSS_AUTHRECV)))) {
+ infof(data, "Connection closure while negotiating auth (HTTP 1.0?)\n");
+ data->state.authproblem = TRUE;
+ }
+ if((conn->negotiate.state == GSS_AUTHDONE) &&
+ (data->req.httpcode != 401)) {
+ conn->negotiate.state = GSS_AUTHSUCC;
+ }
+ if((conn->proxyneg.state == GSS_AUTHDONE) &&
+ (data->req.httpcode != 407)) {
+ conn->proxyneg.state = GSS_AUTHSUCC;
+ }
+#endif
/*
* When all the headers have been parsed, see if we should give
* up and return an error.
@@ -3960,6 +3973,22 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
if(result)
return result;
}
+ #ifdef USE_SPNEGO
+ else if(checkprefix("Persistent-Auth", k->p)) {
+ struct negotiatedata *negdata = &conn->negotiate;
+ struct auth *authp = &data->state.authhost;
+ if(authp->picked == CURLAUTH_NEGOTIATE) {
+ char *persistentauth = Curl_copy_header_value(k->p);
+ if(!persistentauth)
+ return CURLE_OUT_OF_MEMORY;
+ negdata->noauthpersist = checkprefix("false", persistentauth);
+ negdata->havenoauthpersist = TRUE;
+ infof(data, "Negotiate: noauthpersist -> %d, header part: %s",
+ negdata->noauthpersist, persistentauth);
+ free(persistentauth);
+ }
+ }
+ #endif
else if((k->httpcode >= 300 && k->httpcode < 400) &&
checkprefix("Location:", k->p) &&
!data->req.location) {
@@ -3987,6 +4016,27 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
}
}
}
+#ifdef USE_ALTSVC
+ /* If enabled, the header is incoming and this is over HTTPS */
+ else if(data->asi && checkprefix("Alt-Svc:", k->p) &&
+ ((conn->handler->flags & PROTOPT_SSL) ||
+#ifdef CURLDEBUG
+ /* allow debug builds to circumvent the HTTPS restriction */
+ getenv("CURL_ALTSVC_HTTP")
+#else
+ 0
+#endif
+ )) {
+ /* the ALPN of the current request */
+ enum alpnid id = (conn->httpversion == 20) ? ALPN_h2 : ALPN_h1;
+ result = Curl_altsvc_parse(data, data->asi,
+ &k->p[ strlen("Alt-Svc:") ],
+ id, conn->host.name,
+ curlx_uitous(conn->remote_port));
+ if(result)
+ return result;
+ }
+#endif
else if(conn->handler->protocol & CURLPROTO_RTSP) {
result = Curl_rtsp_parseheader(conn, k->p);
if(result)
diff --git a/lib/http.h b/lib/http.h
index 7fa0471a..a59fe7af 100644
--- a/lib/http.h
+++ b/lib/http.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -65,7 +65,7 @@ CURLcode Curl_add_buffer(Curl_send_buffer **inp, const void *inptr,
size_t size) WARN_UNUSED_RESULT;
CURLcode Curl_add_buffer_send(Curl_send_buffer **inp,
struct connectdata *conn,
- long *bytes_written,
+ curl_off_t *bytes_written,
size_t included_body_bytes,
int socketindex);
@@ -139,8 +139,6 @@ struct HTTP {
const char *p_pragma; /* Pragma: string */
const char *p_accept; /* Accept: string */
- curl_off_t readbytecount;
- curl_off_t writebytecount;
/* For FORM posting */
curl_mimepart form;
diff --git a/lib/http2.c b/lib/http2.c
index 3b8088df..b5c53cdf 100644
--- a/lib/http2.c
+++ b/lib/http2.c
@@ -357,7 +357,7 @@ int Curl_http2_ver(char *p, size_t len)
https://tools.ietf.org/html/rfc7540#page-77
nghttp2_error_code enums are identical.
*/
-const char *Curl_http2_strerror(uint32_t err)
+static const char *http2_strerror(uint32_t err)
{
#ifndef NGHTTP2_HAS_HTTP2_STRERROR
const char *str[] = {
@@ -618,6 +618,18 @@ static int push_promise(struct Curl_easy *data,
return rv;
}
+/*
+ * multi_connchanged() is called to tell that there is a connection in
+ * this multi handle that has changed state (pipelining become possible, the
+ * number of allowed streams changed or similar), and a subsequent use of this
+ * multi handle should move CONNECT_PEND handles back to CONNECT to have them
+ * retry.
+ */
+static void multi_connchanged(struct Curl_multi *multi)
+{
+ multi->recheckstate = TRUE;
+}
+
static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
void *userp)
{
@@ -650,7 +662,7 @@ static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
infof(conn->data,
"Connection state changed (MAX_CONCURRENT_STREAMS == %u)!\n",
httpc->settings.max_concurrent_streams);
- Curl_multi_connchanged(conn->data->multi);
+ multi_connchanged(conn->data->multi);
}
}
return 0;
@@ -837,7 +849,7 @@ static int on_stream_close(nghttp2_session *session, int32_t stream_id,
return 0;
}
H2BUGF(infof(data_s, "on_stream_close(), %s (err %d), stream %u\n",
- Curl_http2_strerror(error_code), error_code, stream_id));
+ http2_strerror(error_code), error_code, stream_id));
stream = data_s->req.protop;
if(!stream)
return NGHTTP2_ERR_CALLBACK_FAILURE;
@@ -957,6 +969,28 @@ static int on_header(nghttp2_session *session, const nghttp2_frame *frame,
if(frame->hd.type == NGHTTP2_PUSH_PROMISE) {
char *h;
+ if(!strcmp(":authority", (const char *)name)) {
+ /* psuedo headers are lower case */
+ int rc = 0;
+ char *check = aprintf("%s:%d", conn->host.name, conn->remote_port);
+ if(!check)
+ /* no memory */
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
+ if(!Curl_strcasecompare(check, (const char *)value)) {
+ /* This is push is not for the same authority that was asked for in
+ * the URL. RFC 7540 section 8.2 says: "A client MUST treat a
+ * PUSH_PROMISE for which the server is not authoritative as a stream
+ * error of type PROTOCOL_ERROR."
+ */
+ (void)nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
+ stream_id, NGHTTP2_PROTOCOL_ERROR);
+ rc = NGHTTP2_ERR_CALLBACK_FAILURE;
+ }
+ free(check);
+ if(rc)
+ return rc;
+ }
+
if(!stream->push_headers) {
stream->push_headers_alloc = 10;
stream->push_headers = malloc(stream->push_headers_alloc *
@@ -1197,7 +1231,7 @@ void Curl_http2_done(struct connectdata *conn, bool premature)
/*
* Initialize nghttp2 for a Curl connection
*/
-CURLcode Curl_http2_init(struct connectdata *conn)
+static CURLcode http2_init(struct connectdata *conn)
{
if(!conn->proto.httpc.h2) {
int rc;
@@ -1431,7 +1465,7 @@ static ssize_t http2_handle_stream_close(struct connectdata *conn,
}
else if(httpc->error_code != NGHTTP2_NO_ERROR) {
failf(data, "HTTP/2 stream %d was not closed cleanly: %s (err %u)",
- stream->stream_id, Curl_http2_strerror(httpc->error_code),
+ stream->stream_id, http2_strerror(httpc->error_code),
httpc->error_code);
*err = CURLE_HTTP2_STREAM;
return -1;
@@ -2141,7 +2175,7 @@ CURLcode Curl_http2_setup(struct connectdata *conn)
else
conn->handler = &Curl_handler_http2;
- result = Curl_http2_init(conn);
+ result = http2_init(conn);
if(result) {
Curl_add_buffer_free(&stream->header_recvbuf);
return result;
@@ -2163,7 +2197,7 @@ CURLcode Curl_http2_setup(struct connectdata *conn)
conn->bundle->multiuse = BUNDLE_MULTIPLEX;
infof(conn->data, "Connection state changed (HTTP/2 confirmed)\n");
- Curl_multi_connchanged(conn->data->multi);
+ multi_connchanged(conn->data->multi);
return CURLE_OK;
}
diff --git a/lib/http2.h b/lib/http2.h
index 67db3dff..db6217b1 100644
--- a/lib/http2.h
+++ b/lib/http2.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -63,7 +63,6 @@ void Curl_http2_cleanup_dependencies(struct Curl_easy *data);
/* returns true if the HTTP/2 stream error was HTTP_1_1_REQUIRED */
bool Curl_h2_http_1_1_error(struct connectdata *conn);
#else /* USE_NGHTTP2 */
-#define Curl_http2_init(x) CURLE_UNSUPPORTED_PROTOCOL
#define Curl_http2_send_request(x) CURLE_UNSUPPORTED_PROTOCOL
#define Curl_http2_request_upgrade(x,y) CURLE_UNSUPPORTED_PROTOCOL
#define Curl_http2_setup(x) CURLE_UNSUPPORTED_PROTOCOL
diff --git a/lib/http_negotiate.c b/lib/http_negotiate.c
index 2a97707e..9415236f 100644
--- a/lib/http_negotiate.c
+++ b/lib/http_negotiate.c
@@ -56,7 +56,7 @@ CURLcode Curl_input_negotiate(struct connectdata *conn, bool proxy,
service = data->set.str[STRING_PROXY_SERVICE_NAME] ?
data->set.str[STRING_PROXY_SERVICE_NAME] : "HTTP";
host = conn->http_proxy.host.name;
- neg_ctx = &data->state.proxyneg;
+ neg_ctx = &conn->proxyneg;
}
else {
userp = conn->user;
@@ -64,7 +64,7 @@ CURLcode Curl_input_negotiate(struct connectdata *conn, bool proxy,
service = data->set.str[STRING_SERVICE_NAME] ?
data->set.str[STRING_SERVICE_NAME] : "HTTP";
host = conn->host.name;
- neg_ctx = &data->state.negotiate;
+ neg_ctx = &conn->negotiate;
}
/* Not set means empty */
@@ -80,11 +80,16 @@ CURLcode Curl_input_negotiate(struct connectdata *conn, bool proxy,
header++;
len = strlen(header);
+ neg_ctx->havenegdata = len != 0;
if(!len) {
- /* Is this the first call in a new negotiation? */
- if(neg_ctx->context) {
- /* The server rejected our authentication and hasn't suppled any more
+ if(neg_ctx->state == GSS_AUTHSUCC) {
+ infof(conn->data, "Negotiate auth restarted\n");
+ Curl_cleanup_negotiate(conn);
+ }
+ else if(neg_ctx->state != GSS_AUTHNONE) {
+ /* The server rejected our authentication and hasn't supplied any more
negotiation mechanisms */
+ Curl_cleanup_negotiate(conn);
return CURLE_LOGIN_DENIED;
}
}
@@ -106,38 +111,96 @@ CURLcode Curl_input_negotiate(struct connectdata *conn, bool proxy,
CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy)
{
- struct negotiatedata *neg_ctx = proxy ? &conn->data->state.proxyneg :
- &conn->data->state.negotiate;
+ struct negotiatedata *neg_ctx = proxy ? &conn->proxyneg :
+ &conn->negotiate;
+ struct auth *authp = proxy ? &conn->data->state.authproxy :
+ &conn->data->state.authhost;
char *base64 = NULL;
size_t len = 0;
char *userp;
CURLcode result;
- result = Curl_auth_create_spnego_message(conn->data, neg_ctx, &base64, &len);
- if(result)
- return result;
+ authp->done = FALSE;
+
+ if(neg_ctx->state == GSS_AUTHRECV) {
+ if(neg_ctx->havenegdata) {
+ neg_ctx->havemultiplerequests = TRUE;
+ }
+ }
+ else if(neg_ctx->state == GSS_AUTHSUCC) {
+ if(!neg_ctx->havenoauthpersist) {
+ neg_ctx->noauthpersist = !neg_ctx->havemultiplerequests;
+ }
+ }
- userp = aprintf("%sAuthorization: Negotiate %s\r\n", proxy ? "Proxy-" : "",
- base64);
+ if(neg_ctx->noauthpersist ||
+ (neg_ctx->state != GSS_AUTHDONE && neg_ctx->state != GSS_AUTHSUCC)) {
- if(proxy) {
- Curl_safefree(conn->allocptr.proxyuserpwd);
- conn->allocptr.proxyuserpwd = userp;
+ if(neg_ctx->noauthpersist && neg_ctx->state == GSS_AUTHSUCC) {
+ infof(conn->data, "Curl_output_negotiate, "
+ "no persistent authentication: cleanup existing context");
+ Curl_auth_spnego_cleanup(neg_ctx);
+ }
+ if(!neg_ctx->context) {
+ result = Curl_input_negotiate(conn, proxy, "Negotiate");
+ if(result)
+ return result;
+ }
+
+ result = Curl_auth_create_spnego_message(conn->data,
+ neg_ctx, &base64, &len);
+ if(result)
+ return result;
+
+ userp = aprintf("%sAuthorization: Negotiate %s\r\n", proxy ? "Proxy-" : "",
+ base64);
+
+ if(proxy) {
+ Curl_safefree(conn->allocptr.proxyuserpwd);
+ conn->allocptr.proxyuserpwd = userp;
+ }
+ else {
+ Curl_safefree(conn->allocptr.userpwd);
+ conn->allocptr.userpwd = userp;
+ }
+
+ free(base64);
+
+ if(userp == NULL) {
+ return CURLE_OUT_OF_MEMORY;
+ }
+
+ neg_ctx->state = GSS_AUTHSENT;
+ #ifdef HAVE_GSSAPI
+ if(neg_ctx->status == GSS_S_COMPLETE ||
+ neg_ctx->status == GSS_S_CONTINUE_NEEDED) {
+ neg_ctx->state = GSS_AUTHDONE;
+ }
+ #else
+ #ifdef USE_WINDOWS_SSPI
+ if(neg_ctx->status == SEC_E_OK ||
+ neg_ctx->status == SEC_I_CONTINUE_NEEDED) {
+ neg_ctx->state = GSS_AUTHDONE;
+ }
+ #endif
+ #endif
}
- else {
- Curl_safefree(conn->allocptr.userpwd);
- conn->allocptr.userpwd = userp;
+
+ if(neg_ctx->state == GSS_AUTHDONE || neg_ctx->state == GSS_AUTHSUCC) {
+ /* connection is already authenticated,
+ * don't send a header in future requests */
+ authp->done = TRUE;
}
- free(base64);
+ neg_ctx->havenegdata = FALSE;
- return (userp == NULL) ? CURLE_OUT_OF_MEMORY : CURLE_OK;
+ return CURLE_OK;
}
-void Curl_cleanup_negotiate(struct Curl_easy *data)
+void Curl_cleanup_negotiate(struct connectdata *conn)
{
- Curl_auth_spnego_cleanup(&data->state.negotiate);
- Curl_auth_spnego_cleanup(&data->state.proxyneg);
+ Curl_auth_spnego_cleanup(&conn->negotiate);
+ Curl_auth_spnego_cleanup(&conn->proxyneg);
}
#endif /* !CURL_DISABLE_HTTP && USE_SPNEGO */
diff --git a/lib/http_negotiate.h b/lib/http_negotiate.h
index c64e5482..d4a7f09e 100644
--- a/lib/http_negotiate.h
+++ b/lib/http_negotiate.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -31,7 +31,7 @@ CURLcode Curl_input_negotiate(struct connectdata *conn, bool proxy,
/* this is for creating Negotiate header output */
CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy);
-void Curl_cleanup_negotiate(struct Curl_easy *data);
+void Curl_cleanup_negotiate(struct connectdata *conn);
#endif /* USE_SPNEGO */
diff --git a/lib/imap.c b/lib/imap.c
index 5d96900f..075b3ad2 100644
--- a/lib/imap.c
+++ b/lib/imap.c
@@ -1177,11 +1177,11 @@ static CURLcode imap_state_fetch_resp(struct connectdata *conn, int imapcode,
if(data->req.bytecount == size)
/* The entire data is already transferred! */
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(data, -1, -1, FALSE, -1);
else {
/* IMAP download */
data->req.maxdownload = size;
- Curl_setup_transfer(conn, FIRSTSOCKET, size, FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(data, FIRSTSOCKET, size, FALSE, -1);
}
}
else {
@@ -1231,7 +1231,7 @@ static CURLcode imap_state_append_resp(struct connectdata *conn, int imapcode,
Curl_pgrsSetUploadSize(data, data->state.infilesize);
/* IMAP upload */
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, FIRSTSOCKET, NULL);
+ Curl_setup_transfer(data, -1, -1, FALSE, FIRSTSOCKET);
/* End of DO phase */
state(conn, IMAP_STOP);
@@ -1660,7 +1660,7 @@ static CURLcode imap_dophase_done(struct connectdata *conn, bool connected)
if(imap->transfer != FTPTRANSFER_BODY)
/* no data to transfer */
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(conn->data, -1, -1, FALSE, -1);
return CURLE_OK;
}
diff --git a/lib/ldap.c b/lib/ldap.c
index a149f8cb..79dc2f2e 100644
--- a/lib/ldap.c
+++ b/lib/ldap.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -744,7 +744,7 @@ quit:
#endif
/* no data to transfer */
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(data, -1, -1, FALSE, -1);
connclose(conn, "LDAP connection always disable re-use");
return result;
diff --git a/lib/libcurl.plist b/lib/libcurl.plist
index 13f2cf74..7d005b79 100644
--- a/lib/libcurl.plist
+++ b/lib/libcurl.plist
@@ -15,7 +15,7 @@
<string>se.haxx.curl.libcurl</string>
<key>CFBundleVersion</key>
- <string>7.64.0</string>
+ <string>7.64.1</string>
<key>CFBundleName</key>
<string>libcurl</string>
@@ -27,9 +27,9 @@
<string>????</string>
<key>CFBundleShortVersionString</key>
- <string>libcurl 7.64.0</string>
+ <string>libcurl 7.64.1</string>
<key>CFBundleGetInfoString</key>
- <string>libcurl.plist 7.64.0</string>
+ <string>libcurl.plist 7.64.1</string>
</dict>
</plist>
diff --git a/lib/md5.c b/lib/md5.c
index a17a58fa..db4cc265 100644
--- a/lib/md5.c
+++ b/lib/md5.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -83,7 +83,7 @@ static void MD5_Final(unsigned char digest[16], MD5_CTX * ctx)
gcry_md_close(*ctx);
}
-#elif defined(USE_OPENSSL)
+#elif defined(USE_OPENSSL) && !defined(USE_AMISSL)
/* When OpenSSL is available we use the MD5-function from OpenSSL */
#include <openssl/md5.h>
#include "curl_memory.h"
diff --git a/lib/memdebug.c b/lib/memdebug.c
index 05590a8f..e3ac8edf 100644
--- a/lib/memdebug.c
+++ b/lib/memdebug.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -100,19 +100,18 @@ struct memdebug {
* Don't use these with multithreaded test programs!
*/
-#define logfile curl_debuglogfile
-FILE *curl_debuglogfile = NULL;
+FILE *curl_dbg_logfile = NULL;
static bool memlimit = FALSE; /* enable memory limit */
static long memsize = 0; /* set number of mallocs allowed */
/* this sets the log file name */
-void curl_memdebug(const char *logname)
+void curl_dbg_memdebug(const char *logname)
{
- if(!logfile) {
+ if(!curl_dbg_logfile) {
if(logname && *logname)
- logfile = fopen(logname, FOPEN_WRITETEXT);
+ curl_dbg_logfile = fopen(logname, FOPEN_WRITETEXT);
else
- logfile = stderr;
+ curl_dbg_logfile = stderr;
#ifdef MEMDEBUG_LOG_SYNC
/* Flush the log file after every line so the log isn't lost in a crash */
if(logfile)
@@ -123,7 +122,7 @@ void curl_memdebug(const char *logname)
/* This function sets the number of malloc() calls that should return
successfully! */
-void curl_memlimit(long limit)
+void curl_dbg_memlimit(long limit)
{
if(!memlimit) {
memlimit = TRUE;
@@ -140,12 +139,12 @@ static bool countcheck(const char *func, int line, const char *source)
if(!memsize) {
if(source) {
/* log to file */
- curl_memlog("LIMIT %s:%d %s reached memlimit\n",
- source, line, func);
+ curl_dbg_log("LIMIT %s:%d %s reached memlimit\n",
+ source, line, func);
/* log to stderr also */
fprintf(stderr, "LIMIT %s:%d %s reached memlimit\n",
source, line, func);
- fflush(logfile); /* because it might crash now */
+ fflush(curl_dbg_logfile); /* because it might crash now */
}
errno = ENOMEM;
return TRUE; /* RETURN ERROR! */
@@ -159,7 +158,7 @@ static bool countcheck(const char *func, int line, const char *source)
return FALSE; /* allow this */
}
-void *curl_domalloc(size_t wantedsize, int line, const char *source)
+void *curl_dbg_malloc(size_t wantedsize, int line, const char *source)
{
struct memdebug *mem;
size_t size;
@@ -180,15 +179,15 @@ void *curl_domalloc(size_t wantedsize, int line, const char *source)
}
if(source)
- curl_memlog("MEM %s:%d malloc(%zu) = %p\n",
- source, line, wantedsize,
- mem ? (void *)mem->mem : (void *)0);
+ curl_dbg_log("MEM %s:%d malloc(%zu) = %p\n",
+ source, line, wantedsize,
+ mem ? (void *)mem->mem : (void *)0);
return (mem ? mem->mem : NULL);
}
-void *curl_docalloc(size_t wanted_elements, size_t wanted_size,
- int line, const char *source)
+void *curl_dbg_calloc(size_t wanted_elements, size_t wanted_size,
+ int line, const char *source)
{
struct memdebug *mem;
size_t size, user_size;
@@ -208,14 +207,14 @@ void *curl_docalloc(size_t wanted_elements, size_t wanted_size,
mem->size = user_size;
if(source)
- curl_memlog("MEM %s:%d calloc(%zu,%zu) = %p\n",
- source, line, wanted_elements, wanted_size,
- mem ? (void *)mem->mem : (void *)0);
+ curl_dbg_log("MEM %s:%d calloc(%zu,%zu) = %p\n",
+ source, line, wanted_elements, wanted_size,
+ mem ? (void *)mem->mem : (void *)0);
return (mem ? mem->mem : NULL);
}
-char *curl_dostrdup(const char *str, int line, const char *source)
+char *curl_dbg_strdup(const char *str, int line, const char *source)
{
char *mem;
size_t len;
@@ -227,19 +226,19 @@ char *curl_dostrdup(const char *str, int line, const char *source)
len = strlen(str) + 1;
- mem = curl_domalloc(len, 0, NULL); /* NULL prevents logging */
+ mem = curl_dbg_malloc(len, 0, NULL); /* NULL prevents logging */
if(mem)
memcpy(mem, str, len);
if(source)
- curl_memlog("MEM %s:%d strdup(%p) (%zu) = %p\n",
- source, line, (const void *)str, len, (const void *)mem);
+ curl_dbg_log("MEM %s:%d strdup(%p) (%zu) = %p\n",
+ source, line, (const void *)str, len, (const void *)mem);
return mem;
}
#if defined(WIN32) && defined(UNICODE)
-wchar_t *curl_dowcsdup(const wchar_t *str, int line, const char *source)
+wchar_t *curl_dbg_wcsdup(const wchar_t *str, int line, const char *source)
{
wchar_t *mem;
size_t wsiz, bsiz;
@@ -252,12 +251,12 @@ wchar_t *curl_dowcsdup(const wchar_t *str, int line, const char *source)
wsiz = wcslen(str) + 1;
bsiz = wsiz * sizeof(wchar_t);
- mem = curl_domalloc(bsiz, 0, NULL); /* NULL prevents logging */
+ mem = curl_dbg_malloc(bsiz, 0, NULL); /* NULL prevents logging */
if(mem)
memcpy(mem, str, bsiz);
if(source)
- curl_memlog("MEM %s:%d wcsdup(%p) (%zu) = %p\n",
+ curl_dbg_log("MEM %s:%d wcsdup(%p) (%zu) = %p\n",
source, line, (void *)str, bsiz, (void *)mem);
return mem;
@@ -266,8 +265,8 @@ wchar_t *curl_dowcsdup(const wchar_t *str, int line, const char *source)
/* We provide a realloc() that accepts a NULL as pointer, which then
performs a malloc(). In order to work with ares. */
-void *curl_dorealloc(void *ptr, size_t wantedsize,
- int line, const char *source)
+void *curl_dbg_realloc(void *ptr, size_t wantedsize,
+ int line, const char *source)
{
struct memdebug *mem = NULL;
@@ -293,7 +292,7 @@ void *curl_dorealloc(void *ptr, size_t wantedsize,
mem = (Curl_crealloc)(mem, size);
if(source)
- curl_memlog("MEM %s:%d realloc(%p, %zu) = %p\n",
+ curl_dbg_log("MEM %s:%d realloc(%p, %zu) = %p\n",
source, line, (void *)ptr, wantedsize,
mem ? (void *)mem->mem : (void *)0);
@@ -305,7 +304,7 @@ void *curl_dorealloc(void *ptr, size_t wantedsize,
return NULL;
}
-void curl_dofree(void *ptr, int line, const char *source)
+void curl_dbg_free(void *ptr, int line, const char *source)
{
struct memdebug *mem;
@@ -331,11 +330,11 @@ void curl_dofree(void *ptr, int line, const char *source)
}
if(source)
- curl_memlog("MEM %s:%d free(%p)\n", source, line, (void *)ptr);
+ curl_dbg_log("MEM %s:%d free(%p)\n", source, line, (void *)ptr);
}
-curl_socket_t curl_socket(int domain, int type, int protocol,
- int line, const char *source)
+curl_socket_t curl_dbg_socket(int domain, int type, int protocol,
+ int line, const char *source)
{
const char *fmt = (sizeof(curl_socket_t) == sizeof(int)) ?
"FD %s:%d socket() = %d\n" :
@@ -351,44 +350,44 @@ curl_socket_t curl_socket(int domain, int type, int protocol,
sockfd = socket(domain, type, protocol);
if(source && (sockfd != CURL_SOCKET_BAD))
- curl_memlog(fmt, source, line, sockfd);
+ curl_dbg_log(fmt, source, line, sockfd);
return sockfd;
}
-SEND_TYPE_RETV curl_dosend(SEND_TYPE_ARG1 sockfd,
- SEND_QUAL_ARG2 SEND_TYPE_ARG2 buf,
- SEND_TYPE_ARG3 len, SEND_TYPE_ARG4 flags, int line,
- const char *source)
+SEND_TYPE_RETV curl_dbg_send(SEND_TYPE_ARG1 sockfd,
+ SEND_QUAL_ARG2 SEND_TYPE_ARG2 buf,
+ SEND_TYPE_ARG3 len, SEND_TYPE_ARG4 flags, int line,
+ const char *source)
{
SEND_TYPE_RETV rc;
if(countcheck("send", line, source))
return -1;
rc = send(sockfd, buf, len, flags);
if(source)
- curl_memlog("SEND %s:%d send(%lu) = %ld\n",
+ curl_dbg_log("SEND %s:%d send(%lu) = %ld\n",
source, line, (unsigned long)len, (long)rc);
return rc;
}
-RECV_TYPE_RETV curl_dorecv(RECV_TYPE_ARG1 sockfd, RECV_TYPE_ARG2 buf,
- RECV_TYPE_ARG3 len, RECV_TYPE_ARG4 flags, int line,
- const char *source)
+RECV_TYPE_RETV curl_dbg_recv(RECV_TYPE_ARG1 sockfd, RECV_TYPE_ARG2 buf,
+ RECV_TYPE_ARG3 len, RECV_TYPE_ARG4 flags, int line,
+ const char *source)
{
RECV_TYPE_RETV rc;
if(countcheck("recv", line, source))
return -1;
rc = recv(sockfd, buf, len, flags);
if(source)
- curl_memlog("RECV %s:%d recv(%lu) = %ld\n",
+ curl_dbg_log("RECV %s:%d recv(%lu) = %ld\n",
source, line, (unsigned long)len, (long)rc);
return rc;
}
#ifdef HAVE_SOCKETPAIR
-int curl_socketpair(int domain, int type, int protocol,
- curl_socket_t socket_vector[2],
- int line, const char *source)
+int curl_dbg_socketpair(int domain, int type, int protocol,
+ curl_socket_t socket_vector[2],
+ int line, const char *source)
{
const char *fmt = (sizeof(curl_socket_t) == sizeof(int)) ?
"FD %s:%d socketpair() = %d %d\n" :
@@ -399,14 +398,14 @@ int curl_socketpair(int domain, int type, int protocol,
int res = socketpair(domain, type, protocol, socket_vector);
if(source && (0 == res))
- curl_memlog(fmt, source, line, socket_vector[0], socket_vector[1]);
+ curl_dbg_log(fmt, source, line, socket_vector[0], socket_vector[1]);
return res;
}
#endif
-curl_socket_t curl_accept(curl_socket_t s, void *saddr, void *saddrlen,
- int line, const char *source)
+curl_socket_t curl_dbg_accept(curl_socket_t s, void *saddr, void *saddrlen,
+ int line, const char *source)
{
const char *fmt = (sizeof(curl_socket_t) == sizeof(int)) ?
"FD %s:%d accept() = %d\n" :
@@ -420,13 +419,13 @@ curl_socket_t curl_accept(curl_socket_t s, void *saddr, void *saddrlen,
curl_socket_t sockfd = accept(s, addr, addrlen);
if(source && (sockfd != CURL_SOCKET_BAD))
- curl_memlog(fmt, source, line, sockfd);
+ curl_dbg_log(fmt, source, line, sockfd);
return sockfd;
}
/* separate function to allow libcurl to mark a "faked" close */
-void curl_mark_sclose(curl_socket_t sockfd, int line, const char *source)
+void curl_dbg_mark_sclose(curl_socket_t sockfd, int line, const char *source)
{
const char *fmt = (sizeof(curl_socket_t) == sizeof(int)) ?
"FD %s:%d sclose(%d)\n":
@@ -435,54 +434,40 @@ void curl_mark_sclose(curl_socket_t sockfd, int line, const char *source)
"FD %s:%d sclose(%zd)\n";
if(source)
- curl_memlog(fmt, source, line, sockfd);
+ curl_dbg_log(fmt, source, line, sockfd);
}
/* this is our own defined way to close sockets on *ALL* platforms */
-int curl_sclose(curl_socket_t sockfd, int line, const char *source)
+int curl_dbg_sclose(curl_socket_t sockfd, int line, const char *source)
{
int res = sclose(sockfd);
- curl_mark_sclose(sockfd, line, source);
+ curl_dbg_mark_sclose(sockfd, line, source);
return res;
}
-FILE *curl_fopen(const char *file, const char *mode,
- int line, const char *source)
+FILE *curl_dbg_fopen(const char *file, const char *mode,
+ int line, const char *source)
{
FILE *res = fopen(file, mode);
if(source)
- curl_memlog("FILE %s:%d fopen(\"%s\",\"%s\") = %p\n",
+ curl_dbg_log("FILE %s:%d fopen(\"%s\",\"%s\") = %p\n",
source, line, file, mode, (void *)res);
return res;
}
-#ifdef HAVE_FDOPEN
-FILE *curl_fdopen(int filedes, const char *mode,
- int line, const char *source)
-{
- FILE *res = fdopen(filedes, mode);
-
- if(source)
- curl_memlog("FILE %s:%d fdopen(\"%d\",\"%s\") = %p\n",
- source, line, filedes, mode, (void *)res);
-
- return res;
-}
-#endif
-
-int curl_fclose(FILE *file, int line, const char *source)
+int curl_dbg_fclose(FILE *file, int line, const char *source)
{
int res;
DEBUGASSERT(file != NULL);
- res = fclose(file);
-
if(source)
- curl_memlog("FILE %s:%d fclose(%p)\n",
- source, line, (void *)file);
+ curl_dbg_log("FILE %s:%d fclose(%p)\n",
+ source, line, (void *)file);
+
+ res = fclose(file);
return res;
}
@@ -490,13 +475,13 @@ int curl_fclose(FILE *file, int line, const char *source)
#define LOGLINE_BUFSIZE 1024
/* this does the writing to the memory tracking log file */
-void curl_memlog(const char *format, ...)
+void curl_dbg_log(const char *format, ...)
{
char *buf;
int nchars;
va_list ap;
- if(!logfile)
+ if(!curl_dbg_logfile)
return;
buf = (Curl_cmalloc)(LOGLINE_BUFSIZE);
@@ -511,7 +496,7 @@ void curl_memlog(const char *format, ...)
nchars = LOGLINE_BUFSIZE - 1;
if(nchars > 0)
- fwrite(buf, 1, (size_t)nchars, logfile);
+ fwrite(buf, 1, (size_t)nchars, curl_dbg_logfile);
(Curl_cfree)(buf);
}
diff --git a/lib/memdebug.h b/lib/memdebug.h
index 233de65a..5236f60f 100644
--- a/lib/memdebug.h
+++ b/lib/memdebug.h
@@ -8,7 +8,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -30,97 +30,92 @@
#define CURL_MT_LOGFNAME_BUFSIZE 512
-#define logfile curl_debuglogfile
-
-extern FILE *logfile;
+extern FILE *curl_dbg_logfile;
/* memory functions */
-CURL_EXTERN void *curl_domalloc(size_t size, int line, const char *source);
-CURL_EXTERN void *curl_docalloc(size_t elements, size_t size, int line,
- const char *source);
-CURL_EXTERN void *curl_dorealloc(void *ptr, size_t size, int line,
- const char *source);
-CURL_EXTERN void curl_dofree(void *ptr, int line, const char *source);
-CURL_EXTERN char *curl_dostrdup(const char *str, int line, const char *source);
-#if defined(WIN32) && defined(UNICODE)
-CURL_EXTERN wchar_t *curl_dowcsdup(const wchar_t *str, int line,
+CURL_EXTERN void *curl_dbg_malloc(size_t size, int line, const char *source);
+CURL_EXTERN void *curl_dbg_calloc(size_t elements, size_t size, int line,
+ const char *source);
+CURL_EXTERN void *curl_dbg_realloc(void *ptr, size_t size, int line,
const char *source);
+CURL_EXTERN void curl_dbg_free(void *ptr, int line, const char *source);
+CURL_EXTERN char *curl_dbg_strdup(const char *str, int line, const char *src);
+#if defined(WIN32) && defined(UNICODE)
+CURL_EXTERN wchar_t *curl_dbg_wcsdup(const wchar_t *str, int line,
+ const char *source);
#endif
-CURL_EXTERN void curl_memdebug(const char *logname);
-CURL_EXTERN void curl_memlimit(long limit);
-CURL_EXTERN void curl_memlog(const char *format, ...);
+CURL_EXTERN void curl_dbg_memdebug(const char *logname);
+CURL_EXTERN void curl_dbg_memlimit(long limit);
+CURL_EXTERN void curl_dbg_log(const char *format, ...);
/* file descriptor manipulators */
-CURL_EXTERN curl_socket_t curl_socket(int domain, int type, int protocol,
- int line, const char *source);
-CURL_EXTERN void curl_mark_sclose(curl_socket_t sockfd,
- int line, const char *source);
-CURL_EXTERN int curl_sclose(curl_socket_t sockfd,
- int line, const char *source);
-CURL_EXTERN curl_socket_t curl_accept(curl_socket_t s, void *a, void *alen,
+CURL_EXTERN curl_socket_t curl_dbg_socket(int domain, int type, int protocol,
+ int line, const char *source);
+CURL_EXTERN void curl_dbg_mark_sclose(curl_socket_t sockfd,
int line, const char *source);
-#ifdef HAVE_SOCKETPAIR
-CURL_EXTERN int curl_socketpair(int domain, int type, int protocol,
- curl_socket_t socket_vector[2],
+CURL_EXTERN int curl_dbg_sclose(curl_socket_t sockfd,
int line, const char *source);
+CURL_EXTERN curl_socket_t curl_dbg_accept(curl_socket_t s, void *a, void *alen,
+ int line, const char *source);
+#ifdef HAVE_SOCKETPAIR
+CURL_EXTERN int curl_dbg_socketpair(int domain, int type, int protocol,
+ curl_socket_t socket_vector[2],
+ int line, const char *source);
#endif
/* send/receive sockets */
-CURL_EXTERN SEND_TYPE_RETV curl_dosend(SEND_TYPE_ARG1 sockfd,
- SEND_QUAL_ARG2 SEND_TYPE_ARG2 buf,
- SEND_TYPE_ARG3 len,
- SEND_TYPE_ARG4 flags, int line,
- const char *source);
-CURL_EXTERN RECV_TYPE_RETV curl_dorecv(RECV_TYPE_ARG1 sockfd,
- RECV_TYPE_ARG2 buf, RECV_TYPE_ARG3 len,
- RECV_TYPE_ARG4 flags, int line,
- const char *source);
+CURL_EXTERN SEND_TYPE_RETV curl_dbg_send(SEND_TYPE_ARG1 sockfd,
+ SEND_QUAL_ARG2 SEND_TYPE_ARG2 buf,
+ SEND_TYPE_ARG3 len,
+ SEND_TYPE_ARG4 flags, int line,
+ const char *source);
+CURL_EXTERN RECV_TYPE_RETV curl_dbg_recv(RECV_TYPE_ARG1 sockfd,
+ RECV_TYPE_ARG2 buf,
+ RECV_TYPE_ARG3 len,
+ RECV_TYPE_ARG4 flags, int line,
+ const char *source);
/* FILE functions */
-CURL_EXTERN FILE *curl_fopen(const char *file, const char *mode, int line,
- const char *source);
-#ifdef HAVE_FDOPEN
-CURL_EXTERN FILE *curl_fdopen(int filedes, const char *mode, int line,
- const char *source);
-#endif
-CURL_EXTERN int curl_fclose(FILE *file, int line, const char *source);
+CURL_EXTERN FILE *curl_dbg_fopen(const char *file, const char *mode, int line,
+ const char *source);
+CURL_EXTERN int curl_dbg_fclose(FILE *file, int line, const char *source);
#ifndef MEMDEBUG_NODEFINES
/* Set this symbol on the command-line, recompile all lib-sources */
#undef strdup
-#define strdup(ptr) curl_dostrdup(ptr, __LINE__, __FILE__)
-#define malloc(size) curl_domalloc(size, __LINE__, __FILE__)
-#define calloc(nbelem,size) curl_docalloc(nbelem, size, __LINE__, __FILE__)
-#define realloc(ptr,size) curl_dorealloc(ptr, size, __LINE__, __FILE__)
-#define free(ptr) curl_dofree(ptr, __LINE__, __FILE__)
-#define send(a,b,c,d) curl_dosend(a,b,c,d, __LINE__, __FILE__)
-#define recv(a,b,c,d) curl_dorecv(a,b,c,d, __LINE__, __FILE__)
+#define strdup(ptr) curl_dbg_strdup(ptr, __LINE__, __FILE__)
+#define malloc(size) curl_dbg_malloc(size, __LINE__, __FILE__)
+#define calloc(nbelem,size) curl_dbg_calloc(nbelem, size, __LINE__, __FILE__)
+#define realloc(ptr,size) curl_dbg_realloc(ptr, size, __LINE__, __FILE__)
+#define free(ptr) curl_dbg_free(ptr, __LINE__, __FILE__)
+#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 UNICODE
# undef wcsdup
-# define wcsdup(ptr) curl_dowcsdup(ptr, __LINE__, __FILE__)
+# define wcsdup(ptr) curl_dbg_wcsdup(ptr, __LINE__, __FILE__)
# undef _wcsdup
-# define _wcsdup(ptr) curl_dowcsdup(ptr, __LINE__, __FILE__)
+# define _wcsdup(ptr) curl_dbg_wcsdup(ptr, __LINE__, __FILE__)
# undef _tcsdup
-# define _tcsdup(ptr) curl_dowcsdup(ptr, __LINE__, __FILE__)
+# define _tcsdup(ptr) curl_dbg_wcsdup(ptr, __LINE__, __FILE__)
# else
# undef _tcsdup
-# define _tcsdup(ptr) curl_dostrdup(ptr, __LINE__, __FILE__)
+# define _tcsdup(ptr) curl_dbg_strdup(ptr, __LINE__, __FILE__)
# endif
#endif
#undef socket
#define socket(domain,type,protocol)\
- curl_socket(domain, type, protocol, __LINE__, __FILE__)
+ curl_dbg_socket(domain, type, protocol, __LINE__, __FILE__)
#undef accept /* for those with accept as a macro */
#define accept(sock,addr,len)\
- curl_accept(sock, addr, len, __LINE__, __FILE__)
+ curl_dbg_accept(sock, addr, len, __LINE__, __FILE__)
#ifdef HAVE_SOCKETPAIR
#define socketpair(domain,type,protocol,socket_vector)\
- curl_socketpair(domain, type, protocol, socket_vector, __LINE__, __FILE__)
+ curl_dbg_socketpair(domain, type, protocol, socket_vector, __LINE__, __FILE__)
#endif
#ifdef HAVE_GETADDRINFO
@@ -129,31 +124,31 @@ CURL_EXTERN int curl_fclose(FILE *file, int line, const char *source);
our macro as for other platforms. Instead, we redefine the new name they
define getaddrinfo to become! */
#define ogetaddrinfo(host,serv,hint,res) \
- curl_dogetaddrinfo(host, serv, hint, res, __LINE__, __FILE__)
+ curl_dbg_getaddrinfo(host, serv, hint, res, __LINE__, __FILE__)
#else
#undef getaddrinfo
#define getaddrinfo(host,serv,hint,res) \
- curl_dogetaddrinfo(host, serv, hint, res, __LINE__, __FILE__)
+ curl_dbg_getaddrinfo(host, serv, hint, res, __LINE__, __FILE__)
#endif
#endif /* HAVE_GETADDRINFO */
#ifdef HAVE_FREEADDRINFO
#undef freeaddrinfo
#define freeaddrinfo(data) \
- curl_dofreeaddrinfo(data, __LINE__, __FILE__)
+ curl_dbg_freeaddrinfo(data, __LINE__, __FILE__)
#endif /* HAVE_FREEADDRINFO */
/* sclose is probably already defined, redefine it! */
#undef sclose
-#define sclose(sockfd) curl_sclose(sockfd,__LINE__,__FILE__)
+#define sclose(sockfd) curl_dbg_sclose(sockfd,__LINE__,__FILE__)
-#define fake_sclose(sockfd) curl_mark_sclose(sockfd,__LINE__,__FILE__)
+#define fake_sclose(sockfd) curl_dbg_mark_sclose(sockfd,__LINE__,__FILE__)
#undef fopen
-#define fopen(file,mode) curl_fopen(file,mode,__LINE__,__FILE__)
+#define fopen(file,mode) curl_dbg_fopen(file,mode,__LINE__,__FILE__)
#undef fdopen
-#define fdopen(file,mode) curl_fdopen(file,mode,__LINE__,__FILE__)
-#define fclose(file) curl_fclose(file,__LINE__,__FILE__)
+#define fdopen(file,mode) curl_dbg_fdopen(file,mode,__LINE__,__FILE__)
+#define fclose(file) curl_dbg_fclose(file,__LINE__,__FILE__)
#endif /* MEMDEBUG_NODEFINES */
diff --git a/lib/mime.c b/lib/mime.c
index ca492d11..48147d4f 100644
--- a/lib/mime.c
+++ b/lib/mime.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -1122,8 +1122,6 @@ void curl_mime_free(curl_mime *mime)
Curl_mime_cleanpart(part);
free(part);
}
-
- free(mime->boundary);
free(mime);
}
}
@@ -1220,18 +1218,10 @@ curl_mime *curl_mime_init(struct Curl_easy *easy)
mime->firstpart = NULL;
mime->lastpart = NULL;
- /* Get a part boundary. */
- mime->boundary = malloc(24 + MIME_RAND_BOUNDARY_CHARS + 1);
- if(!mime->boundary) {
- free(mime);
- return NULL;
- }
-
memset(mime->boundary, '-', 24);
- if(Curl_rand_hex(easy, (unsigned char *) mime->boundary + 24,
+ if(Curl_rand_hex(easy, (unsigned char *) &mime->boundary[24],
MIME_RAND_BOUNDARY_CHARS + 1)) {
/* failed to get random separator, bail out */
- free(mime->boundary);
free(mime);
return NULL;
}
diff --git a/lib/mime.h b/lib/mime.h
index 4d5c7040..0721c8ca 100644
--- a/lib/mime.h
+++ b/lib/mime.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -88,13 +88,16 @@ typedef struct {
size_t offset; /* State-dependent offset. */
} mime_state;
+/* minimum buffer size for the boundary string */
+#define MIME_BOUNDARY_LEN (24 + MIME_RAND_BOUNDARY_CHARS + 1)
+
/* A mime multipart. */
struct curl_mime_s {
struct Curl_easy *easy; /* The associated easy handle. */
curl_mimepart *parent; /* Parent part. */
curl_mimepart *firstpart; /* First part. */
curl_mimepart *lastpart; /* Last part. */
- char *boundary; /* The part boundary. */
+ char boundary[MIME_BOUNDARY_LEN]; /* The part boundary. */
mime_state state; /* Current readback state. */
};
diff --git a/lib/multi.c b/lib/multi.c
index 130226f5..cc16924a 100644
--- a/lib/multi.c
+++ b/lib/multi.c
@@ -80,6 +80,7 @@ static CURLMcode add_next_timeout(struct curltime now,
static CURLMcode multi_timeout(struct Curl_multi *multi,
long *timeout_ms);
static void process_pending_handles(struct Curl_multi *multi);
+static void detach_connnection(struct Curl_easy *data);
#ifdef DEBUGBUILD
static const char * const statename[]={
@@ -114,7 +115,7 @@ static void Curl_init_completed(struct Curl_easy *data)
/* Important: reset the conn pointer so that we don't point to memory
that could be freed anytime */
- Curl_detach_connnection(data);
+ detach_connnection(data);
Curl_expire_clear(data); /* stop all timers */
}
@@ -496,6 +497,8 @@ CURLMcode curl_multi_add_handle(struct Curl_multi *multi,
data->set.server_response_timeout;
data->state.conn_cache->closure_handle->set.no_signal =
data->set.no_signal;
+ data->state.conn_cache->closure_handle->set.verbose =
+ data->set.verbose;
update_timer(multi);
return CURLM_OK;
@@ -572,7 +575,7 @@ static CURLcode multi_done(struct Curl_easy *data,
if(conn->send_pipe.size || conn->recv_pipe.size) {
/* Stop if pipeline is not empty . */
- Curl_detach_connnection(data);
+ detach_connnection(data);
DEBUGF(infof(data, "Connection still in use %zu/%zu, "
"no more multi_done now!\n",
conn->send_pipe.size, conn->recv_pipe.size));
@@ -597,7 +600,7 @@ static CURLcode multi_done(struct Curl_easy *data,
/* if data->set.reuse_forbid is TRUE, it means the libcurl client has
forced us to close this connection. This is ignored for requests taking
- place in a NTLM authentication handshake
+ place in a NTLM/NEGOTIATE authentication handshake
if conn->bits.close is TRUE, it means that the connection should be
closed in spite of all our efforts to be nice, due to protocol
@@ -615,6 +618,10 @@ static CURLcode multi_done(struct Curl_easy *data,
&& !(conn->ntlm.state == NTLMSTATE_TYPE2 ||
conn->proxyntlm.state == NTLMSTATE_TYPE2)
#endif
+#if defined(USE_SPNEGO)
+ && !(conn->negotiate.state == GSS_AUTHRECV ||
+ conn->proxyneg.state == GSS_AUTHRECV)
+#endif
) || conn->bits.close
|| (premature && !(conn->handler->flags & PROTOPT_STREAM))) {
CURLcode res2 = Curl_disconnect(data, conn, premature);
@@ -645,7 +652,7 @@ static CURLcode multi_done(struct Curl_easy *data,
data->state.lastconnect = NULL;
}
- Curl_detach_connnection(data);
+ detach_connnection(data);
Curl_free_request_state(data);
return result;
}
@@ -752,7 +759,7 @@ CURLMcode curl_multi_remove_handle(struct Curl_multi *multi,
/* Remove the association between the connection and the handle */
if(data->conn) {
data->conn->data = NULL;
- Curl_detach_connnection(data);
+ detach_connnection(data);
}
#ifdef USE_LIBPSL
@@ -804,7 +811,7 @@ bool Curl_pipeline_wanted(const struct Curl_multi *multi, int bits)
/* This is the only function that should clear data->conn. This will
occasionally be called with the pointer already cleared. */
-void Curl_detach_connnection(struct Curl_easy *data)
+static void detach_connnection(struct Curl_easy *data)
{
data->conn = NULL;
}
@@ -998,11 +1005,11 @@ CURLMcode Curl_multi_wait(struct Curl_multi *multi,
unsigned int i;
unsigned int nfds = 0;
unsigned int curlfds;
- struct pollfd *ufds = NULL;
bool ufds_malloc = FALSE;
long timeout_internal;
int retcode = 0;
struct pollfd a_few_on_stack[NUM_POLLS_ON_STACK];
+ struct pollfd *ufds = &a_few_on_stack[0];
if(gotsocket)
*gotsocket = FALSE;
@@ -1047,19 +1054,15 @@ CURLMcode Curl_multi_wait(struct Curl_multi *multi,
curlfds = nfds; /* number of internal file descriptors */
nfds += extra_nfds; /* add the externally provided ones */
- if(nfds) {
- if(nfds > NUM_POLLS_ON_STACK) {
- /* 'nfds' is a 32 bit value and 'struct pollfd' is typically 8 bytes
- big, so at 2^29 sockets this value might wrap. When a process gets
- the capability to actually handle over 500 million sockets this
- calculation needs a integer overflow check. */
- ufds = malloc(nfds * sizeof(struct pollfd));
- if(!ufds)
- return CURLM_OUT_OF_MEMORY;
- ufds_malloc = TRUE;
- }
- else
- ufds = &a_few_on_stack[0];
+ if(nfds > NUM_POLLS_ON_STACK) {
+ /* 'nfds' is a 32 bit value and 'struct pollfd' is typically 8 bytes
+ big, so at 2^29 sockets this value might wrap. When a process gets
+ the capability to actually handle over 500 million sockets this
+ calculation needs a integer overflow check. */
+ ufds = malloc(nfds * sizeof(struct pollfd));
+ if(!ufds)
+ return CURLM_OUT_OF_MEMORY;
+ ufds_malloc = TRUE;
}
nfds = 0;
@@ -1154,17 +1157,6 @@ CURLMcode curl_multi_wait(struct Curl_multi *multi,
{
return Curl_multi_wait(multi, extra_fds, extra_nfds, timeout_ms, ret, NULL);
}
-/*
- * Curl_multi_connchanged() is called to tell that there is a connection in
- * this multi handle that has changed state (pipelining become possible, the
- * number of allowed streams changed or similar), and a subsequent use of this
- * multi handle should move CONNECT_PEND handles back to CONNECT to have them
- * retry.
- */
-void Curl_multi_connchanged(struct Curl_multi *multi)
-{
- multi->recheckstate = TRUE;
-}
/*
* multi_ischanged() is called
@@ -1207,57 +1199,6 @@ CURLMcode Curl_multi_add_perform(struct Curl_multi *multi,
return rc;
}
-static CURLcode multi_reconnect_request(struct Curl_easy *data)
-{
- CURLcode result = CURLE_OK;
- struct connectdata *conn = data->conn;
-
- /* This was a re-use of a connection and we got a write error in the
- * DO-phase. Then we DISCONNECT this connection and have another attempt to
- * CONNECT and then DO again! The retry cannot possibly find another
- * connection to re-use, since we only keep one possible connection for
- * each. */
-
- infof(data, "Re-used connection seems dead, get a new one\n");
-
- connclose(conn, "Reconnect dead connection"); /* enforce close */
- result = multi_done(data, result, FALSE); /* we are so done with this */
-
- /* data->conn was detached in multi_done() */
-
- /*
- * We need to check for CURLE_SEND_ERROR here as well. This could happen
- * when the request failed on a FTP connection and thus multi_done() itself
- * tried to use the connection (again).
- */
- if(!result || (CURLE_SEND_ERROR == result)) {
- bool async;
- bool protocol_done = TRUE;
-
- /* Now, redo the connect and get a new connection */
- result = Curl_connect(data, &async, &protocol_done);
- if(!result) {
- /* We have connected or sent away a name resolve query fine */
-
- conn = data->conn; /* in case it was updated */
- if(async) {
- /* Now, if async is TRUE here, we need to wait for the name
- to resolve */
- result = Curl_resolver_wait_resolv(conn, NULL);
- if(result)
- return result;
-
- /* Resolved, continue with the connection */
- result = Curl_once_resolved(conn, &protocol_done);
- if(result)
- return result;
- }
- }
- }
-
- return result;
-}
-
/*
* do_complete is called when the DO actions are complete.
*
@@ -1267,8 +1208,6 @@ static CURLcode multi_reconnect_request(struct Curl_easy *data)
static void do_complete(struct connectdata *conn)
{
conn->data->req.chunk = FALSE;
- conn->data->req.maxfd = (conn->sockfd>conn->writesockfd?
- conn->sockfd:conn->writesockfd) + 1;
Curl_pgrsTime(conn->data, TIMER_PRETRANSFER);
}
@@ -1281,27 +1220,6 @@ static CURLcode multi_do(struct Curl_easy *data, bool *done)
/* generic protocol-specific function pointer set in curl_connect() */
result = conn->handler->do_it(conn, done);
- /* This was formerly done in transfer.c, but we better do it here */
- if((CURLE_SEND_ERROR == result) && conn->bits.reuse) {
- /*
- * If the connection is using an easy handle, call reconnect
- * to re-establish the connection. Otherwise, let the multi logic
- * figure out how to re-establish the connection.
- */
- if(!data->multi) {
- result = multi_reconnect_request(data);
-
- if(!result) {
- /* ... finally back to actually retry the DO phase */
- conn = data->conn; /* re-assign conn since multi_reconnect_request
- creates a new connection */
- result = conn->handler->do_it(conn, done);
- }
- }
- else
- return result;
- }
-
if(!result && *done)
/* do_complete must be called after the protocol-specific DO function */
do_complete(conn);
@@ -1549,7 +1467,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
if(result)
/* if Curl_once_resolved() returns failure, the connection struct
is already freed and gone */
- Curl_detach_connnection(data); /* no more connection */
+ detach_connnection(data); /* no more connection */
else {
/* call again please so that we get the next socket setup */
rc = CURLM_CALL_MULTI_PERFORM;
@@ -1620,7 +1538,8 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
}
else if(result) {
/* failure detected */
- /* Just break, the cleaning up is handled all in one place */
+ Curl_posttransfer(data);
+ multi_done(data, result, TRUE);
stream_error = TRUE;
break;
}
@@ -1933,13 +1852,15 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
k = &data->req;
- if(!(k->keepon & KEEP_RECV))
+ if(!(k->keepon & KEEP_RECV)) {
/* We're done receiving */
Curl_pipeline_leave_read(data->conn);
+ }
- if(!(k->keepon & KEEP_SEND))
+ if(!(k->keepon & KEEP_SEND)) {
/* We're done sending */
Curl_pipeline_leave_write(data->conn);
+ }
if(done || (result == CURLE_RECV_ERROR)) {
/* If CURLE_RECV_ERROR happens early enough, we assume it was a race
@@ -2087,7 +2008,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
* removed before we perform the processing in CURLM_STATE_COMPLETED
*/
if(data->conn)
- Curl_detach_connnection(data);
+ detach_connnection(data);
}
if(data->state.wildcardmatch) {
@@ -2145,7 +2066,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
/* This is where we make sure that the conn pointer is reset.
We don't have to do this in every case block above where a
failure is detected */
- Curl_detach_connnection(data);
+ detach_connnection(data);
}
}
else if(data->mstate == CURLM_STATE_CONNECT) {
@@ -2298,8 +2219,9 @@ CURLMcode curl_multi_cleanup(struct Curl_multi *multi)
Curl_psl_destroy(&multi->psl);
/* Free the blacklists by setting them to NULL */
- Curl_pipeline_set_site_blacklist(NULL, &multi->pipelining_site_bl);
- Curl_pipeline_set_server_blacklist(NULL, &multi->pipelining_server_bl);
+ (void)Curl_pipeline_set_site_blacklist(NULL, &multi->pipelining_site_bl);
+ (void)Curl_pipeline_set_server_blacklist(NULL,
+ &multi->pipelining_server_bl);
free(multi);
@@ -2360,8 +2282,6 @@ static CURLMcode singlesocket(struct Curl_multi *multi,
int num;
unsigned int curraction;
int actions[MAX_SOCKSPEREASYHANDLE];
- unsigned int comboaction;
- bool sincebefore = FALSE;
for(i = 0; i< MAX_SOCKSPEREASYHANDLE; i++)
socks[i] = CURL_SOCKET_BAD;
@@ -2380,6 +2300,8 @@ static CURLMcode singlesocket(struct Curl_multi *multi,
i++) {
unsigned int action = CURL_POLL_NONE;
unsigned int prevaction = 0;
+ unsigned int comboaction;
+ bool sincebefore = FALSE;
s = socks[i];
@@ -3028,9 +2950,6 @@ void Curl_expire(struct Curl_easy *data, time_t milli, expire_id id)
DEBUGASSERT(id < EXPIRE_LAST);
- infof(data, "Expire in %ld ms for %x (transfer %p)\n",
- (long)milli, id, data);
-
set = Curl_now();
set.tv_sec += milli/1000;
set.tv_usec += (unsigned int)(milli%1000)*1000;
diff --git a/lib/non-ascii.c b/lib/non-ascii.c
index 14143248..42beaec4 100644
--- a/lib/non-ascii.c
+++ b/lib/non-ascii.c
@@ -78,7 +78,7 @@ CURLcode Curl_convert_clone(struct Curl_easy *data,
/*
* Curl_convert_to_network() is an internal function for performing ASCII
- * conversions on non-ASCII platforms. It convers the buffer _in place_.
+ * conversions on non-ASCII platforms. It converts the buffer _in place_.
*/
CURLcode Curl_convert_to_network(struct Curl_easy *data,
char *buffer, size_t length)
@@ -144,7 +144,7 @@ CURLcode Curl_convert_to_network(struct Curl_easy *data,
/*
* Curl_convert_from_network() is an internal function for performing ASCII
- * conversions on non-ASCII platforms. It convers the buffer _in place_.
+ * conversions on non-ASCII platforms. It converts the buffer _in place_.
*/
CURLcode Curl_convert_from_network(struct Curl_easy *data,
char *buffer, size_t length)
diff --git a/lib/openldap.c b/lib/openldap.c
index bc007883..a98c50b4 100644
--- a/lib/openldap.c
+++ b/lib/openldap.c
@@ -6,7 +6,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2010, Howard Chu, <hyc@openldap.org>
- * Copyright (C) 2011 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2011 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -414,7 +414,7 @@ static CURLcode ldap_do(struct connectdata *conn, bool *done)
return CURLE_OUT_OF_MEMORY;
lr->msgid = msgid;
data->req.protop = lr;
- Curl_setup_transfer(conn, FIRSTSOCKET, -1, FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(data, FIRSTSOCKET, -1, FALSE, -1);
*done = TRUE;
return CURLE_OK;
}
diff --git a/lib/pop3.c b/lib/pop3.c
index 4f65f289..8dbd448b 100644
--- a/lib/pop3.c
+++ b/lib/pop3.c
@@ -912,7 +912,7 @@ static CURLcode pop3_state_command_resp(struct connectdata *conn,
if(pop3->transfer == FTPTRANSFER_BODY) {
/* POP3 download */
- Curl_setup_transfer(conn, FIRSTSOCKET, -1, FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(data, FIRSTSOCKET, -1, FALSE, -1);
if(pp->cache) {
/* The header "cache" contains a bunch of data that is actually body
diff --git a/lib/rand.h b/lib/rand.h
index c6fae355..5deb0416 100644
--- a/lib/rand.h
+++ b/lib/rand.h
@@ -39,8 +39,11 @@
*/
CURLcode Curl_rand(struct Curl_easy *data, unsigned char *rnd, size_t num);
-/* Same as above but outputs only random lowercase hex characters.
- Does NOT terminate.*/
+/*
+ * Curl_rand_hex() fills the 'rnd' buffer with a given 'num' size with random
+ * hexadecimal digits PLUS a zero terminating byte. It must be an odd number
+ * size.
+ */
CURLcode Curl_rand_hex(struct Curl_easy *data, unsigned char *rnd,
size_t num);
diff --git a/lib/rtsp.c b/lib/rtsp.c
index 01dfce64..b9a8ef5e 100644
--- a/lib/rtsp.c
+++ b/lib/rtsp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -80,8 +80,6 @@ static CURLcode rtsp_rtp_readwrite(struct Curl_easy *data,
bool *readmore);
static CURLcode rtsp_setup_connection(struct connectdata *conn);
-
-bool rtsp_connisdead(struct connectdata *check);
static unsigned int rtsp_conncheck(struct connectdata *check,
unsigned int checks_to_perform);
@@ -147,7 +145,7 @@ static CURLcode rtsp_setup_connection(struct connectdata *conn)
* Instead, if it is readable, run Curl_connalive() to peek at the socket
* and distinguish between closed and data.
*/
-bool rtsp_connisdead(struct connectdata *check)
+static bool rtsp_connisdead(struct connectdata *check)
{
int sval;
bool ret_val = TRUE;
@@ -251,7 +249,6 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
CURLcode result = CURLE_OK;
Curl_RtspReq rtspreq = data->set.rtspreq;
struct RTSP *rtsp = data->req.protop;
- struct HTTP *http;
Curl_send_buffer *req_buffer;
curl_off_t postsize = 0; /* for ANNOUNCE and SET_PARAMETER */
curl_off_t putsize = 0; /* for ANNOUNCE and SET_PARAMETER */
@@ -270,10 +267,6 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
*done = TRUE;
- http = &(rtsp->http_wrapper);
- /* Assert that no one has changed the RTSP struct in an evil way */
- DEBUGASSERT((void *)http == (void *)rtsp);
-
rtsp->CSeq_sent = data->state.rtsp_next_client_CSeq;
rtsp->CSeq_recv = 0;
@@ -330,8 +323,7 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
}
if(rtspreq == RTSPREQ_RECEIVE) {
- Curl_setup_transfer(conn, FIRSTSOCKET, -1, TRUE,
- &http->readbytecount, -1, NULL);
+ Curl_setup_transfer(data, FIRSTSOCKET, -1, TRUE, -1);
return result;
}
@@ -599,17 +591,15 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
return result;
}
- Curl_setup_transfer(conn, FIRSTSOCKET, -1, TRUE, &http->readbytecount,
- putsize?FIRSTSOCKET:-1,
- putsize?&http->writebytecount:NULL);
+ Curl_setup_transfer(data, FIRSTSOCKET, -1, TRUE, putsize?FIRSTSOCKET:-1);
/* Increment the CSeq on success */
data->state.rtsp_next_client_CSeq++;
- if(http->writebytecount) {
+ if(data->req.writebytecount) {
/* if a request-body has been sent off, we make sure this progress is
noted properly */
- Curl_pgrsSetUploadCounter(data, http->writebytecount);
+ Curl_pgrsSetUploadCounter(data, data->req.writebytecount);
if(Curl_pgrsUpdate(conn))
result = CURLE_ABORTED_BY_CALLBACK;
}
diff --git a/lib/security.c b/lib/security.c
index 7f13071f..eec6e6f4 100644
--- a/lib/security.c
+++ b/lib/security.c
@@ -10,7 +10,7 @@
* Copyright (c) 1998, 1999, 2017 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
*
- * Copyright (C) 2001 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2001 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* All rights reserved.
*
@@ -142,7 +142,7 @@ socket_read(curl_socket_t fd, void *to, size_t len)
{
char *to_p = to;
CURLcode result;
- ssize_t nread;
+ ssize_t nread = 0;
while(len > 0) {
result = Curl_read_plain(fd, to_p, len, &nread);
diff --git a/lib/sendf.c b/lib/sendf.c
index e8598e61..5008d933 100644
--- a/lib/sendf.c
+++ b/lib/sendf.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -411,8 +411,9 @@ ssize_t Curl_send_plain(struct connectdata *conn, int num,
*code = CURLE_AGAIN;
}
else {
+ char buffer[STRERROR_LEN];
failf(conn->data, "Send failure: %s",
- Curl_strerror(conn, err));
+ Curl_strerror(err, buffer, sizeof(buffer)));
conn->data->state.os_errno = err;
*code = CURLE_SEND_ERROR;
}
@@ -476,8 +477,9 @@ ssize_t Curl_recv_plain(struct connectdata *conn, int num, char *buf,
*code = CURLE_AGAIN;
}
else {
+ char buffer[STRERROR_LEN];
failf(conn->data, "Recv failure: %s",
- Curl_strerror(conn, err));
+ Curl_strerror(err, buffer, sizeof(buffer)));
conn->data->state.os_errno = err;
*code = CURLE_RECV_ERROR;
}
diff --git a/lib/setopt.c b/lib/setopt.c
index d98ca66c..b5f74a93 100644
--- a/lib/setopt.c
+++ b/lib/setopt.c
@@ -44,6 +44,7 @@
#include "http2.h"
#include "setopt.h"
#include "multiif.h"
+#include "altsvc.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
@@ -111,8 +112,8 @@ static CURLcode setstropt_userpwd(char *option, char **userp, char **passwdp)
#define C_SSLVERSION_VALUE(x) (x & 0xffff)
#define C_SSLVERSION_MAX_VALUE(x) (x & 0xffff0000)
-CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option,
- va_list param)
+static CURLcode vsetopt(struct Curl_easy *data, CURLoption option,
+ va_list param)
{
char *argptr;
CURLcode result = CURLE_OK;
@@ -682,7 +683,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option,
* Set header option.
*/
arg = va_arg(param, long);
- data->set.sep_headers = (arg & CURLHEADER_SEPARATE)? TRUE: FALSE;
+ data->set.sep_headers = (bool)((arg & CURLHEADER_SEPARATE)? TRUE: FALSE);
break;
case CURLOPT_HTTP200ALIASES:
@@ -884,7 +885,8 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option,
/* 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 = (auth & CURLAUTH_DIGEST_IE) ? TRUE : FALSE;
+ data->state.authhost.iestyle =
+ (bool)((auth & CURLAUTH_DIGEST_IE) ? TRUE : FALSE);
if(auth & CURLAUTH_DIGEST_IE) {
auth |= CURLAUTH_DIGEST; /* set standard digest bit */
@@ -967,7 +969,8 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option,
/* 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 = (auth & CURLAUTH_DIGEST_IE) ? TRUE : FALSE;
+ data->state.authproxy.iestyle =
+ (bool)((auth & CURLAUTH_DIGEST_IE) ? TRUE : FALSE);
if(auth & CURLAUTH_DIGEST_IE) {
auth |= CURLAUTH_DIGEST; /* set standard digest bit */
@@ -2076,13 +2079,15 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option,
case CURLOPT_SSL_OPTIONS:
arg = va_arg(param, long);
- data->set.ssl.enable_beast = arg&CURLSSLOPT_ALLOW_BEAST?TRUE:FALSE;
+ data->set.ssl.enable_beast =
+ (bool)((arg&CURLSSLOPT_ALLOW_BEAST) ? TRUE : FALSE);
data->set.ssl.no_revoke = !!(arg & CURLSSLOPT_NO_REVOKE);
break;
case CURLOPT_PROXY_SSL_OPTIONS:
arg = va_arg(param, long);
- data->set.proxy_ssl.enable_beast = arg&CURLSSLOPT_ALLOW_BEAST?TRUE:FALSE;
+ data->set.proxy_ssl.enable_beast =
+ (bool)((arg&CURLSSLOPT_ALLOW_BEAST) ? TRUE : FALSE);
data->set.proxy_ssl.no_revoke = !!(arg & CURLSSLOPT_NO_REVOKE);
break;
@@ -2651,6 +2656,31 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option,
data->set.trailer_data = va_arg(param, void *);
#endif
break;
+#ifdef USE_ALTSVC
+ case CURLOPT_ALTSVC:
+ if(!data->asi) {
+ data->asi = Curl_altsvc_init();
+ if(!data->asi)
+ return CURLE_OUT_OF_MEMORY;
+ }
+ argptr = va_arg(param, char *);
+ result = Curl_setstropt(&data->set.str[STRING_ALTSVC], argptr);
+ if(result)
+ return result;
+ (void)Curl_altsvc_load(data->asi, argptr);
+ break;
+ case CURLOPT_ALTSVC_CTRL:
+ if(!data->asi) {
+ data->asi = Curl_altsvc_init();
+ if(!data->asi)
+ return CURLE_OUT_OF_MEMORY;
+ }
+ arg = va_arg(param, long);
+ result = Curl_altsvc_ctrl(data->asi, arg);
+ if(result)
+ return result;
+ break;
+#endif
default:
/* unknown tag and its companion, just ignore: */
result = CURLE_UNKNOWN_OPTION;
@@ -2679,7 +2709,7 @@ CURLcode curl_easy_setopt(struct Curl_easy *data, CURLoption tag, ...)
va_start(arg, tag);
- result = Curl_vsetopt(data, tag, arg);
+ result = vsetopt(data, tag, arg);
va_end(arg);
return result;
diff --git a/lib/smtp.c b/lib/smtp.c
index d55647b1..f3db714b 100644
--- a/lib/smtp.c
+++ b/lib/smtp.c
@@ -959,7 +959,7 @@ static CURLcode smtp_state_data_resp(struct connectdata *conn, int smtpcode,
Curl_pgrsSetUploadSize(data, data->state.infilesize);
/* SMTP upload */
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, FIRSTSOCKET, NULL);
+ Curl_setup_transfer(data, -1, -1, FALSE, FIRSTSOCKET);
/* End of DO phase */
state(conn, SMTP_STOP);
@@ -1388,7 +1388,7 @@ static CURLcode smtp_dophase_done(struct connectdata *conn, bool connected)
if(smtp->transfer != FTPTRANSFER_BODY)
/* no data to transfer */
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(conn->data, -1, -1, FALSE, -1);
return CURLE_OK;
}
diff --git a/lib/socks.c b/lib/socks.c
index d2209ad8..d0aba060 100644
--- a/lib/socks.c
+++ b/lib/socks.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -54,7 +54,7 @@ int Curl_blockread_all(struct connectdata *conn, /* connection data */
ssize_t buffersize, /* max amount to read */
ssize_t *n) /* amount bytes read */
{
- ssize_t nread;
+ ssize_t nread = 0;
ssize_t allread = 0;
int result;
*n = 0;
diff --git a/lib/socks_sspi.c b/lib/socks_sspi.c
index bedb01eb..57027ef6 100644
--- a/lib/socks_sspi.c
+++ b/lib/socks_sspi.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 2009, 2011, Markus Moeller, <markus_moeller@compuserve.com>
*
* This software is licensed as described in the file COPYING, which
@@ -51,8 +51,9 @@ static int check_sspi_err(struct connectdata *conn,
status != SEC_I_COMPLETE_AND_CONTINUE &&
status != SEC_I_COMPLETE_NEEDED &&
status != SEC_I_CONTINUE_NEEDED) {
+ char buffer[STRERROR_LEN];
failf(conn->data, "SSPI error: %s failed: %s", function,
- Curl_sspi_strerror(conn, status));
+ Curl_sspi_strerror(status, buffer, sizeof(buffer)));
return 1;
}
return 0;
diff --git a/lib/ssh-libssh.c b/lib/ssh-libssh.c
index 333df03e..609da1e0 100644
--- a/lib/ssh-libssh.c
+++ b/lib/ssh-libssh.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2017 - 2018 Red Hat, Inc.
+ * Copyright (C) 2017 - 2019 Red Hat, Inc.
*
* Authors: Nikos Mavrogiannopoulos, Tomas Mraz, Stanislav Zidek,
* Robert Kolcun, Andreas Schneider
@@ -1200,7 +1200,7 @@ static CURLcode myssh_statemach_act(struct connectdata *conn, bool *block)
Curl_pgrsSetUploadSize(data, data->state.infilesize);
}
/* upload data */
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, FIRSTSOCKET, NULL);
+ Curl_setup_transfer(data, -1, -1, FALSE, FIRSTSOCKET);
/* not set by Curl_setup_transfer to preserve keepon bits */
conn->sockfd = conn->writesockfd;
@@ -1462,7 +1462,7 @@ static CURLcode myssh_statemach_act(struct connectdata *conn, bool *block)
sshc->sftp_dir = NULL;
/* no data to transfer */
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(data, -1, -1, FALSE, -1);
state(conn, SSH_STOP);
break;
@@ -1603,13 +1603,12 @@ static CURLcode myssh_statemach_act(struct connectdata *conn, bool *block)
/* Setup the actual download */
if(data->req.size == 0) {
/* no data to transfer */
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(data, -1, -1, FALSE, -1);
infof(data, "File already completely downloaded\n");
state(conn, SSH_STOP);
break;
}
- Curl_setup_transfer(conn, FIRSTSOCKET, data->req.size,
- FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(data, FIRSTSOCKET, data->req.size, FALSE, -1);
/* not set by Curl_setup_transfer to preserve keepon bits */
conn->writesockfd = conn->sockfd;
@@ -1731,8 +1730,7 @@ static CURLcode myssh_statemach_act(struct connectdata *conn, bool *block)
}
/* upload data */
- Curl_setup_transfer(conn, -1, data->req.size, FALSE, NULL,
- FIRSTSOCKET, NULL);
+ Curl_setup_transfer(data, -1, data->req.size, FALSE, FIRSTSOCKET);
/* not set by Curl_setup_transfer to preserve keepon bits */
conn->sockfd = conn->writesockfd;
@@ -1775,8 +1773,7 @@ static CURLcode myssh_statemach_act(struct connectdata *conn, bool *block)
/* download data */
bytecount = ssh_scp_request_get_size(sshc->scp_session);
data->req.maxdownload = (curl_off_t) bytecount;
- Curl_setup_transfer(conn, FIRSTSOCKET, bytecount, FALSE, NULL, -1,
- NULL);
+ Curl_setup_transfer(data, FIRSTSOCKET, bytecount, FALSE, -1);
/* not set by Curl_setup_transfer to preserve keepon bits */
conn->writesockfd = conn->sockfd;
@@ -2398,13 +2395,9 @@ static CURLcode sftp_done(struct connectdata *conn, CURLcode status,
/* Post quote commands are executed after the SFTP_CLOSE state to avoid
errors that could happen due to open file handles during POSTQUOTE
operation */
- if(!status && !premature && conn->data->set.postquote &&
- !conn->bits.retry) {
+ if(!premature && conn->data->set.postquote && !conn->bits.retry)
sshc->nextstate = SSH_SFTP_POSTQUOTE_INIT;
- state(conn, SSH_SFTP_CLOSE);
- }
- else
- state(conn, SSH_SFTP_CLOSE);
+ state(conn, SSH_SFTP_CLOSE);
}
return myssh_done(conn, status);
}
diff --git a/lib/ssh.c b/lib/ssh.c
index 8c68adcc..46f52ece 100644
--- a/lib/ssh.c
+++ b/lib/ssh.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -81,11 +81,11 @@
#include "multiif.h"
#include "select.h"
#include "warnless.h"
+#include "curl_path.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
-#include "curl_path.h"
#include "memdebug.h"
#if LIBSSH2_VERSION_NUM >= 0x010206
@@ -1808,7 +1808,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
Curl_pgrsSetUploadSize(data, data->state.infilesize);
}
/* upload data */
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, FIRSTSOCKET, NULL);
+ Curl_setup_transfer(data, -1, -1, FALSE, FIRSTSOCKET);
/* not set by Curl_setup_transfer to preserve keepon bits */
conn->sockfd = conn->writesockfd;
@@ -2105,7 +2105,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
Curl_safefree(sshc->readdir_longentry);
/* no data to transfer */
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(data, -1, -1, FALSE, -1);
state(conn, SSH_STOP);
break;
@@ -2245,13 +2245,12 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
/* Setup the actual download */
if(data->req.size == 0) {
/* no data to transfer */
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(data, -1, -1, FALSE, -1);
infof(data, "File already completely downloaded\n");
state(conn, SSH_STOP);
break;
}
- Curl_setup_transfer(conn, FIRSTSOCKET, data->req.size,
- FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(data, FIRSTSOCKET, data->req.size, FALSE, -1);
/* not set by Curl_setup_transfer to preserve keepon bits */
conn->writesockfd = conn->sockfd;
@@ -2395,8 +2394,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
}
/* upload data */
- Curl_setup_transfer(conn, -1, data->req.size, FALSE, NULL,
- FIRSTSOCKET, NULL);
+ Curl_setup_transfer(data, -1, data->req.size, FALSE, FIRSTSOCKET);
/* not set by Curl_setup_transfer to preserve keepon bits */
conn->sockfd = conn->writesockfd;
@@ -2467,7 +2465,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
/* download data */
bytecount = (curl_off_t)sb.st_size;
data->req.maxdownload = (curl_off_t)sb.st_size;
- Curl_setup_transfer(conn, FIRSTSOCKET, bytecount, FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(data, FIRSTSOCKET, bytecount, FALSE, -1);
/* not set by Curl_setup_transfer to preserve keepon bits */
conn->writesockfd = conn->sockfd;
@@ -2791,9 +2789,12 @@ static CURLcode ssh_multi_statemach(struct connectdata *conn, bool *done)
CURLcode result = CURLE_OK;
bool block; /* we store the status and use that to provide a ssh_getsock()
implementation */
-
- result = ssh_statemach_act(conn, &block);
- *done = (sshc->state == SSH_STOP) ? TRUE : FALSE;
+ do {
+ result = ssh_statemach_act(conn, &block);
+ *done = (sshc->state == SSH_STOP) ? TRUE : FALSE;
+ /* if there's no error, it isn't done and it didn't EWOULDBLOCK, then
+ try again */
+ } while(!result && !*done && !block);
ssh_block2waitfor(conn, block);
return result;
@@ -3222,13 +3223,9 @@ static CURLcode sftp_done(struct connectdata *conn, CURLcode status,
/* Post quote commands are executed after the SFTP_CLOSE state to avoid
errors that could happen due to open file handles during POSTQUOTE
operation */
- if(!status && !premature && conn->data->set.postquote &&
- !conn->bits.retry) {
+ if(!premature && conn->data->set.postquote && !conn->bits.retry)
sshc->nextstate = SSH_SFTP_POSTQUOTE_INIT;
- state(conn, SSH_SFTP_CLOSE);
- }
- else
- state(conn, SSH_SFTP_CLOSE);
+ state(conn, SSH_SFTP_CLOSE);
}
return ssh_done(conn, status);
}
diff --git a/lib/strerror.c b/lib/strerror.c
index bf30c890..e273f376 100644
--- a/lib/strerror.c
+++ b/lib/strerror.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2004 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2004 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -646,20 +646,18 @@ get_winsock_error (int err, char *buf, size_t len)
* We don't do range checking (on systems other than Windows) since there is
* no good reliable and portable way to do it.
*/
-const char *Curl_strerror(struct connectdata *conn, int err)
+const char *Curl_strerror(int err, char *buf, size_t buflen)
{
#ifdef PRESERVE_WINDOWS_ERROR_CODE
DWORD old_win_err = GetLastError();
#endif
int old_errno = errno;
- char *buf, *p;
+ char *p;
size_t max;
- DEBUGASSERT(conn);
DEBUGASSERT(err >= 0);
- buf = conn->syserr_buf;
- max = sizeof(conn->syserr_buf)-1;
+ max = buflen - 1;
*buf = '\0';
#ifdef USE_WINSOCK
@@ -757,7 +755,7 @@ const char *Curl_strerror(struct connectdata *conn, int err)
}
#ifdef USE_WINDOWS_SSPI
-const char *Curl_sspi_strerror (struct connectdata *conn, int err)
+const char *Curl_sspi_strerror(int err, char *buf, size_t buflen)
{
#ifdef PRESERVE_WINDOWS_ERROR_CODE
DWORD old_win_err = GetLastError();
@@ -768,15 +766,13 @@ const char *Curl_sspi_strerror (struct connectdata *conn, int err)
size_t outmax;
#ifndef CURL_DISABLE_VERBOSE_STRINGS
char txtbuf[80];
- char msgbuf[sizeof(conn->syserr_buf)];
+ char msgbuf[256];
char *p, *str, *msg = NULL;
bool msg_formatted = FALSE;
#endif
- DEBUGASSERT(conn);
-
- outbuf = conn->syserr_buf;
- outmax = sizeof(conn->syserr_buf)-1;
+ outbuf = buf;
+ outmax = buflen - 1;
*outbuf = '\0';
#ifndef CURL_DISABLE_VERBOSE_STRINGS
diff --git a/lib/strerror.h b/lib/strerror.h
index 627273eb..683b5b4a 100644
--- a/lib/strerror.h
+++ b/lib/strerror.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -24,14 +24,11 @@
#include "urldata.h"
-const char *Curl_strerror (struct connectdata *conn, int err);
-
-#ifdef USE_LIBIDN2
-const char *Curl_idn_strerror (struct connectdata *conn, int err);
-#endif
+#define STRERROR_LEN 128 /* a suitable length */
+const char *Curl_strerror(int err, char *buf, size_t buflen);
#ifdef USE_WINDOWS_SSPI
-const char *Curl_sspi_strerror (struct connectdata *conn, int err);
+const char *Curl_sspi_strerror(int err, char *buf, size_t buflen);
#endif
#endif /* HEADER_CURL_STRERROR_H */
diff --git a/lib/system_win32.c b/lib/system_win32.c
index 6b8004e5..f7f817dd 100644
--- a/lib/system_win32.c
+++ b/lib/system_win32.c
@@ -26,12 +26,94 @@
#include <curl/curl.h>
#include "system_win32.h"
+#include "curl_sspi.h"
#include "warnless.h"
/* The last #include files should be: */
#include "curl_memory.h"
#include "memdebug.h"
+LARGE_INTEGER Curl_freq;
+bool Curl_isVistaOrGreater;
+
+/* Curl_win32_init() performs win32 global initialization */
+CURLcode Curl_win32_init(long flags)
+{
+ /* CURL_GLOBAL_WIN32 controls the *optional* part of the initialization which
+ is just for Winsock at the moment. Any required win32 initialization
+ should take place after this block. */
+ if(flags & CURL_GLOBAL_WIN32) {
+#ifdef USE_WINSOCK
+ WORD wVersionRequested;
+ WSADATA wsaData;
+ int res;
+
+#if defined(ENABLE_IPV6) && (USE_WINSOCK < 2)
+#error IPV6_requires_winsock2
+#endif
+
+ wVersionRequested = MAKEWORD(USE_WINSOCK, USE_WINSOCK);
+
+ res = WSAStartup(wVersionRequested, &wsaData);
+
+ if(res != 0)
+ /* Tell the user that we couldn't find a usable */
+ /* winsock.dll. */
+ return CURLE_FAILED_INIT;
+
+ /* Confirm that the Windows Sockets DLL supports what we need.*/
+ /* Note that if the DLL supports versions greater */
+ /* than wVersionRequested, it will still return */
+ /* wVersionRequested in wVersion. wHighVersion contains the */
+ /* highest supported version. */
+
+ if(LOBYTE(wsaData.wVersion) != LOBYTE(wVersionRequested) ||
+ HIBYTE(wsaData.wVersion) != HIBYTE(wVersionRequested) ) {
+ /* Tell the user that we couldn't find a usable */
+
+ /* winsock.dll. */
+ WSACleanup();
+ return CURLE_FAILED_INIT;
+ }
+ /* The Windows Sockets DLL is acceptable. Proceed. */
+ #elif defined(USE_LWIPSOCK)
+ lwip_init();
+ #endif
+ } /* CURL_GLOBAL_WIN32 */
+
+#ifdef USE_WINDOWS_SSPI
+ {
+ CURLcode result = Curl_sspi_global_init();
+ if(result)
+ return result;
+ }
+#endif
+
+ if(Curl_verify_windows_version(6, 0, PLATFORM_WINNT,
+ VERSION_GREATER_THAN_EQUAL)) {
+ Curl_isVistaOrGreater = TRUE;
+ QueryPerformanceFrequency(&Curl_freq);
+ }
+ else
+ Curl_isVistaOrGreater = FALSE;
+
+ return CURLE_OK;
+}
+
+/* Curl_win32_cleanup() is the opposite of Curl_win32_init() */
+void Curl_win32_cleanup(long init_flags)
+{
+#ifdef USE_WINDOWS_SSPI
+ Curl_sspi_global_cleanup();
+#endif
+
+ if(init_flags & CURL_GLOBAL_WIN32) {
+#ifdef USE_WINSOCK
+ WSACleanup();
+#endif
+ }
+}
+
#if defined(USE_WINDOWS_SSPI) || (!defined(CURL_DISABLE_TELNET) && \
defined(USE_WINSOCK))
diff --git a/lib/system_win32.h b/lib/system_win32.h
index 1e772856..926328a9 100644
--- a/lib/system_win32.h
+++ b/lib/system_win32.h
@@ -26,6 +26,12 @@
#if defined(WIN32)
+extern LARGE_INTEGER Curl_freq;
+extern bool Curl_isVistaOrGreater;
+
+CURLcode Curl_win32_init(long flags);
+void Curl_win32_cleanup(long init_flags);
+
/* Version condition */
typedef enum {
VERSION_LESS_THAN,
diff --git a/lib/telnet.c b/lib/telnet.c
index e4c0bac3..955255c3 100644
--- a/lib/telnet.c
+++ b/lib/telnet.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -1692,7 +1692,7 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
}
#endif
/* mark this as "no further transfer wanted" */
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(data, -1, -1, FALSE, -1);
return result;
}
diff --git a/lib/tftp.c b/lib/tftp.c
index 269b3cde..8b92b7bd 100644
--- a/lib/tftp.c
+++ b/lib/tftp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -540,7 +540,8 @@ static CURLcode tftp_send_first(tftp_state_data_t *state, tftp_event_t event)
state->conn->ip_addr->ai_addr,
state->conn->ip_addr->ai_addrlen);
if(senddata != (ssize_t)sbytes) {
- failf(data, "%s", Curl_strerror(state->conn, SOCKERRNO));
+ char buffer[STRERROR_LEN];
+ failf(data, "%s", Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
}
free(filename);
break;
@@ -590,6 +591,7 @@ static CURLcode tftp_rx(tftp_state_data_t *state, tftp_event_t event)
ssize_t sbytes;
int rblock;
struct Curl_easy *data = state->conn->data;
+ char buffer[STRERROR_LEN];
switch(event) {
@@ -622,7 +624,7 @@ static CURLcode tftp_rx(tftp_state_data_t *state, tftp_event_t event)
(struct sockaddr *)&state->remote_addr,
state->remote_addrlen);
if(sbytes < 0) {
- failf(data, "%s", Curl_strerror(state->conn, SOCKERRNO));
+ failf(data, "%s", Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
return CURLE_SEND_ERROR;
}
@@ -647,7 +649,7 @@ static CURLcode tftp_rx(tftp_state_data_t *state, tftp_event_t event)
(struct sockaddr *)&state->remote_addr,
state->remote_addrlen);
if(sbytes < 0) {
- failf(data, "%s", Curl_strerror(state->conn, SOCKERRNO));
+ failf(data, "%s", Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
return CURLE_SEND_ERROR;
}
@@ -673,7 +675,7 @@ static CURLcode tftp_rx(tftp_state_data_t *state, tftp_event_t event)
(struct sockaddr *)&state->remote_addr,
state->remote_addrlen);
if(sbytes<0) {
- failf(data, "%s", Curl_strerror(state->conn, SOCKERRNO));
+ failf(data, "%s", Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
return CURLE_SEND_ERROR;
}
}
@@ -713,6 +715,7 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
CURLcode result = CURLE_OK;
struct SingleRequest *k = &data->req;
size_t cb; /* Bytes currently read */
+ char buffer[STRERROR_LEN];
switch(event) {
@@ -747,7 +750,8 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
state->remote_addrlen);
/* Check all sbytes were sent */
if(sbytes<0) {
- failf(data, "%s", Curl_strerror(state->conn, SOCKERRNO));
+ failf(data, "%s", Curl_strerror(SOCKERRNO,
+ buffer, sizeof(buffer)));
result = CURLE_SEND_ERROR;
}
}
@@ -791,7 +795,7 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
state->remote_addrlen);
/* Check all sbytes were sent */
if(sbytes<0) {
- failf(data, "%s", Curl_strerror(state->conn, SOCKERRNO));
+ failf(data, "%s", Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
return CURLE_SEND_ERROR;
}
/* Update the progress meter */
@@ -817,7 +821,7 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
state->remote_addrlen);
/* Check all sbytes were sent */
if(sbytes<0) {
- failf(data, "%s", Curl_strerror(state->conn, SOCKERRNO));
+ failf(data, "%s", Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
return CURLE_SEND_ERROR;
}
/* since this was a re-send, we remain at the still byte position */
@@ -1030,8 +1034,9 @@ static CURLcode tftp_connect(struct connectdata *conn, bool *done)
int rc = bind(state->sockfd, (struct sockaddr *)&state->local_addr,
conn->ip_addr->ai_addrlen);
if(rc) {
+ char buffer[STRERROR_LEN];
failf(conn->data, "bind() failed; %s",
- Curl_strerror(conn, SOCKERRNO));
+ Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
return CURLE_COULDNT_CONNECT;
}
conn->bits.bound = TRUE;
@@ -1242,7 +1247,7 @@ static CURLcode tftp_multi_statemach(struct connectdata *conn, bool *done)
*done = (state->state == TFTP_STATE_FIN) ? TRUE : FALSE;
if(*done)
/* Tell curl we're done */
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(data, -1, -1, FALSE, -1);
}
else {
/* no timeouts to handle, check our socket */
@@ -1251,7 +1256,8 @@ static CURLcode tftp_multi_statemach(struct connectdata *conn, bool *done)
if(rc == -1) {
/* bail out */
int error = SOCKERRNO;
- failf(data, "%s", Curl_strerror(conn, error));
+ char buffer[STRERROR_LEN];
+ failf(data, "%s", Curl_strerror(error, buffer, sizeof(buffer)));
state->event = TFTP_EVENT_ERROR;
}
else if(rc != 0) {
@@ -1264,7 +1270,7 @@ static CURLcode tftp_multi_statemach(struct connectdata *conn, bool *done)
*done = (state->state == TFTP_STATE_FIN) ? TRUE : FALSE;
if(*done)
/* Tell curl we're done */
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
+ Curl_setup_transfer(data, -1, -1, FALSE, -1);
}
/* if rc == 0, then select() timed out */
}
diff --git a/lib/timeval.c b/lib/timeval.c
index 2569f175..ff8d8a69 100644
--- a/lib/timeval.c
+++ b/lib/timeval.c
@@ -21,30 +21,22 @@
***************************************************************************/
#include "timeval.h"
-#include "system_win32.h"
#if defined(WIN32) && !defined(MSDOS)
+/* set in win32_init() */
+extern LARGE_INTEGER Curl_freq;
+extern bool Curl_isVistaOrGreater;
+
struct curltime Curl_now(void)
{
struct curltime now;
- static LARGE_INTEGER freq;
- static int isVistaOrGreater = -1;
- if(isVistaOrGreater == -1) {
- if(Curl_verify_windows_version(6, 0, PLATFORM_WINNT,
- VERSION_GREATER_THAN_EQUAL)) {
- isVistaOrGreater = 1;
- QueryPerformanceFrequency(&freq);
- }
- else
- isVistaOrGreater = 0;
- }
- if(isVistaOrGreater == 1) { /* QPC timer might have issues pre-Vista */
+ if(Curl_isVistaOrGreater) { /* QPC timer might have issues pre-Vista */
LARGE_INTEGER count;
QueryPerformanceCounter(&count);
- now.tv_sec = (time_t)(count.QuadPart / freq.QuadPart);
- now.tv_usec =
- (int)((count.QuadPart % freq.QuadPart) * 1000000 / freq.QuadPart);
+ now.tv_sec = (time_t)(count.QuadPart / Curl_freq.QuadPart);
+ now.tv_usec = (int)((count.QuadPart % Curl_freq.QuadPart) * 1000000 /
+ Curl_freq.QuadPart);
}
else {
/* Disable /analyze warning that GetTickCount64 is preferred */
diff --git a/lib/transfer.c b/lib/transfer.c
index 3a18c7bd..ca603172 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -296,10 +296,10 @@ CURLcode Curl_fillreadbuffer(struct connectdata *conn, size_t bytes,
here, knowing they'll become CRLFs later on.
*/
- char hexbuffer[11];
+ char hexbuffer[11] = "";
+ int hexlen = 0;
const char *endofline_native;
const char *endofline_network;
- int hexlen = 0;
if(
#ifdef CURL_DO_LINEEND_CONV
@@ -354,12 +354,14 @@ CURLcode Curl_fillreadbuffer(struct connectdata *conn, size_t bytes,
length = nread;
else
/* just translate the protocol portion */
- length = strlen(hexbuffer);
- result = Curl_convert_to_network(data, data->req.upload_fromhere,
- length);
- /* Curl_convert_to_network calls failf if unsuccessful */
- if(result)
- return result;
+ length = hexlen;
+ if(length) {
+ result = Curl_convert_to_network(data, data->req.upload_fromhere,
+ length);
+ /* Curl_convert_to_network calls failf if unsuccessful */
+ if(result)
+ return result;
+ }
}
#endif /* CURL_DOES_CONVERSIONS */
@@ -1196,6 +1198,7 @@ static CURLcode readwrite_upload(struct Curl_easy *data,
(size_t)bytes_written);
k->writebytecount += bytes_written;
+ Curl_pgrsSetUploadCounter(data, k->writebytecount);
if((!k->upload_chunky || k->forbidchunk) &&
(k->writebytecount == data->state.infilesize)) {
@@ -1229,7 +1232,6 @@ static CURLcode readwrite_upload(struct Curl_easy *data,
}
}
- Curl_pgrsSetUploadCounter(data, k->writebytecount);
} WHILE_FALSE; /* just to break out from! */
@@ -1307,11 +1309,7 @@ CURLcode Curl_readwrite(struct connectdata *conn,
k->now = Curl_now();
if(didwhat) {
- /* Update read/write counters */
- if(k->bytecountp)
- *k->bytecountp = k->bytecount; /* read count */
- if(k->writebytecountp)
- *k->writebytecountp = k->writebytecount; /* write count */
+ ;
}
else {
/* no read no write, this is a timeout? */
@@ -1526,11 +1524,14 @@ CURLcode Curl_pretransfer(struct Curl_easy *data)
if(data->set.httpreq == HTTPREQ_PUT)
data->state.infilesize = data->set.filesize;
- else {
+ else if((data->set.httpreq != HTTPREQ_GET) &&
+ (data->set.httpreq != HTTPREQ_HEAD)) {
data->state.infilesize = data->set.postfieldsize;
if(data->set.postfields && (data->state.infilesize == -1))
data->state.infilesize = (curl_off_t)strlen(data->set.postfields);
}
+ else
+ data->state.infilesize = 0;
/* If there is a list of cookie files to read, do it now! */
if(data->change.cookielist)
@@ -1852,8 +1853,7 @@ CURLcode Curl_retry_request(struct connectdata *conn,
if(conn->handler->protocol&PROTO_FAMILY_HTTP) {
- struct HTTP *http = data->req.protop;
- if(http->writebytecount) {
+ if(data->req.writebytecount) {
CURLcode result = Curl_readrewind(conn);
if(result) {
Curl_safefree(*url);
@@ -1871,24 +1871,17 @@ CURLcode Curl_retry_request(struct connectdata *conn,
*/
void
Curl_setup_transfer(
- struct connectdata *conn, /* connection data */
+ struct Curl_easy *data, /* transfer */
int sockindex, /* socket index to read from or -1 */
curl_off_t size, /* -1 if unknown at this point */
bool getheader, /* TRUE if header parsing is wanted */
- curl_off_t *bytecountp, /* return number of bytes read or NULL */
- int writesockindex, /* socket index to write to, it may very well be
+ int writesockindex /* socket index to write to, it may very well be
the same we read from. -1 disables */
- curl_off_t *writecountp /* return number of bytes written or NULL */
)
{
- struct Curl_easy *data;
- struct SingleRequest *k;
-
+ struct SingleRequest *k = &data->req;
+ struct connectdata *conn = data->conn;
DEBUGASSERT(conn != NULL);
-
- data = conn->data;
- k = &data->req;
-
DEBUGASSERT((sockindex <= 1) && (sockindex >= -1));
if(conn->bits.multiplex || conn->httpversion == 20) {
@@ -1907,8 +1900,6 @@ Curl_setup_transfer(
k->getheader = getheader;
k->size = size;
- k->bytecountp = bytecountp;
- k->writebytecountp = writecountp;
/* The code sequence below is placed in this function just because all
necessary input is not always known in do_complete() as this function may
diff --git a/lib/transfer.h b/lib/transfer.h
index 9742455a..a9bff634 100644
--- a/lib/transfer.h
+++ b/lib/transfer.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -59,15 +59,13 @@ CURLcode Curl_get_upload_buffer(struct Curl_easy *data);
/* This sets up a forthcoming transfer */
void
-Curl_setup_transfer (struct connectdata *data,
- int sockindex, /* socket index to read from or -1 */
- curl_off_t size, /* -1 if unknown at this point */
- bool getheader, /* TRUE if header parsing is wanted */
- curl_off_t *bytecountp, /* return number of bytes read */
- int writesockindex, /* socket index to write to, it may
- very well be the same we read from.
- -1 disables */
- curl_off_t *writecountp /* return number of bytes written */
-);
+Curl_setup_transfer (struct Curl_easy *data,
+ int sockindex, /* socket index to read from or -1 */
+ curl_off_t size, /* -1 if unknown at this point */
+ bool getheader, /* TRUE if header parsing is wanted */
+ int writesockindex /* socket index to write to. May be
+ the same we read from. -1
+ disables */
+ );
#endif /* HEADER_CURL_TRANSFER_H */
diff --git a/lib/url.c b/lib/url.c
index d5a98200..eb09a24b 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -120,6 +120,7 @@ bool curl_win32_idn_to_ascii(const char *in, char **out);
#include "dotdot.h"
#include "strdup.h"
#include "setopt.h"
+#include "altsvc.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
@@ -292,7 +293,7 @@ void Curl_freeset(struct Curl_easy *data)
}
/* free the URL pieces */
-void Curl_up_free(struct Curl_easy *data)
+static void up_free(struct Curl_easy *data)
{
struct urlpieces *up = &data->state.up;
Curl_safefree(up->scheme);
@@ -303,7 +304,8 @@ void Curl_up_free(struct Curl_easy *data)
Curl_safefree(up->options);
Curl_safefree(up->path);
Curl_safefree(up->query);
- curl_url_cleanup(data->state.uh);
+ if(data->set.uh != data->state.uh)
+ curl_url_cleanup(data->state.uh);
data->state.uh = NULL;
}
@@ -369,11 +371,16 @@ CURLcode Curl_close(struct Curl_easy *data)
}
data->change.referer = NULL;
- Curl_up_free(data);
+ up_free(data);
Curl_safefree(data->state.buffer);
Curl_safefree(data->state.headerbuff);
Curl_safefree(data->state.ulbuf);
Curl_flush_cookies(data, 1);
+#ifdef USE_ALTSVC
+ Curl_altsvc_save(data->asi, data->set.str[STRING_ALTSVC]);
+ Curl_altsvc_cleanup(data->asi);
+ data->asi = NULL;
+#endif
Curl_digest_cleanup(data);
Curl_safefree(data->info.contenttype);
Curl_safefree(data->info.wouldredirect);
@@ -660,11 +667,15 @@ static void conn_reset_all_postponed_data(struct connectdata *conn)
#define conn_reset_all_postponed_data(c) do {} WHILE_FALSE
#endif /* ! USE_RECV_BEFORE_SEND_WORKAROUND */
-static void conn_free(struct connectdata *conn)
+
+static void conn_shutdown(struct connectdata *conn)
{
if(!conn)
return;
+ infof(conn->data, "Closing connection %ld\n", conn->connection_id);
+ DEBUGASSERT(conn->data);
+
/* possible left-overs from the async name resolvers */
Curl_resolver_cancel(conn);
@@ -688,6 +699,21 @@ static void conn_free(struct connectdata *conn)
Curl_ntlm_wb_cleanup(conn);
#endif
+ /* unlink ourselves. this should be called last since other shutdown
+ procedures need a valid conn->data and this may clear it. */
+ Curl_conncache_remove_conn(conn->data, conn, TRUE);
+}
+
+static void conn_free(struct connectdata *conn)
+{
+ if(!conn)
+ return;
+
+ free_idnconverted_hostname(&conn->host);
+ free_idnconverted_hostname(&conn->conn_to_host);
+ free_idnconverted_hostname(&conn->http_proxy.host);
+ free_idnconverted_hostname(&conn->socks_proxy.host);
+
Curl_safefree(conn->user);
Curl_safefree(conn->passwd);
Curl_safefree(conn->oauth_bearer);
@@ -780,27 +806,20 @@ CURLcode Curl_disconnect(struct Curl_easy *data,
/* Cleanup NTLM connection-related data */
Curl_http_ntlm_cleanup(conn);
#endif
+#if !defined(CURL_DISABLE_HTTP) && defined(USE_SPNEGO)
+ /* Cleanup NEGOTIATE connection-related data */
+ Curl_cleanup_negotiate(conn);
+#endif
- /* the protocol specific disconnect handler needs a transfer for its
- connection! */
+ /* the protocol specific disconnect handler and conn_shutdown need a transfer
+ for the connection! */
conn->data = data;
+
if(conn->handler->disconnect)
/* This is set if protocol-specific cleanups should be made */
conn->handler->disconnect(conn, dead_connection);
- /* unlink ourselves! */
- infof(data, "Closing connection %ld\n", conn->connection_id);
- Curl_conncache_remove_conn(data, conn, TRUE);
-
- free_idnconverted_hostname(&conn->host);
- free_idnconverted_hostname(&conn->conn_to_host);
- free_idnconverted_hostname(&conn->http_proxy.host);
- free_idnconverted_hostname(&conn->socks_proxy.host);
-
- /* this assumes that the pointer is still there after the connection was
- detected from the cache */
- Curl_ssl_close(conn, FIRSTSOCKET);
-
+ conn_shutdown(conn);
conn_free(conn);
return CURLE_OK;
}
@@ -956,7 +975,7 @@ static bool extract_if_dead(struct connectdata *conn,
struct Curl_easy *data)
{
size_t pipeLen = conn->send_pipe.size + conn->recv_pipe.size;
- if(!pipeLen && !CONN_INUSE(conn)) {
+ if(!pipeLen && !CONN_INUSE(conn) && !conn->data) {
/* The check for a dead socket makes sense only if there are no
handles in pipeline and the connection isn't already marked in
use */
@@ -965,7 +984,10 @@ static bool extract_if_dead(struct connectdata *conn,
/* The protocol has a special method for checking the state of the
connection. Use it to check if the connection is dead. */
unsigned int state;
+ struct Curl_easy *olddata = conn->data;
+ conn->data = data; /* use this transfer for now */
state = conn->handler->connection_check(conn, CONNCHECK_ISDEAD);
+ conn->data = olddata;
dead = (state & CONNRESULT_DEAD);
}
else {
@@ -994,7 +1016,6 @@ struct prunedead {
static int call_extract_if_dead(struct connectdata *conn, void *param)
{
struct prunedead *p = (struct prunedead *)param;
- conn->data = p->data; /* transfer to use for this check */
if(extract_if_dead(conn, p->data)) {
/* stop the iteration here, pass back the connection that was extracted */
p->extracted = conn;
@@ -1132,6 +1153,10 @@ ConnectionExists(struct Curl_easy *data,
check = curr->ptr;
curr = curr->next;
+ if(check->bits.connect_only)
+ /* connect-only connections will not be reused */
+ continue;
+
if(extract_if_dead(check, data)) {
/* disconnect it */
(void)Curl_disconnect(data, check, /* dead_connection */TRUE);
@@ -1262,14 +1287,15 @@ ConnectionExists(struct Curl_easy *data,
}
}
- if(!canpipe && CONN_INUSE(check))
+ if(!canpipe && check->data)
/* this request can't be pipelined but the checked connection is
already in use so we skip it */
continue;
- if(CONN_INUSE(check) && (check->data->multi != needle->data->multi))
- /* this could be subject for pipeline/multiplex use, but only
- if they belong to the same multi handle */
+ if(CONN_INUSE(check) && check->data &&
+ (check->data->multi != needle->data->multi))
+ /* this could be subject for pipeline/multiplex use, but only if they
+ belong to the same multi handle */
continue;
if(needle->localdev || needle->localport) {
@@ -1685,6 +1711,8 @@ static bool is_ASCII_name(const char *hostname)
static void strip_trailing_dot(struct hostname *host)
{
size_t len;
+ if(!host || !host->name)
+ return;
len = strlen(host->name);
if(len && (host->name[len-1] == '.'))
host->name[len-1] = 0;
@@ -1749,15 +1777,6 @@ static CURLcode idnconvert_hostname(struct connectdata *conn,
infof(data, "IDN support not present, can't parse Unicode domains\n");
#endif
}
- {
- char *hostp;
- for(hostp = host->name; *hostp; hostp++) {
- if(*hostp <= 32) {
- failf(data, "Host name '%s' contains bad letter", host->name);
- return CURLE_URL_MALFORMAT;
- }
- }
- }
return CURLE_OK;
}
@@ -1899,8 +1918,8 @@ static struct connectdata *allocate_conn(struct Curl_easy *data)
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->ip_version = data->set.ipver;
+ conn->bits.connect_only = data->set.connect_only;
#if !defined(CURL_DISABLE_HTTP) && defined(USE_NTLM) && \
defined(NTLM_WB_ENABLED)
@@ -2029,11 +2048,11 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data,
CURLUcode uc;
char *hostname;
- Curl_up_free(data); /* cleanup previous leftovers first */
+ up_free(data); /* cleanup previous leftovers first */
/* parse the URL */
if(data->set.uh) {
- uh = data->set.uh;
+ uh = data->state.uh = data->set.uh;
}
else {
uh = data->state.uh = curl_url();
@@ -3361,6 +3380,34 @@ static CURLcode parse_connect_to_slist(struct Curl_easy *data,
conn_to_host = conn_to_host->next;
}
+#ifdef USE_ALTSVC
+ if(data->asi && !host && (port == -1) &&
+ (conn->handler->protocol == CURLPROTO_HTTPS)) {
+ /* no connect_to match, try alt-svc! */
+ const char *nhost;
+ int nport;
+ enum alpnid nalpnid;
+ bool hit;
+ host = conn->host.rawalloc;
+ hit = Curl_altsvc_lookup(data->asi,
+ ALPN_h1, host, conn->remote_port, /* from */
+ &nalpnid, &nhost, &nport /* to */);
+ if(hit) {
+ char *hostd = strdup((char *)nhost);
+ if(!hostd)
+ return CURLE_OUT_OF_MEMORY;
+ conn->conn_to_host.rawalloc = hostd;
+ conn->conn_to_host.name = hostd;
+ conn->bits.conn_to_host = TRUE;
+ conn->conn_to_port = nport;
+ conn->bits.conn_to_port = TRUE;
+ infof(data, "Alt-svc connecting from [%s]%s:%d to [%s]%s:%d\n",
+ Curl_alpnid2str(ALPN_h1), host, conn->remote_port,
+ Curl_alpnid2str(nalpnid), hostd, nport);
+ }
+ }
+#endif
+
return result;
}
@@ -3374,6 +3421,8 @@ static CURLcode resolve_server(struct Curl_easy *data,
CURLcode result = CURLE_OK;
timediff_t timeout_ms = Curl_timeleft(data, NULL, TRUE);
+ DEBUGASSERT(conn);
+ DEBUGASSERT(data);
/*************************************************************
* Resolve the name of the server or proxy
*************************************************************/
@@ -3789,9 +3838,8 @@ static CURLcode create_conn(struct Curl_easy *data,
(void)conn->handler->done(conn, result, FALSE);
goto out;
}
-
- Curl_setup_transfer(conn, -1, -1, FALSE, NULL, /* no download */
- -1, NULL); /* no upload */
+ Curl_attach_connnection(data, conn);
+ Curl_setup_transfer(data, -1, -1, FALSE, -1);
}
/* since we skip do_init() */
@@ -3877,8 +3925,9 @@ static CURLcode create_conn(struct Curl_easy *data,
/* reuse_fresh is TRUE if we are told to use a new connection by force, but
we only acknowledge this option if this is not a re-used connection
already (which happens due to follow-location or during a HTTP
- authentication phase). */
- if(data->set.reuse_fresh && !data->state.this_is_a_follow)
+ authentication phase). CONNECT_ONLY transfers also refuse reuse. */
+ if((data->set.reuse_fresh && !data->state.this_is_a_follow) ||
+ data->set.connect_only)
reuse = FALSE;
else
reuse = ConnectionExists(data, conn, &conn_temp, &force_reuse, &waitpipe);
@@ -4170,7 +4219,8 @@ CURLcode Curl_connect(struct Curl_easy *data,
connectdata struct, free those here */
Curl_disconnect(data, conn, TRUE);
}
- else
+ else if(!data->conn)
+ /* FILE: transfers already have the connection attached */
Curl_attach_connnection(data, conn);
return result;
diff --git a/lib/urlapi.c b/lib/urlapi.c
index 3af8e939..a19867eb 100644
--- a/lib/urlapi.c
+++ b/lib/urlapi.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -67,12 +67,6 @@ struct Curl_URL {
#define DEFAULT_SCHEME "https"
-#ifdef DEBUGBUILD
-#define UNITTEST
-#else
-#define UNITTEST static
-#endif
-
static void free_urlhandle(struct Curl_URL *u)
{
free(u->scheme);
@@ -141,7 +135,7 @@ static bool urlchar_needs_escaping(int c)
* URL encoding should be skipped for host names, otherwise IDN resolution
* will fail.
*/
-size_t Curl_strlen_url(const char *url, bool relative)
+static size_t strlen_url(const char *url, bool relative)
{
const unsigned char *ptr;
size_t newlen = 0;
@@ -183,7 +177,7 @@ size_t Curl_strlen_url(const char *url, bool relative)
* URL encoding should be skipped for host names, otherwise IDN resolution
* will fail.
*/
-void Curl_strcpy_url(char *output, const char *url, bool relative)
+static void strcpy_url(char *output, const char *url, bool relative)
{
/* we must add this with whitespace-replacing */
bool left = TRUE;
@@ -268,7 +262,7 @@ bool Curl_is_absolute_url(const char *url, char *buf, size_t buflen)
* The returned pointer must be freed by the caller unless NULL
* (returns NULL on out of memory).
*/
-char *Curl_concat_url(const char *base, const char *relurl)
+static char *concat_url(const char *base, const char *relurl)
{
/***
TRY to append this new path to the old URL
@@ -392,7 +386,7 @@ char *Curl_concat_url(const char *base, const char *relurl)
letter we replace each space with %20 while it is replaced with '+'
on the right side of the '?' letter.
*/
- newlen = Curl_strlen_url(useurl, !host_changed);
+ newlen = strlen_url(useurl, !host_changed);
urllen = strlen(url_clone);
@@ -414,7 +408,7 @@ char *Curl_concat_url(const char *base, const char *relurl)
newest[urllen++]='/';
/* then append the new piece on the right side */
- Curl_strcpy_url(&newest[urllen], useurl, !host_changed);
+ strcpy_url(&newest[urllen], useurl, !host_changed);
free(url_clone);
@@ -574,15 +568,15 @@ UNITTEST CURLUcode Curl_parse_port(struct Curl_URL *u, char *hostname)
/* scan for byte values < 31 or 127 */
static CURLUcode junkscan(char *part)
{
- char badbytes[]={
- /* */ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
- 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
- 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
- 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
- 0x7f,
- 0x00 /* zero terminate */
- };
if(part) {
+ static const char badbytes[]={
+ /* */ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x7f,
+ 0x00 /* zero terminate */
+ };
size_t n = strlen(part);
size_t nfine = strcspn(part, badbytes);
if(nfine != n)
@@ -1083,10 +1077,10 @@ CURLUcode curl_url_get(CURLU *u, CURLUPart what,
return CURLUE_OUT_OF_MEMORY;
*part = url;
return CURLUE_OK;
- break;
}
default:
ptr = NULL;
+ break;
}
if(ptr) {
*part = strdup(ptr);
@@ -1252,7 +1246,7 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
}
/* apply the relative part to create a new URL */
- redired_url = Curl_concat_url(oldurl, part);
+ redired_url = concat_url(oldurl, part);
free(oldurl);
if(!redired_url)
return CURLUE_OUT_OF_MEMORY;
diff --git a/lib/urldata.h b/lib/urldata.h
index ff3cc9a6..24187a4c 100644
--- a/lib/urldata.h
+++ b/lib/urldata.h
@@ -129,12 +129,14 @@ typedef ssize_t (Curl_recv)(struct connectdata *conn, /* connection data */
#ifdef HAVE_GSSAPI
# ifdef HAVE_GSSGNU
# include <gss.h>
-# elif defined HAVE_GSSMIT
+# elif defined HAVE_GSSAPI_GSSAPI_H
# include <gssapi/gssapi.h>
-# include <gssapi/gssapi_generic.h>
# else
# include <gssapi.h>
# endif
+# ifdef HAVE_GSSAPI_GSSAPI_GENERIC_H
+# include <gssapi/gssapi_generic.h>
+# endif
#endif
#ifdef HAVE_LIBSSH2_H
@@ -154,13 +156,16 @@ typedef ssize_t (Curl_recv)(struct connectdata *conn, /* connection data */
#define GOOD_EASY_HANDLE(x) \
((x) && ((x)->magic == CURLEASY_MAGIC_NUMBER))
+/* the type we use for storing a single boolean bit */
+typedef unsigned int bit;
+
#ifdef HAVE_GSSAPI
/* Types needed for krb5-ftp connections */
struct krb5buffer {
void *data;
size_t size;
size_t index;
- int eof_flag;
+ bit eof_flag:1;
};
enum protection_level {
@@ -198,21 +203,17 @@ struct ssl_connect_data {
/* Use ssl encrypted communications TRUE/FALSE, not necessarily using it atm
but at least asked to or meaning to use it. See 'state' for the exact
current state of the connection. */
- bool use;
ssl_connection_state state;
ssl_connect_state connecting_state;
#if defined(USE_SSL)
struct ssl_backend_data *backend;
#endif
+ bit use:1;
};
struct ssl_primary_config {
long version; /* what version the client wants to use */
long version_max; /* max supported version the client wants to use*/
- bool verifypeer; /* set TRUE if this is desired */
- bool verifyhost; /* set TRUE if CN/SAN must match hostname */
- bool verifystatus; /* set TRUE if certificate status must be checked */
- bool sessionid; /* cache session IDs or not */
char *CApath; /* certificate dir (doesn't work on windows) */
char *CAfile; /* certificate to verify peer against */
char *clientcert;
@@ -220,32 +221,33 @@ struct ssl_primary_config {
char *egdsocket; /* path to file containing the EGD daemon socket */
char *cipher_list; /* list of ciphers to use */
char *cipher_list13; /* list of TLS 1.3 cipher suites to use */
+ bit verifypeer:1; /* set TRUE if this is desired */
+ bit verifyhost:1; /* set TRUE if CN/SAN must match hostname */
+ bit verifystatus:1; /* set TRUE if certificate status must be checked */
+ bit sessionid:1; /* cache session IDs or not */
};
struct ssl_config_data {
struct ssl_primary_config primary;
- bool enable_beast; /* especially allow this flaw for interoperability's
- sake*/
- bool no_revoke; /* disable SSL certificate revocation checks */
long certverifyresult; /* result from the certificate verification */
char *CRLfile; /* CRL to check certificate revocation */
char *issuercert;/* optional issuer certificate filename */
curl_ssl_ctx_callback fsslctx; /* function to initialize ssl ctx */
void *fsslctxp; /* parameter for call back */
- bool certinfo; /* gather lots of certificate info */
- bool falsestart;
-
char *cert; /* client certificate file name */
char *cert_type; /* format for certificate (default: PEM)*/
char *key; /* private key file name */
char *key_type; /* format for private key (default: PEM) */
char *key_passwd; /* plain text private key password */
-
#ifdef USE_TLS_SRP
char *username; /* TLS username (for, e.g., SRP) */
char *password; /* TLS password (for, e.g., SRP) */
enum CURL_TLSAUTH authtype; /* TLS authentication type (default SRP) */
#endif
+ bit certinfo:1; /* gather lots of certificate info */
+ bit falsestart:1;
+ bit enable_beast:1; /* allow this flaw for interoperability's sake*/
+ bit no_revoke:1; /* disable SSL certificate revocation checks */
};
struct ssl_general_config {
@@ -284,12 +286,12 @@ struct digestdata {
char *cnonce;
char *realm;
int algo;
- bool stale; /* set true for re-negotiation */
char *opaque;
char *qop;
char *algorithm;
int nc; /* nounce count */
- bool userhash;
+ bit stale:1; /* set true for re-negotiation */
+ bit userhash:1;
#endif
};
@@ -356,7 +358,9 @@ struct ntlmdata {
struct negotiatedata {
/* When doing Negotiate (SPNEGO) auth, we first need to send a token
and then validate the received one. */
- enum { GSS_AUTHNONE, GSS_AUTHRECV, GSS_AUTHSENT } state;
+ enum {
+ GSS_AUTHNONE, GSS_AUTHRECV, GSS_AUTHSENT, GSS_AUTHDONE, GSS_AUTHSUCC
+ } state;
#ifdef HAVE_GSSAPI
OM_uint32 status;
gss_ctx_id_t context;
@@ -378,6 +382,10 @@ struct negotiatedata {
size_t output_token_length;
#endif
#endif
+ bool noauthpersist;
+ bool havenoauthpersist;
+ bool havenegdata;
+ bool havemultiplerequests;
};
#endif
@@ -387,69 +395,65 @@ struct negotiatedata {
*/
struct ConnectBits {
/* always modify bits.close with the connclose() and connkeep() macros! */
- bool close; /* if set, we close the connection after this request */
- bool reuse; /* if set, this is a re-used connection */
- bool conn_to_host; /* if set, this connection has a "connect to host"
- that overrides the host in the URL */
- bool conn_to_port; /* if set, this connection has a "connect to port"
- that overrides the port in the URL (remote port) */
- bool proxy; /* if set, this transfer is done through a proxy - any type */
- bool httpproxy; /* if set, this transfer is done through a http proxy */
- bool socksproxy; /* if set, this transfer is done through a socks proxy */
- bool user_passwd; /* do we use user+password for this connection? */
- bool proxy_user_passwd; /* user+password for the proxy? */
- bool ipv6_ip; /* we communicate with a remote site specified with pure IPv6
- IP address */
- bool ipv6; /* we communicate with a site using an IPv6 address */
-
- bool do_more; /* this is set TRUE if the ->curl_do_more() function is
- supposed to be called, after ->curl_do() */
- bool tcpconnect[2]; /* the TCP layer (or similar) is connected, this is set
- the first time on the first connect function call */
- bool protoconnstart;/* the protocol layer has STARTED its operation after
- the TCP layer connect */
-
- bool retry; /* this connection is about to get closed and then
- re-attempted at another connection. */
- bool tunnel_proxy; /* if CONNECT is used to "tunnel" through the proxy.
- This is implicit when SSL-protocols are used through
- proxies, but can also be enabled explicitly by
- apps */
- bool authneg; /* TRUE when the auth phase has started, which means
- that we are creating a request with an auth header,
- but it is not the final request in the auth
- negotiation. */
- bool rewindaftersend;/* TRUE when the sending couldn't be stopped even
- though it will be discarded. When the whole send
- operation is done, we must call the data rewind
- callback. */
- bool ftp_use_epsv; /* As set with CURLOPT_FTP_USE_EPSV, but if we find out
- EPSV doesn't work we disable it for the forthcoming
- requests */
-
- bool ftp_use_eprt; /* As set with CURLOPT_FTP_USE_EPRT, but if we find out
- EPRT doesn't work we disable it for the forthcoming
- requests */
- bool ftp_use_data_ssl; /* Enabled SSL for the data connection */
- bool netrc; /* name+password provided by netrc */
- bool userpwd_in_url; /* name+password found in url */
- bool stream_was_rewound; /* Indicates that the stream was rewound after a
- request read past the end of its response byte
- boundary */
- bool proxy_connect_closed; /* set true if a proxy disconnected the
- connection in a CONNECT request with auth, so
- that libcurl should reconnect and continue. */
- bool bound; /* set true if bind() has already been done on this socket/
- connection */
- bool type_set; /* type= was used in the URL */
- bool multiplex; /* connection is multiplexed */
-
- bool tcp_fastopen; /* use TCP Fast Open */
- bool tls_enable_npn; /* TLS NPN extension? */
- bool tls_enable_alpn; /* TLS ALPN extension? */
bool proxy_ssl_connected[2]; /* TRUE when SSL initialization for HTTPS proxy
is complete */
- bool socksproxy_connecting; /* connecting through a socks proxy */
+ bool tcpconnect[2]; /* the TCP layer (or similar) is connected, this is set
+ the first time on the first connect function call */
+ bit close:1; /* if set, we close the connection after this request */
+ bit reuse:1; /* if set, this is a re-used connection */
+ bit conn_to_host:1; /* if set, this connection has a "connect to host"
+ that overrides the host in the URL */
+ bit conn_to_port:1; /* if set, this connection has a "connect to port"
+ that overrides the port in the URL (remote port) */
+ bit proxy:1; /* if set, this transfer is done through a proxy - any type */
+ bit httpproxy:1; /* if set, this transfer is done through a http proxy */
+ bit socksproxy:1; /* if set, this transfer is done through a socks proxy */
+ bit user_passwd:1; /* do we use user+password for this connection? */
+ bit proxy_user_passwd:1; /* user+password for the proxy? */
+ bit ipv6_ip:1; /* we communicate with a remote site specified with pure IPv6
+ IP address */
+ bit ipv6:1; /* we communicate with a site using an IPv6 address */
+ bit do_more:1; /* this is set TRUE if the ->curl_do_more() function is
+ supposed to be called, after ->curl_do() */
+ bit protoconnstart:1;/* the protocol layer has STARTED its operation after
+ the TCP layer connect */
+ bit retry:1; /* this connection is about to get closed and then
+ re-attempted at another connection. */
+ bit tunnel_proxy:1; /* if CONNECT is used to "tunnel" through the proxy.
+ This is implicit when SSL-protocols are used through
+ proxies, but can also be enabled explicitly by
+ apps */
+ bit authneg:1; /* TRUE when the auth phase has started, which means
+ that we are creating a request with an auth header,
+ but it is not the final request in the auth
+ negotiation. */
+ bit rewindaftersend:1;/* TRUE when the sending couldn't be stopped even
+ though it will be discarded. When the whole send
+ operation is done, we must call the data rewind
+ callback. */
+ bit ftp_use_epsv:1; /* As set with CURLOPT_FTP_USE_EPSV, but if we find out
+ EPSV doesn't work we disable it for the forthcoming
+ requests */
+ bit ftp_use_eprt:1; /* As set with CURLOPT_FTP_USE_EPRT, but if we find out
+ EPRT doesn't work we disable it for the forthcoming
+ requests */
+ bit ftp_use_data_ssl:1; /* Enabled SSL for the data connection */
+ bit netrc:1; /* name+password provided by netrc */
+ bit userpwd_in_url:1; /* name+password found in url */
+ bit stream_was_rewound:1; /* The stream was rewound after a request read
+ past the end of its response byte boundary */
+ bit proxy_connect_closed:1; /* TRUE if a proxy disconnected the connection
+ in a CONNECT request with auth, so that
+ libcurl should reconnect and continue. */
+ bit bound:1; /* set true if bind() has already been done on this socket/
+ connection */
+ bit type_set:1; /* type= was used in the URL */
+ bit multiplex:1; /* connection is multiplexed */
+ bit tcp_fastopen:1; /* use TCP Fast Open */
+ bit tls_enable_npn:1; /* TLS NPN extension? */
+ bit tls_enable_alpn:1; /* TLS ALPN extension? */
+ bit socksproxy_connecting:1; /* connecting through a socks proxy */
+ bit connect_only:1;
};
struct hostname {
@@ -476,14 +480,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)
-
struct Curl_async {
char *hostname;
int port;
struct Curl_dns_entry *dns;
- bool done; /* set TRUE when the lookup is complete */
int status; /* if done is TRUE, this is the status from the callback */
void *os_specific; /* 'struct thread_data' for Windows */
+ bit done:1; /* set TRUE when the lookup is complete */
};
#define FIRSTSOCKET 0
@@ -541,25 +544,21 @@ struct dohdata {
*/
struct SingleRequest {
curl_off_t size; /* -1 if unknown at this point */
- curl_off_t *bytecountp; /* return number of bytes read or NULL */
-
curl_off_t maxdownload; /* in bytes, the maximum amount of data to fetch,
-1 means unlimited */
- curl_off_t *writebytecountp; /* return number of bytes written or NULL */
-
curl_off_t bytecount; /* total number of bytes read */
curl_off_t writebytecount; /* number of bytes written */
- long headerbytecount; /* only count received headers */
- long deductheadercount; /* this amount of bytes doesn't count when we check
- if anything has been transferred at the end of a
- connection. We use this counter to make only a
- 100 reply (without a following second response
- code) result in a CURLE_GOT_NOTHING error code */
+ curl_off_t headerbytecount; /* only count received headers */
+ curl_off_t deductheadercount; /* this amount of bytes doesn't count when we
+ check if anything has been transferred at
+ the end of a connection. We use this
+ counter to make only a 100 reply (without a
+ following second response code) result in a
+ CURLE_GOT_NOTHING error code */
struct curltime start; /* transfer started at this time */
struct curltime now; /* current time */
- bool header; /* incoming data has HTTP header */
enum {
HEADER_NORMAL, /* no bad header at all */
HEADER_PARTHEADER, /* part of the chunk is a bad header, the rest
@@ -575,7 +574,6 @@ struct SingleRequest {
char *str_start; /* within buf */
char *end_ptr; /* within buf */
char *p; /* within headerbuff */
- bool content_range; /* set TRUE if Content-Range: was found */
curl_off_t offset; /* possible resume offset read from the
Content-Range: header */
int httpcode; /* error code from the 'HTTP/1.? XXX' or
@@ -588,19 +586,8 @@ struct SingleRequest {
/* See sec 3.5, RFC2616. */
time_t timeofdoc;
long bodywrites;
-
char *buf;
- curl_socket_t maxfd;
-
int keepon;
-
- bool upload_done; /* set to TRUE when doing chunked transfer-encoding upload
- and we're uploading the last chunk */
-
- bool ignorebody; /* we read a response-body but we ignore it! */
- bool ignorecl; /* This HTTP response has no body so we ignore the Content-
- Length: header */
-
char *location; /* This points to an allocated version of the Location:
header data */
char *newurl; /* Set to the new URL to use when a redirect or a retry is
@@ -610,24 +597,28 @@ struct SingleRequest {
still left in the buffer, aimed for upload. */
ssize_t upload_present;
- /* 'upload_fromhere' is used as a read-pointer when we uploaded parts of a
- buffer, so the next read should read from where this pointer points to,
- and the 'upload_present' contains the number of bytes available at this
- position */
+ /* 'upload_fromhere' is used as a read-pointer when we uploaded parts of a
+ buffer, so the next read should read from where this pointer points to,
+ and the 'upload_present' contains the number of bytes available at this
+ position */
char *upload_fromhere;
-
- bool chunk; /* if set, this is a chunked transfer-encoding */
- bool upload_chunky; /* set TRUE if we are doing chunked transfer-encoding
- on upload */
- bool getheader; /* TRUE if header parsing is wanted */
-
- bool forbidchunk; /* used only to explicitly forbid chunk-upload for
- specific upload buffers. See readmoredata() in
- http.c for details. */
-
void *protop; /* Allocated protocol-specific data. Each protocol
handler makes sure this points to data it needs. */
struct dohdata doh; /* DoH specific data for this request */
+ bit header:1; /* incoming data has HTTP header */
+ bit content_range:1; /* set TRUE if Content-Range: was found */
+ bit upload_done:1; /* set to TRUE when doing chunked transfer-encoding
+ upload and we're uploading the last chunk */
+ bit ignorebody:1; /* we read a response-body but we ignore it! */
+ bit ignorecl:1; /* This HTTP response has no body so we ignore the
+ Content-Length: header */
+ bit chunk:1; /* if set, this is a chunked transfer-encoding */
+ bit upload_chunky:1; /* set TRUE if we are doing chunked transfer-encoding
+ on upload */
+ bit getheader:1; /* TRUE if header parsing is wanted */
+ bit forbidchunk:1; /* used only to explicitly forbid chunk-upload for
+ specific upload buffers. See readmoredata() in http.c
+ for details. */
};
/*
@@ -775,13 +766,13 @@ struct http_connect_state {
char *line_start;
char *ptr; /* where to store more data */
curl_off_t cl; /* size of content to read and ignore */
- bool chunked_encoding;
enum {
TUNNEL_INIT, /* init/default/no tunnel state */
TUNNEL_CONNECT, /* CONNECT has been sent off */
TUNNEL_COMPLETE /* CONNECT response received completely */
} tunnel_state;
- bool close_connection;
+ bit chunked_encoding:1;
+ bit close_connection:1;
};
/*
@@ -898,8 +889,6 @@ struct connectdata {
#endif
struct ssl_primary_config ssl_config;
struct ssl_primary_config proxy_ssl_config;
- bool tls_upgraded;
-
struct ConnectBits bits; /* various state-flags for this connection */
/* connecttime: when connect() is called on the current IP address. Used to
@@ -946,7 +935,7 @@ struct connectdata {
} allocptr;
#ifdef HAVE_GSSAPI
- int sec_complete; /* if Kerberos is enabled for this connection */
+ bit sec_complete:1; /* if Kerberos is enabled for this connection */
enum protection_level command_prot;
enum protection_level data_prot;
enum protection_level request_data_prot;
@@ -961,14 +950,6 @@ struct connectdata {
struct kerberos5data krb5; /* variables into the structure definition, */
#endif /* however, some of them are ftp specific. */
- /* the two following *_inuse fields are only flags, not counters in any way.
- If TRUE it means the channel is in use, and if FALSE it means the channel
- is up for grabs by one. */
-
- bool readchannel_inuse; /* whether the read channel is in use by an easy
- handle */
- bool writechannel_inuse; /* whether the write channel is in use by an easy
- handle */
struct curl_llist send_pipe; /* List of handles waiting to send on this
pipeline */
struct curl_llist recv_pipe; /* List of handles waiting to read their
@@ -1002,7 +983,11 @@ struct connectdata {
#endif
#endif
- char syserr_buf [256]; /* buffer for Curl_strerror() */
+#ifdef USE_SPNEGO
+ struct negotiatedata negotiate; /* state data for host Negotiate auth */
+ struct negotiatedata proxyneg; /* state data for proxy Negotiate auth */
+#endif
+
/* data used for the asynch name resolve callback */
struct Curl_async async;
@@ -1045,8 +1030,16 @@ struct connectdata {
#ifdef USE_UNIX_SOCKETS
char *unix_domain_socket;
- bool abstract_unix_socket;
+ bit abstract_unix_socket:1;
#endif
+ bit tls_upgraded:1;
+ /* the two following *_inuse fields are only flags, not counters in any way.
+ If TRUE it means the channel is in use, and if FALSE it means the channel
+ is up for grabs by one. */
+ bit readchannel_inuse:1; /* whether the read channel is in use by an easy
+ handle */
+ bit writechannel_inuse:1; /* whether the write channel is in use by an easy
+ handle */
};
/* The end of connectdata. */
@@ -1061,10 +1054,8 @@ struct PureInfo {
int httpversion; /* the http version number X.Y = X*10+Y */
time_t filetime; /* If requested, this is might get set. Set to -1 if the
time was unretrievable. */
- bool timecond; /* set to TRUE if the time condition didn't match, which
- thus made the document NOT get fetched */
- long header_size; /* size of read header(s) in bytes */
- long request_size; /* the amount of bytes sent in the request(s) */
+ curl_off_t header_size; /* size of read header(s) in bytes */
+ curl_off_t request_size; /* the amount of bytes sent in the request(s) */
unsigned long proxyauthavail; /* what proxy auth types were announced */
unsigned long httpauthavail; /* what host auth types were announced */
long numconnects; /* how many new connection did libcurl created */
@@ -1081,16 +1072,16 @@ struct PureInfo {
char conn_primary_ip[MAX_IPADR_LEN];
long conn_primary_port;
-
char conn_local_ip[MAX_IPADR_LEN];
long conn_local_port;
-
const char *conn_scheme;
unsigned int conn_protocol;
-
struct curl_certinfo certs; /* info about the certs, only populated in
OpenSSL builds. Asked for with
CURLOPT_CERTINFO / CURLINFO_CERTINFO */
+
+ bit timecond:1; /* set to TRUE if the time condition didn't match, which
+ thus made the document NOT get fetched */
};
@@ -1104,7 +1095,6 @@ struct Progress {
curl_off_t current_speed; /* uses the currently fastest transfer */
- bool callback; /* set when progress callback is used */
int width; /* screen width at download start */
int flags; /* see progress.h */
@@ -1125,7 +1115,6 @@ struct Progress {
struct curltime t_startop;
struct curltime t_acceptdata;
- bool is_t_startransfer_set;
/* upload speed limit */
struct curltime ul_limit_start;
@@ -1139,6 +1128,8 @@ struct Progress {
curl_off_t speeder[ CURR_TIME ];
struct curltime speeder_time[ CURR_TIME ];
int speeder_c;
+ bit callback:1; /* set when progress callback is used */
+ bit is_t_startransfer_set:1;
};
typedef enum {
@@ -1150,7 +1141,6 @@ typedef enum {
HTTPREQ_PUT,
HTTPREQ_HEAD,
HTTPREQ_OPTIONS,
- HTTPREQ_CUSTOM,
HTTPREQ_LAST /* last in list */
} Curl_HttpReq;
@@ -1187,12 +1177,12 @@ struct auth {
unsigned long picked;
unsigned long avail; /* Bitmask for what the server reports to support for
this resource */
- bool done; /* TRUE when the auth phase is done and ready to do the *actual*
- request */
- bool multipass; /* TRUE if this is not yet authenticated but within the
- auth multipass negotiation */
- bool iestyle; /* TRUE if digest should be done IE-style or FALSE if it should
- be RFC compliant */
+ bit done:1; /* TRUE when the auth phase is done and ready to do the
+ *actual* request */
+ bit multipass:1; /* TRUE if this is not yet authenticated but within the
+ auth multipass negotiation */
+ bit iestyle:1; /* TRUE if digest should be done IE-style or FALSE if it
+ should be RFC compliant */
};
struct Curl_http2_dep {
@@ -1263,11 +1253,6 @@ struct UrlState {
/* Points to the connection cache */
struct conncache *conn_cache;
- /* when curl_easy_perform() is called, the multi handle is "owned" by
- the easy handle so curl_easy_cleanup() on such an easy handle will
- also close the multi handle! */
- bool multi_owned_by_easy;
-
/* buffers to store authentication data in, as parsed from input options */
struct curltime keeps_speed; /* for the progress meter really */
@@ -1280,8 +1265,6 @@ struct UrlState {
char *ulbuf; /* allocated upload buffer or NULL */
curl_off_t current_speed; /* the ProgressShow() function sets this,
bytes / second */
- bool this_is_a_follow; /* this is a followed Location: request */
- bool refused_stream; /* this was refused, try again */
char *first_host; /* host name of the first (not followed) request.
if set, this should be the host name that we will
sent authorization to, no else. Used to make Location:
@@ -1294,29 +1277,17 @@ struct UrlState {
unsigned int tempcount; /* number of entries in use in tempwrite, 0 - 3 */
struct tempbuf tempwrite[3]; /* BOTH, HEADER, BODY */
char *scratch; /* huge buffer[set.buffer_size*2] for upload CRLF replacing */
- bool errorbuf; /* Set to TRUE if the error buffer is already filled in.
- This must be set to FALSE every time _easy_perform() is
- called. */
int os_errno; /* filled in with errno whenever an error occurs */
#ifdef HAVE_SIGNAL
/* storage for the previous bag^H^H^HSIGPIPE signal handler :-) */
void (*prev_signal)(int sig);
#endif
- bool allow_port; /* Is set.use_port allowed to take effect or not. This
- is always set TRUE when curl_easy_perform() is called. */
struct digestdata digest; /* state data for host Digest auth */
struct digestdata proxydigest; /* state data for proxy Digest auth */
-#ifdef USE_SPNEGO
- struct negotiatedata negotiate; /* state data for host Negotiate auth */
- struct negotiatedata proxyneg; /* state data for proxy Negotiate auth */
-#endif
-
struct auth authhost; /* auth details for host */
struct auth authproxy; /* auth details for proxy */
- bool authproblem; /* TRUE if there's some problem authenticating */
-
void *resolver; /* resolver state, if it is used in the URL state -
ares_channel f.e. */
@@ -1332,27 +1303,18 @@ struct UrlState {
/* a place to store the most recently set FTP entrypath */
char *most_recent_ftp_entrypath;
- /* set after initial USER failure, to prevent an authentication loop */
- bool ftp_trying_alternative;
- bool wildcardmatch; /* enable wildcard matching */
int httpversion; /* the lowest HTTP version*10 reported by any server
involved in this request */
- bool expect100header; /* TRUE if we added Expect: 100-continue */
#if !defined(WIN32) && !defined(MSDOS) && !defined(__EMX__) && \
!defined(__SYMBIAN32__)
/* do FTP line-end conversions on most platforms */
#define CURL_DO_LINEEND_CONV
/* for FTP downloads: track CRLF sequences that span blocks */
- bool prev_block_had_trailing_cr;
+ bit prev_block_had_trailing_cr:1;
/* for FTP downloads: how many CRLFs did we converted to LFs? */
curl_off_t crlf_conversions;
#endif
- bool slash_removed; /* set TRUE if the 'path' points to a path where the
- initial URL slash separator has been taken off */
- bool use_range;
- bool rangestringalloc; /* the range string is malloc()'ed */
-
char *range; /* range, if used. See README for detailed specification on
this syntax. */
curl_off_t resume_from; /* continue [ftp] transfer from here */
@@ -1368,19 +1330,12 @@ struct UrlState {
size_t drain; /* Increased when this stream has data to read, even if its
socket is not necessarily is readable. Decreased when
checked. */
- bool done; /* set to FALSE when Curl_init_do() is called and set to TRUE
- when multi_done() is called, to prevent multi_done() to get
- invoked twice when the multi interface is used. */
curl_read_callback fread_func; /* read callback/function */
void *in; /* CURLOPT_READDATA */
struct Curl_easy *stream_depends_on;
- bool stream_depends_e; /* set or don't set the Exclusive bit */
int stream_weight;
-#ifdef CURLDEBUG
- bool conncache_lock;
-#endif
CURLU *uh; /* URL handle for the current parsed URL */
struct urlpieces up;
#ifndef CURL_DISABLE_HTTP
@@ -1390,6 +1345,32 @@ struct UrlState {
#endif
trailers_state trailers_state; /* whether we are sending trailers
and what stage are we at */
+#ifdef CURLDEBUG
+ bit conncache_lock:1;
+#endif
+ /* when curl_easy_perform() is called, the multi handle is "owned" by
+ the easy handle so curl_easy_cleanup() on such an easy handle will
+ also close the multi handle! */
+ bit multi_owned_by_easy:1;
+
+ bit this_is_a_follow:1; /* this is a followed Location: request */
+ bit refused_stream:1; /* this was refused, try again */
+ bit errorbuf:1; /* Set to TRUE if the error buffer is already filled in.
+ This must be set to FALSE every time _easy_perform() is
+ called. */
+ bit allow_port:1; /* Is set.use_port allowed to take effect or not. This
+ is always set TRUE when curl_easy_perform() is called. */
+ bit authproblem:1; /* TRUE if there's some problem authenticating */
+ /* set after initial USER failure, to prevent an authentication loop */
+ bit ftp_trying_alternative:1;
+ bit wildcardmatch:1; /* enable wildcard matching */
+ bit expect100header:1; /* TRUE if we added Expect: 100-continue */
+ bit use_range:1;
+ bit rangestringalloc:1; /* the range string is malloc()'ed */
+ bit done:1; /* set to FALSE when Curl_init_do() is called and set to TRUE
+ when multi_done() is called, to prevent multi_done() to get
+ invoked twice when the multi interface is used. */
+ bit stream_depends_e:1; /* set or don't set the Exclusive bit */
};
@@ -1402,14 +1383,15 @@ struct UrlState {
struct DynamicStatic {
char *url; /* work URL, copied from UserDefined */
- bool url_alloc; /* URL string is malloc()'ed */
char *referer; /* referer string */
- bool referer_alloc; /* referer string is malloc()ed */
struct curl_slist *cookielist; /* list of cookie files set by
curl_easy_setopt(COOKIEFILE) calls */
struct curl_slist *resolve; /* set to point to the set.resolve list when
this should be dealt with in pretransfer */
- bool wildcard_resolve; /* Set to true if any resolve change is a wildcard */
+ bit url_alloc:1; /* URL string is malloc()'ed */
+ bit referer_alloc:1; /* referer string is malloc()ed */
+ bit wildcard_resolve:1; /* Set to true if any resolve change is a
+ wildcard */
};
/*
@@ -1502,6 +1484,9 @@ enum dupstring {
#endif
STRING_TARGET, /* CURLOPT_REQUEST_TARGET */
STRING_DOH, /* CURLOPT_DOH_URL */
+#ifdef USE_ALTSVC
+ STRING_ALTSVC, /* CURLOPT_ALTSVC */
+#endif
/* -- end of zero-terminated strings -- */
STRING_LASTZEROTERMINATED,
@@ -1539,8 +1524,6 @@ struct UserDefined {
int keep_post; /* keep POSTs as POSTs after a 30x request; each
bit represents a request, from 301 to 303 */
- bool free_referer; /* set TRUE if 'referer' points to a string we
- allocated */
void *postfields; /* if POST, set the fields' values here */
curl_seek_callback seek_func; /* function that seeks the input */
curl_off_t postfieldsize; /* if POST, this might have a size to use instead
@@ -1553,8 +1536,6 @@ struct UserDefined {
curl_write_callback fwrite_header; /* function that stores headers */
curl_write_callback fwrite_rtp; /* function that stores interleaved RTP */
curl_read_callback fread_func_set; /* function that reads the input */
- int is_fread_set; /* boolean, has read callback been set to non-NULL? */
- int is_fwrite_set; /* boolean, has write callback been set to non-NULL? */
curl_progress_callback fprogress; /* OLD and deprecated progress callback */
curl_xferinfo_callback fxferinfo; /* progress callback */
curl_debug_callback fdebug; /* function that write informational data */
@@ -1586,7 +1567,6 @@ struct UserDefined {
long happy_eyeballs_timeout; /* in milliseconds, 0 is a valid value */
long server_response_timeout; /* in milliseconds, 0 means no timeout */
long tftp_blksize; /* in bytes, 0 means use default */
- bool tftp_no_options; /* do not send TFTP options requests */
curl_off_t filesize; /* size of file to upload, -1 means unknown */
long low_speed_limit; /* bytes/second */
long low_speed_time; /* number of seconds */
@@ -1598,9 +1578,6 @@ struct UserDefined {
struct curl_slist *proxyheaders; /* linked list of extra CONNECT headers */
struct curl_httppost *httppost; /* linked list of old POST data */
curl_mimepart mimepost; /* MIME/POST data. */
- bool sep_headers; /* handle host and proxy headers separately */
- bool cookiesession; /* new cookie session? */
- bool crlf; /* convert crlf on ftp upload(?) */
struct curl_slist *quote; /* after connection is established */
struct curl_slist *postquote; /* after the transfer */
struct curl_slist *prequote; /* before the transfer, after type */
@@ -1619,7 +1596,6 @@ struct UserDefined {
Curl_HttpReq httpreq; /* what kind of HTTP request (if any) is this */
long httpversion; /* when non-zero, a specific HTTP version requested to
be used in the library's request(s) */
- bool strip_path_slash; /* strip off initial slash from path */
struct ssl_config_data ssl; /* user defined SSL stuff */
struct ssl_config_data proxy_ssl; /* user defined SSL stuff for proxy */
struct ssl_general_config general_ssl; /* general user defined SSL stuff */
@@ -1629,87 +1605,33 @@ struct UserDefined {
size_t upload_buffer_size; /* size of upload buffer to use,
keep it >= CURL_MAX_WRITE_SIZE */
void *private_data; /* application-private data */
-
struct curl_slist *http200aliases; /* linked list of aliases for http200 */
-
long ipver; /* the CURL_IPRESOLVE_* defines in the public header file
0 - whatever, 1 - v2, 2 - v6 */
-
curl_off_t max_filesize; /* Maximum file size to download */
-
curl_ftpfile ftp_filemethod; /* how to get to a file when FTP is used */
-
int ftp_create_missing_dirs; /* 1 - create directories that don't exist
2 - the same but also allow MKD to fail once
*/
-
curl_sshkeycallback ssh_keyfunc; /* key matching callback */
void *ssh_keyfunc_userp; /* custom pointer to callback */
- bool ssh_compression; /* enable SSH compression */
-
-/* Here follows boolean settings that define how to behave during
- this session. They are STATIC, set by libcurl users or at least initially
- and they don't change during operations. */
- bool get_filetime; /* get the time and get of the remote file */
- bool tunnel_thru_httpproxy; /* use CONNECT through a HTTP proxy */
- bool prefer_ascii; /* ASCII rather than binary */
- bool ftp_append; /* append, not overwrite, on upload */
- bool ftp_list_only; /* switch FTP command for listing directories */
- bool ftp_use_port; /* use the FTP PORT command */
- bool hide_progress; /* don't use the progress meter */
- bool http_fail_on_error; /* fail on HTTP error codes >= 400 */
- bool http_keep_sending_on_error; /* for HTTP status codes >= 300 */
- bool http_follow_location; /* follow HTTP redirects */
- bool http_transfer_encoding; /* request compressed HTTP transfer-encoding */
- bool allow_auth_to_other_hosts;
- bool include_header; /* include received protocol headers in data output */
- bool http_set_referer; /* is a custom referer used */
- bool http_auto_referer; /* set "correct" referer when following location: */
- bool opt_no_body; /* as set with CURLOPT_NOBODY */
- bool upload; /* upload request */
enum CURL_NETRC_OPTION
use_netrc; /* defined in include/curl.h */
- bool verbose; /* output verbosity */
- bool krb; /* Kerberos connection requested */
- bool reuse_forbid; /* forbidden to be reused, close after use */
- bool reuse_fresh; /* do not re-use an existing connection */
- bool ftp_use_epsv; /* if EPSV is to be attempted or not */
- bool ftp_use_eprt; /* if EPRT is to be attempted or not */
- bool ftp_use_pret; /* if PRET is to be used before PASV or not */
-
curl_usessl use_ssl; /* if AUTH TLS is to be attempted etc, for FTP or
IMAP or POP3 or others! */
curl_ftpauth ftpsslauth; /* what AUTH XXX to be attempted */
curl_ftpccc ftp_ccc; /* FTP CCC options */
- bool no_signal; /* do not use any signal/alarm handler */
- bool global_dns_cache; /* subject for future removal */
- bool tcp_nodelay; /* whether to enable TCP_NODELAY or not */
- bool ignorecl; /* ignore content length */
- bool ftp_skip_ip; /* skip the IP address the FTP server passes on to
- us */
- bool connect_only; /* make connection, let application use the socket */
- long ssh_auth_types; /* allowed SSH auth types */
- bool http_te_skip; /* pass the raw body data to the user, even when
- transfer-encoded (chunked, compressed) */
- bool http_ce_skip; /* pass the raw body data to the user, even when
- content-encoded (chunked, compressed) */
long new_file_perms; /* Permissions to use when creating remote files */
long new_directory_perms; /* Permissions to use when creating remote dirs */
- bool proxy_transfer_mode; /* set transfer mode (;type=<a|i>) when doing FTP
- via an HTTP proxy */
+ long ssh_auth_types; /* allowed SSH auth types */
char *str[STRING_LAST]; /* array of strings, pointing to allocated memory */
unsigned int scope_id; /* Scope id for IPv6 */
long allowed_protocols;
long redir_protocols;
-#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
- bool socks5_gssapi_nec; /* Flag to support NEC SOCKS5 server */
-#endif
struct curl_slist *mail_rcpt; /* linked list of mail recipients */
- bool sasl_ir; /* Enable/disable SASL initial response */
/* Common RTSP header options */
Curl_RtspReq rtspreq; /* RTSP request type */
long rtspversion; /* like httpversion, for RTSP */
- bool wildcard_enabled; /* enable wildcard matching */
curl_chunk_bgn_callback chunk_bgn; /* called before part of transfer
starts */
curl_chunk_end_callback chunk_end; /* called after part transferring
@@ -1721,47 +1643,102 @@ struct UserDefined {
long gssapi_delegation; /* GSS-API credential delegation, see the
documentation of CURLOPT_GSSAPI_DELEGATION */
- bool tcp_keepalive; /* use TCP keepalives */
long tcp_keepidle; /* seconds in idle before sending keepalive probe */
long tcp_keepintvl; /* seconds between TCP keepalive probes */
- bool tcp_fastopen; /* use TCP Fast Open */
- size_t maxconnects; /* Max idle connections in the connection cache */
+ size_t maxconnects; /* Max idle connections in the connection cache */
- bool ssl_enable_npn; /* TLS NPN extension? */
- bool ssl_enable_alpn; /* TLS ALPN extension? */
- bool path_as_is; /* allow dotdots? */
- bool pipewait; /* wait for pipe/multiplex status before starting a
- new connection */
long expect_100_timeout; /* in milliseconds */
- bool suppress_connect_headers; /* suppress proxy CONNECT response headers
- from user callbacks */
-
- bool dns_shuffle_addresses; /* whether to shuffle addresses before use */
-
struct Curl_easy *stream_depends_on;
- bool stream_depends_e; /* set or don't set the Exclusive bit */
int stream_weight;
-
- bool haproxyprotocol; /* whether to send HAProxy PROXY protocol v1 header */
-
struct Curl_http2_dep *stream_dependents;
- bool abstract_unix_socket;
-
curl_resolver_start_callback resolver_start; /* optional callback called
before resolver start */
void *resolver_start_client; /* pointer to pass to resolver start callback */
- bool disallow_username_in_url; /* disallow username in url */
long upkeep_interval_ms; /* Time between calls for connection upkeep. */
- bool doh; /* DNS-over-HTTPS enabled */
- bool doh_get; /* use GET for DoH requests, instead of POST */
- bool http09_allowed; /* allow HTTP/0.9 responses */
multidone_func fmultidone;
struct Curl_easy *dohfor; /* this is a DoH request for that transfer */
CURLU *uh; /* URL handle for the current parsed URL */
void *trailer_data; /* pointer to pass to trailer data callback */
curl_trailer_callback trailer_callback; /* trailing data callback */
+ bit is_fread_set:1; /* has read callback been set to non-NULL? */
+ bit is_fwrite_set:1; /* has write callback been set to non-NULL? */
+ bit free_referer:1; /* set TRUE if 'referer' points to a string we
+ allocated */
+ bit tftp_no_options:1; /* do not send TFTP options requests */
+ bit sep_headers:1; /* handle host and proxy headers separately */
+ bit cookiesession:1; /* new cookie session? */
+ bit crlf:1; /* convert crlf on ftp upload(?) */
+ bit strip_path_slash:1; /* strip off initial slash from path */
+ bit ssh_compression:1; /* enable SSH compression */
+
+/* Here follows boolean settings that define how to behave during
+ this session. They are STATIC, set by libcurl users or at least initially
+ and they don't change during operations. */
+ bit get_filetime:1; /* get the time and get of the remote file */
+ bit tunnel_thru_httpproxy:1; /* use CONNECT through a HTTP proxy */
+ bit prefer_ascii:1; /* ASCII rather than binary */
+ bit ftp_append:1; /* append, not overwrite, on upload */
+ bit ftp_list_only:1; /* switch FTP command for listing directories */
+ bit ftp_use_port:1; /* use the FTP PORT command */
+ bit hide_progress:1; /* don't use the progress meter */
+ bit http_fail_on_error:1; /* fail on HTTP error codes >= 400 */
+ bit http_keep_sending_on_error:1; /* for HTTP status codes >= 300 */
+ bit http_follow_location:1; /* follow HTTP redirects */
+ bit http_transfer_encoding:1; /* request compressed HTTP
+ transfer-encoding */
+ bit allow_auth_to_other_hosts:1;
+ bit include_header:1; /* include received protocol headers in data output */
+ bit http_set_referer:1; /* is a custom referer used */
+ bit http_auto_referer:1; /* set "correct" referer when following
+ location: */
+ bit opt_no_body:1; /* as set with CURLOPT_NOBODY */
+ bit upload:1; /* upload request */
+ bit verbose:1; /* output verbosity */
+ bit krb:1; /* Kerberos connection requested */
+ bit reuse_forbid:1; /* forbidden to be reused, close after use */
+ bit reuse_fresh:1; /* do not re-use an existing connection */
+ bit ftp_use_epsv:1; /* if EPSV is to be attempted or not */
+ bit ftp_use_eprt:1; /* if EPRT is to be attempted or not */
+ bit ftp_use_pret:1; /* if PRET is to be used before PASV or not */
+
+ bit no_signal:1; /* do not use any signal/alarm handler */
+ bit global_dns_cache:1; /* subject for future removal */
+ bit tcp_nodelay:1; /* whether to enable TCP_NODELAY or not */
+ bit ignorecl:1; /* ignore content length */
+ bit ftp_skip_ip:1; /* skip the IP address the FTP server passes on to
+ us */
+ bit connect_only:1; /* make connection, let application use the socket */
+ bit http_te_skip:1; /* pass the raw body data to the user, even when
+ transfer-encoded (chunked, compressed) */
+ bit http_ce_skip:1; /* pass the raw body data to the user, even when
+ content-encoded (chunked, compressed) */
+ bit proxy_transfer_mode:1; /* set transfer mode (;type=<a|i>) when doing
+ FTP via an HTTP proxy */
+#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
+ bit socks5_gssapi_nec:1; /* Flag to support NEC SOCKS5 server */
+#endif
+ bit sasl_ir:1; /* Enable/disable SASL initial response */
+ bit wildcard_enabled:1; /* enable wildcard matching */
+ bit tcp_keepalive:1; /* use TCP keepalives */
+ bit tcp_fastopen:1; /* use TCP Fast Open */
+ bit ssl_enable_npn:1; /* TLS NPN extension? */
+ bit ssl_enable_alpn:1;/* TLS ALPN extension? */
+ bit path_as_is:1; /* allow dotdots? */
+ bit pipewait:1; /* wait for pipe/multiplex status before starting a
+ new connection */
+ bit suppress_connect_headers:1; /* suppress proxy CONNECT response headers
+ from user callbacks */
+ bit dns_shuffle_addresses:1; /* whether to shuffle addresses before use */
+ bit stream_depends_e:1; /* set or don't set the Exclusive bit */
+ bit haproxyprotocol:1; /* whether to send HAProxy PROXY protocol v1
+ header */
+ bit abstract_unix_socket:1;
+ bit disallow_username_in_url:1; /* disallow username in url */
+ bit doh:1; /* DNS-over-HTTPS enabled */
+ bit doh_get:1; /* use GET for DoH requests, instead of POST */
+ bit http09_allowed:1; /* allow HTTP/0.9 responses */
};
struct Names {
@@ -1826,6 +1803,9 @@ struct Curl_easy {
NOTE that the 'cookie' field in the
UserDefined struct defines if the "engine"
is to be used or not. */
+#ifdef USE_ALTSVC
+ struct altsvcinfo *asi; /* the alt-svc cache */
+#endif
struct Progress progress; /* for all the progress meter data */
struct UrlState state; /* struct for fields used for state info and
other dynamic purposes */
diff --git a/lib/vauth/spnego_gssapi.c b/lib/vauth/spnego_gssapi.c
index 4a48bdd2..7c4bd4b5 100644
--- a/lib/vauth/spnego_gssapi.c
+++ b/lib/vauth/spnego_gssapi.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -273,6 +273,11 @@ void Curl_auth_spnego_cleanup(struct negotiatedata *nego)
/* Reset any variables */
nego->status = 0;
+ nego->state = GSS_AUTHNONE;
+ nego->noauthpersist = FALSE;
+ nego->havenoauthpersist = FALSE;
+ nego->havenegdata = FALSE;
+ nego->havemultiplerequests = FALSE;
}
#endif /* HAVE_GSSAPI && USE_SPNEGO */
diff --git a/lib/vauth/spnego_sspi.c b/lib/vauth/spnego_sspi.c
index 00d84046..0171ec52 100644
--- a/lib/vauth/spnego_sspi.c
+++ b/lib/vauth/spnego_sspi.c
@@ -248,8 +248,9 @@ CURLcode Curl_auth_decode_spnego_message(struct Curl_easy *data,
free(chlg);
if(GSS_ERROR(nego->status)) {
+ char buffer[STRERROR_LEN];
failf(data, "InitializeSecurityContext failed: %s",
- Curl_sspi_strerror(data->conn, nego->status));
+ Curl_sspi_strerror(nego->status, buffer, sizeof(buffer)));
return CURLE_OUT_OF_MEMORY;
}
@@ -342,6 +343,11 @@ void Curl_auth_spnego_cleanup(struct negotiatedata *nego)
/* Reset any variables */
nego->status = 0;
nego->token_max = 0;
+ nego->state = GSS_AUTHNONE;
+ nego->noauthpersist = FALSE;
+ nego->havenoauthpersist = FALSE;
+ nego->havenegdata = FALSE;
+ nego->havemultiplerequests = FALSE;
}
#endif /* USE_WINDOWS_SSPI && USE_SPNEGO */
diff --git a/lib/version.c b/lib/version.c
index e553100c..9369ae8e 100644
--- a/lib/version.c
+++ b/lib/version.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -212,6 +212,10 @@ char *curl_version(void)
}
#endif
+ /* Silent scan-build even if librtmp is not enabled. */
+ (void) left;
+ (void) ptr;
+
initialized = true;
return version;
}
@@ -366,6 +370,9 @@ static curl_version_info_data version_info = {
#if defined(HAVE_BROTLI)
| CURL_VERSION_BROTLI
#endif
+#if defined(USE_ALTSVC)
+ | CURL_VERSION_ALTSVC
+#endif
,
NULL, /* ssl_version */
0, /* ssl_version_num, this is kept at zero */
diff --git a/lib/vtls/cyassl.c b/lib/vtls/cyassl.c
index ea96cf65..c7a3268e 100644
--- a/lib/vtls/cyassl.c
+++ b/lib/vtls/cyassl.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -67,15 +67,6 @@ and that's a problem since options.h hasn't been included yet. */
#endif
#endif
-/* HAVE_SUPPORTED_CURVES is wolfSSL's build time symbol for enabling the ECC
- supported curve extension in options.h. Note ECC is enabled separately. */
-#ifndef HAVE_SUPPORTED_CURVES
-#if defined(HAVE_CYASSL_CTX_USESUPPORTEDCURVE) || \
- defined(HAVE_WOLFSSL_CTX_USESUPPORTEDCURVE)
-#define HAVE_SUPPORTED_CURVES
-#endif
-#endif
-
#include <limits.h>
#include "urldata.h"
@@ -364,16 +355,6 @@ cyassl_connect_step1(struct connectdata *conn,
}
#endif
-#ifdef HAVE_SUPPORTED_CURVES
- /* CyaSSL/wolfSSL does not send the supported ECC curves ext automatically:
- https://github.com/wolfSSL/wolfssl/issues/366
- The supported curves below are those also supported by OpenSSL 1.0.2 and
- in the same order. */
- CyaSSL_CTX_UseSupportedCurve(BACKEND->ctx, 0x17); /* secp256r1 */
- CyaSSL_CTX_UseSupportedCurve(BACKEND->ctx, 0x19); /* secp521r1 */
- CyaSSL_CTX_UseSupportedCurve(BACKEND->ctx, 0x18); /* secp384r1 */
-#endif
-
/* give application a chance to interfere with SSL set up. */
if(data->set.ssl.fsslctx) {
CURLcode result = CURLE_OK;
diff --git a/lib/vtls/gtls.c b/lib/vtls/gtls.c
index 9035ec48..e224861c 100644
--- a/lib/vtls/gtls.c
+++ b/lib/vtls/gtls.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -1423,11 +1423,6 @@ gtls_connect_step3(struct connectdata *conn,
size = sizeof(certbuf);
gnutls_x509_crt_get_issuer_dn(x509_cert, certbuf, &size);
infof(data, "\t issuer: %s\n", certbuf);
-
- /* compression algorithm (if any) */
- ptr = gnutls_compression_get_name(gnutls_compression_get(session));
- /* the *_get_name() says "NULL" if GNUTLS_COMP_NULL is returned */
- infof(data, "\t compression: %s\n", ptr);
#endif
gnutls_x509_crt_deinit(x509_cert);
diff --git a/lib/vtls/mbedtls.c b/lib/vtls/mbedtls.c
index bb6a757b..27a9402c 100644
--- a/lib/vtls/mbedtls.c
+++ b/lib/vtls/mbedtls.c
@@ -716,6 +716,8 @@ mbed_connect_step3(struct connectdata *conn,
ret = mbedtls_ssl_get_session(&BACKEND->ssl, our_ssl_sessionid);
if(ret) {
+ if(ret != MBEDTLS_ERR_SSL_ALLOC_FAILED)
+ mbedtls_ssl_session_free(our_ssl_sessionid);
free(our_ssl_sessionid);
failf(data, "mbedtls_ssl_get_session returned -0x%x", -ret);
return CURLE_SSL_CONNECT_ERROR;
@@ -729,6 +731,7 @@ mbed_connect_step3(struct connectdata *conn,
retcode = Curl_ssl_addsessionid(conn, our_ssl_sessionid, 0, sockindex);
Curl_ssl_sessionid_unlock(conn);
if(retcode) {
+ mbedtls_ssl_session_free(our_ssl_sessionid);
free(our_ssl_sessionid);
failf(data, "failed to store ssl session");
return retcode;
@@ -813,9 +816,14 @@ static void Curl_mbedtls_session_free(void *ptr)
static size_t Curl_mbedtls_version(char *buffer, size_t size)
{
+#ifdef MBEDTLS_VERSION_C
+ /* if mbedtls_version_get_number() is available it is better */
unsigned int version = mbedtls_version_get_number();
return msnprintf(buffer, size, "mbedTLS/%u.%u.%u", version>>24,
(version>>16)&0xff, (version>>8)&0xff);
+#else
+ return msnprintf(buffer, size, "mbedTLS/%s", MBEDTLS_VERSION_STRING);
+#endif
}
static CURLcode Curl_mbedtls_random(struct Curl_easy *data,
diff --git a/lib/vtls/openssl.c b/lib/vtls/openssl.c
index 9d11b89e..eff5c210 100644
--- a/lib/vtls/openssl.c
+++ b/lib/vtls/openssl.c
@@ -65,6 +65,10 @@
#include <openssl/buffer.h>
#include <openssl/pkcs12.h>
+#ifdef USE_AMISSL
+#include "amigaos.h"
+#endif
+
#if (OPENSSL_VERSION_NUMBER >= 0x0090808fL) && !defined(OPENSSL_NO_OCSP)
#include <openssl/ocsp.h>
#endif
@@ -820,8 +824,11 @@ int cert_stuff(struct connectdata *conn,
fail:
EVP_PKEY_free(pri);
X509_free(x509);
+#ifdef USE_AMISSL
+ sk_X509_pop_free(ca, Curl_amiga_X509_free);
+#else
sk_X509_pop_free(ca, X509_free);
-
+#endif
if(!cert_done)
return 0; /* failure! */
break;
@@ -831,15 +838,15 @@ int cert_stuff(struct connectdata *conn,
return 0;
}
- file_type = do_file_type(key_type);
+ if(!key_file)
+ key_file = cert_file;
+ else
+ file_type = do_file_type(key_type);
switch(file_type) {
case SSL_FILETYPE_PEM:
if(cert_done)
break;
- if(!key_file)
- /* cert & key can only be in PEM case in the same file */
- key_file = cert_file;
/* FALLTHROUGH */
case SSL_FILETYPE_ASN1:
if(SSL_CTX_use_PrivateKey_file(ctx, key_file, file_type) != 1) {
@@ -2808,6 +2815,12 @@ static CURLcode ossl_connect_step2(struct connectdata *conn, int sockindex)
connssl->connecting_state = ssl_connect_2_writing;
return CURLE_OK;
}
+#ifdef SSL_ERROR_WANT_ASYNC
+ if(SSL_ERROR_WANT_ASYNC == detail) {
+ connssl->connecting_state = ssl_connect_2;
+ return CURLE_OK;
+ }
+#endif
else {
/* untreated error */
unsigned long errdetail;
diff --git a/lib/vtls/schannel.c b/lib/vtls/schannel.c
index c8574f56..39ac080e 100644
--- a/lib/vtls/schannel.c
+++ b/lib/vtls/schannel.c
@@ -324,6 +324,9 @@ get_alg_id_by_name(char *name)
#ifdef CALG_ECDSA
CIPHEROPTION(CALG_ECDSA);
#endif
+#ifdef CALG_ECDH_EPHEM
+ CIPHEROPTION(CALG_ECDH_EPHEM);
+#endif
return 0;
}
@@ -433,8 +436,9 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
char * const hostname = SSL_IS_PROXY() ? conn->http_proxy.host.name :
conn->host.name;
- infof(data, "schannel: SSL/TLS connection with %s port %hu (step 1/3)\n",
- hostname, conn->remote_port);
+ DEBUGF(infof(data,
+ "schannel: SSL/TLS connection with %s port %hu (step 1/3)\n",
+ hostname, conn->remote_port));
if(Curl_verify_windows_version(5, 1, PLATFORM_WINNT,
VERSION_LESS_THAN_EQUAL)) {
@@ -494,12 +498,13 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
Curl_ssl_sessionid_lock(conn);
if(!Curl_ssl_getsessionid(conn, (void **)&old_cred, NULL, sockindex)) {
BACKEND->cred = old_cred;
- infof(data, "schannel: re-using existing credential handle\n");
+ DEBUGF(infof(data, "schannel: re-using existing credential handle\n"));
/* increment the reference counter of the credential/session handle */
BACKEND->cred->refcount++;
- infof(data, "schannel: incremented credential handle refcount = %d\n",
- BACKEND->cred->refcount);
+ DEBUGF(infof(data,
+ "schannel: incremented credential handle refcount = %d\n",
+ BACKEND->cred->refcount));
}
Curl_ssl_sessionid_unlock(conn);
}
@@ -522,26 +527,28 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
schannel_cred.dwFlags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
SCH_CRED_IGNORE_REVOCATION_OFFLINE;
- infof(data, "schannel: disabled server certificate revocation "
- "checks\n");
+ DEBUGF(infof(data, "schannel: disabled server certificate revocation "
+ "checks\n"));
}
else {
schannel_cred.dwFlags |= SCH_CRED_REVOCATION_CHECK_CHAIN;
- infof(data, "schannel: checking server certificate revocation\n");
+ DEBUGF(infof(data,
+ "schannel: checking server certificate revocation\n"));
}
}
else {
schannel_cred.dwFlags = SCH_CRED_MANUAL_CRED_VALIDATION |
SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
SCH_CRED_IGNORE_REVOCATION_OFFLINE;
- infof(data, "schannel: disabled server certificate revocation checks\n");
+ DEBUGF(infof(data,
+ "schannel: disabled server cert revocation checks\n"));
}
if(!conn->ssl_config.verifyhost) {
schannel_cred.dwFlags |= SCH_CRED_NO_SERVERNAME_CHECK;
- infof(data, "schannel: verifyhost setting prevents Schannel from "
- "comparing the supplied target name with the subject "
- "names in server certificates.\n");
+ DEBUGF(infof(data, "schannel: verifyhost setting prevents Schannel from "
+ "comparing the supplied target name with the subject "
+ "names in server certificates.\n"));
}
switch(conn->ssl_config.version) {
@@ -680,8 +687,9 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
CertFreeCertificateContext(client_certs[0]);
if(sspi_status != SEC_E_OK) {
+ char buffer[STRERROR_LEN];
failf(data, "schannel: AcquireCredentialsHandle failed: %s",
- Curl_sspi_strerror(conn, sspi_status));
+ Curl_sspi_strerror(sspi_status, buffer, sizeof(buffer)));
Curl_safefree(BACKEND->cred);
switch(sspi_status) {
case SEC_E_INSUFFICIENT_MEMORY:
@@ -796,15 +804,16 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
Curl_unicodefree(host_name);
if(sspi_status != SEC_I_CONTINUE_NEEDED) {
+ char buffer[STRERROR_LEN];
Curl_safefree(BACKEND->ctxt);
switch(sspi_status) {
case SEC_E_INSUFFICIENT_MEMORY:
failf(data, "schannel: initial InitializeSecurityContext failed: %s",
- Curl_sspi_strerror(conn, sspi_status));
+ Curl_sspi_strerror(sspi_status, buffer, sizeof(buffer)));
return CURLE_OUT_OF_MEMORY;
case SEC_E_WRONG_PRINCIPAL:
failf(data, "schannel: SNI or certificate check failed: %s",
- Curl_sspi_strerror(conn, sspi_status));
+ Curl_sspi_strerror(sspi_status, buffer, sizeof(buffer)));
return CURLE_PEER_FAILED_VERIFICATION;
/*
case SEC_E_INVALID_HANDLE:
@@ -819,13 +828,13 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
*/
default:
failf(data, "schannel: initial InitializeSecurityContext failed: %s",
- Curl_sspi_strerror(conn, sspi_status));
+ Curl_sspi_strerror(sspi_status, buffer, sizeof(buffer)));
return CURLE_SSL_CONNECT_ERROR;
}
}
- infof(data, "schannel: sending initial handshake data: "
- "sending %lu bytes...\n", outbuf.cbBuffer);
+ DEBUGF(infof(data, "schannel: sending initial handshake data: "
+ "sending %lu bytes...\n", outbuf.cbBuffer));
/* send initial handshake data which is now stored in output buffer */
result = Curl_write_plain(conn, conn->sock[sockindex], outbuf.pvBuffer,
@@ -837,8 +846,8 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
return CURLE_SSL_CONNECT_ERROR;
}
- infof(data, "schannel: sent initial handshake data: "
- "sent %zd bytes\n", written);
+ DEBUGF(infof(data, "schannel: sent initial handshake data: "
+ "sent %zd bytes\n", written));
BACKEND->recv_unrecoverable_err = CURLE_OK;
BACKEND->recv_sspi_close_notify = false;
@@ -874,8 +883,9 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
doread = (connssl->connecting_state != ssl_connect_2_writing) ? TRUE : FALSE;
- infof(data, "schannel: SSL/TLS connection with %s port %hu (step 2/3)\n",
- hostname, conn->remote_port);
+ DEBUGF(infof(data,
+ "schannel: SSL/TLS connection with %s port %hu (step 2/3)\n",
+ hostname, conn->remote_port));
if(!BACKEND->cred || !BACKEND->ctxt)
return CURLE_SSL_CONNECT_ERROR;
@@ -934,8 +944,8 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
if(result == CURLE_AGAIN) {
if(connssl->connecting_state != ssl_connect_2_writing)
connssl->connecting_state = ssl_connect_2_reading;
- infof(data, "schannel: failed to receive handshake, "
- "need more data\n");
+ DEBUGF(infof(data, "schannel: failed to receive handshake, "
+ "need more data\n"));
return CURLE_OK;
}
else if((result != CURLE_OK) || (nread == 0)) {
@@ -947,11 +957,12 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
/* increase encrypted data buffer offset */
BACKEND->encdata_offset += nread;
BACKEND->encdata_is_incomplete = false;
- infof(data, "schannel: encrypted data got %zd\n", nread);
+ DEBUGF(infof(data, "schannel: encrypted data got %zd\n", nread));
}
- infof(data, "schannel: encrypted data buffer: offset %zu length %zu\n",
- BACKEND->encdata_offset, BACKEND->encdata_length);
+ DEBUGF(infof(data,
+ "schannel: encrypted data buffer: offset %zu length %zu\n",
+ BACKEND->encdata_offset, BACKEND->encdata_length));
/* setup input buffers */
InitSecBuffer(&inbuf[0], SECBUFFER_TOKEN, malloc(BACKEND->encdata_offset),
@@ -994,7 +1005,8 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
if(sspi_status == SEC_E_INCOMPLETE_MESSAGE) {
BACKEND->encdata_is_incomplete = true;
connssl->connecting_state = ssl_connect_2_reading;
- infof(data, "schannel: received incomplete message, need more data\n");
+ DEBUGF(infof(data,
+ "schannel: received incomplete message, need more data\n"));
return CURLE_OK;
}
@@ -1005,7 +1017,8 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
!(BACKEND->req_flags & ISC_REQ_USE_SUPPLIED_CREDS)) {
BACKEND->req_flags |= ISC_REQ_USE_SUPPLIED_CREDS;
connssl->connecting_state = ssl_connect_2_writing;
- infof(data, "schannel: a client certificate has been requested\n");
+ DEBUGF(infof(data,
+ "schannel: a client certificate has been requested\n"));
return CURLE_OK;
}
@@ -1014,8 +1027,8 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
for(i = 0; i < 3; i++) {
/* search for handshake tokens that need to be send */
if(outbuf[i].BufferType == SECBUFFER_TOKEN && outbuf[i].cbBuffer > 0) {
- infof(data, "schannel: sending next handshake data: "
- "sending %lu bytes...\n", outbuf[i].cbBuffer);
+ DEBUGF(infof(data, "schannel: sending next handshake data: "
+ "sending %lu bytes...\n", outbuf[i].cbBuffer));
/* send handshake token to server */
result = Curl_write_plain(conn, conn->sock[sockindex],
@@ -1036,14 +1049,15 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
}
}
else {
+ char buffer[STRERROR_LEN];
switch(sspi_status) {
case SEC_E_INSUFFICIENT_MEMORY:
failf(data, "schannel: next InitializeSecurityContext failed: %s",
- Curl_sspi_strerror(conn, sspi_status));
+ Curl_sspi_strerror(sspi_status, buffer, sizeof(buffer)));
return CURLE_OUT_OF_MEMORY;
case SEC_E_WRONG_PRINCIPAL:
failf(data, "schannel: SNI or certificate check failed: %s",
- Curl_sspi_strerror(conn, sspi_status));
+ Curl_sspi_strerror(sspi_status, buffer, sizeof(buffer)));
return CURLE_PEER_FAILED_VERIFICATION;
/*
case SEC_E_INVALID_HANDLE:
@@ -1058,14 +1072,15 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
*/
default:
failf(data, "schannel: next InitializeSecurityContext failed: %s",
- Curl_sspi_strerror(conn, sspi_status));
+ Curl_sspi_strerror(sspi_status, buffer, sizeof(buffer)));
return CURLE_SSL_CONNECT_ERROR;
}
}
/* check if there was additional remaining encrypted data */
if(inbuf[1].BufferType == SECBUFFER_EXTRA && inbuf[1].cbBuffer > 0) {
- infof(data, "schannel: encrypted data length: %lu\n", inbuf[1].cbBuffer);
+ DEBUGF(infof(data, "schannel: encrypted data length: %lu\n",
+ inbuf[1].cbBuffer));
/*
There are two cases where we could be getting extra data here:
1) If we're renegotiating a connection and the handshake is already
@@ -1104,7 +1119,7 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
/* check if the handshake is complete */
if(sspi_status == SEC_E_OK) {
connssl->connecting_state = ssl_connect_3;
- infof(data, "schannel: SSL/TLS handshake complete\n");
+ DEBUGF(infof(data, "schannel: SSL/TLS handshake complete\n"));
}
pubkey_ptr = SSL_IS_PROXY() ?
@@ -1190,7 +1205,7 @@ schannel_connect_step3(struct connectdata *conn, int sockindex)
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
SECURITY_STATUS sspi_status = SEC_E_OK;
CERT_CONTEXT *ccert_context = NULL;
-#ifndef CURL_DISABLE_VERBOSE_STRINGS
+#ifdef DEBUGBUILD
const char * const hostname = SSL_IS_PROXY() ? conn->http_proxy.host.name :
conn->host.name;
#endif
@@ -1200,8 +1215,9 @@ schannel_connect_step3(struct connectdata *conn, int sockindex)
DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
- infof(data, "schannel: SSL/TLS connection with %s port %hu (step 3/3)\n",
- hostname, conn->remote_port);
+ DEBUGF(infof(data,
+ "schannel: SSL/TLS connection with %s port %hu (step 3/3)\n",
+ hostname, conn->remote_port));
if(!BACKEND->cred)
return CURLE_SSL_CONNECT_ERROR;
@@ -1266,7 +1282,8 @@ schannel_connect_step3(struct connectdata *conn, int sockindex)
sockindex));
if(incache) {
if(old_cred != BACKEND->cred) {
- infof(data, "schannel: old credential handle is stale, removing\n");
+ DEBUGF(infof(data,
+ "schannel: old credential handle is stale, removing\n"));
/* we're not taking old_cred ownership here, no refcount++ is needed */
Curl_ssl_delsessionid(conn, (void *)old_cred);
incache = FALSE;
@@ -1284,7 +1301,8 @@ schannel_connect_step3(struct connectdata *conn, int sockindex)
else {
/* this cred session is now also referenced by sessionid cache */
BACKEND->cred->refcount++;
- infof(data, "schannel: stored credential handle in session cache\n");
+ DEBUGF(infof(data,
+ "schannel: stored credential handle in session cache\n"));
}
}
Curl_ssl_sessionid_unlock(conn);
@@ -1615,7 +1633,7 @@ schannel_recv(struct connectdata *conn, int sockindex,
* handled in the cleanup.
*/
- infof(data, "schannel: client wants to read %zu bytes\n", len);
+ DEBUGF(infof(data, "schannel: client wants to read %zu bytes\n", len));
*err = CURLE_OK;
if(len && len <= BACKEND->decdata_offset) {
@@ -1660,12 +1678,13 @@ schannel_recv(struct connectdata *conn, int sockindex,
BACKEND->encdata_buffer = reallocated_buffer;
BACKEND->encdata_length = reallocated_length;
size = BACKEND->encdata_length - BACKEND->encdata_offset;
- infof(data, "schannel: encdata_buffer resized %zu\n",
- BACKEND->encdata_length);
+ DEBUGF(infof(data, "schannel: encdata_buffer resized %zu\n",
+ BACKEND->encdata_length));
}
- infof(data, "schannel: encrypted data buffer: offset %zu length %zu\n",
- BACKEND->encdata_offset, BACKEND->encdata_length);
+ DEBUGF(infof(data,
+ "schannel: encrypted data buffer: offset %zu length %zu\n",
+ BACKEND->encdata_offset, BACKEND->encdata_length));
/* read encrypted data from socket */
*err = Curl_read_plain(conn->sock[sockindex],
@@ -1675,7 +1694,8 @@ schannel_recv(struct connectdata *conn, int sockindex,
if(*err) {
nread = -1;
if(*err == CURLE_AGAIN)
- infof(data, "schannel: Curl_read_plain returned CURLE_AGAIN\n");
+ DEBUGF(infof(data,
+ "schannel: Curl_read_plain returned CURLE_AGAIN\n"));
else if(*err == CURLE_RECV_ERROR)
infof(data, "schannel: Curl_read_plain returned CURLE_RECV_ERROR\n");
else
@@ -1683,17 +1703,18 @@ schannel_recv(struct connectdata *conn, int sockindex,
}
else if(nread == 0) {
BACKEND->recv_connection_closed = true;
- infof(data, "schannel: server closed the connection\n");
+ DEBUGF(infof(data, "schannel: server closed the connection\n"));
}
else if(nread > 0) {
BACKEND->encdata_offset += (size_t)nread;
BACKEND->encdata_is_incomplete = false;
- infof(data, "schannel: encrypted data got %zd\n", nread);
+ DEBUGF(infof(data, "schannel: encrypted data got %zd\n", nread));
}
}
- infof(data, "schannel: encrypted data buffer: offset %zu length %zu\n",
- BACKEND->encdata_offset, BACKEND->encdata_length);
+ DEBUGF(infof(data,
+ "schannel: encrypted data buffer: offset %zu length %zu\n",
+ BACKEND->encdata_offset, BACKEND->encdata_length));
/* decrypt loop */
while(BACKEND->encdata_offset > 0 && sspi_status == SEC_E_OK &&
@@ -1721,8 +1742,8 @@ schannel_recv(struct connectdata *conn, int sockindex,
/* check for successfully decrypted data, even before actual
renegotiation or shutdown of the connection context */
if(inbuf[1].BufferType == SECBUFFER_DATA) {
- infof(data, "schannel: decrypted data length: %lu\n",
- inbuf[1].cbBuffer);
+ DEBUGF(infof(data, "schannel: decrypted data length: %lu\n",
+ inbuf[1].cbBuffer));
/* increase buffer in order to fit the received amount of data */
size = inbuf[1].cbBuffer > CURL_SCHANNEL_BUFFER_FREE_SIZE ?
@@ -1754,15 +1775,16 @@ schannel_recv(struct connectdata *conn, int sockindex,
BACKEND->decdata_offset += size;
}
- infof(data, "schannel: decrypted data added: %zu\n", size);
- infof(data, "schannel: decrypted data cached: offset %zu length %zu\n",
- BACKEND->decdata_offset, BACKEND->decdata_length);
+ DEBUGF(infof(data, "schannel: decrypted data added: %zu\n", size));
+ DEBUGF(infof(data,
+ "schannel: decrypted cached: offset %zu length %zu\n",
+ BACKEND->decdata_offset, BACKEND->decdata_length));
}
/* check for remaining encrypted data */
if(inbuf[3].BufferType == SECBUFFER_EXTRA && inbuf[3].cbBuffer > 0) {
- infof(data, "schannel: encrypted data length: %lu\n",
- inbuf[3].cbBuffer);
+ DEBUGF(infof(data, "schannel: encrypted data length: %lu\n",
+ inbuf[3].cbBuffer));
/* check if the remaining data is less than the total amount
* and therefore begins after the already processed data
@@ -1776,8 +1798,9 @@ schannel_recv(struct connectdata *conn, int sockindex,
BACKEND->encdata_offset = inbuf[3].cbBuffer;
}
- infof(data, "schannel: encrypted data cached: offset %zu length %zu\n",
- BACKEND->encdata_offset, BACKEND->encdata_length);
+ DEBUGF(infof(data,
+ "schannel: encrypted cached: offset %zu length %zu\n",
+ BACKEND->encdata_offset, BACKEND->encdata_length));
}
else {
/* reset encrypted buffer offset, because there is no data remaining */
@@ -1831,22 +1854,25 @@ schannel_recv(struct connectdata *conn, int sockindex,
goto cleanup;
}
else {
+ char buffer[STRERROR_LEN];
*err = CURLE_RECV_ERROR;
infof(data, "schannel: failed to read data from server: %s\n",
- Curl_sspi_strerror(conn, sspi_status));
+ Curl_sspi_strerror(sspi_status, buffer, sizeof(buffer)));
goto cleanup;
}
}
- infof(data, "schannel: encrypted data buffer: offset %zu length %zu\n",
- BACKEND->encdata_offset, BACKEND->encdata_length);
+ DEBUGF(infof(data,
+ "schannel: encrypted data buffer: offset %zu length %zu\n",
+ BACKEND->encdata_offset, BACKEND->encdata_length));
- infof(data, "schannel: decrypted data buffer: offset %zu length %zu\n",
- BACKEND->decdata_offset, BACKEND->decdata_length);
+ DEBUGF(infof(data,
+ "schannel: decrypted data buffer: offset %zu length %zu\n",
+ BACKEND->decdata_offset, BACKEND->decdata_length));
cleanup:
/* Warning- there is no guarantee the encdata state is valid at this point */
- infof(data, "schannel: schannel_recv cleanup\n");
+ DEBUGF(infof(data, "schannel: schannel_recv cleanup\n"));
/* Error if the connection has closed without a close_notify.
Behavior here is a matter of debate. We don't want to be vulnerable to a
@@ -1879,10 +1905,10 @@ cleanup:
memmove(BACKEND->decdata_buffer, BACKEND->decdata_buffer + size,
BACKEND->decdata_offset - size);
BACKEND->decdata_offset -= size;
-
- infof(data, "schannel: decrypted data returned %zu\n", size);
- infof(data, "schannel: decrypted data buffer: offset %zu length %zu\n",
- BACKEND->decdata_offset, BACKEND->decdata_length);
+ DEBUGF(infof(data, "schannel: decrypted data returned %zu\n", size));
+ DEBUGF(infof(data,
+ "schannel: decrypted data buffer: offset %zu length %zu\n",
+ BACKEND->decdata_offset, BACKEND->decdata_length));
*err = CURLE_OK;
return (ssize_t)size;
}
@@ -1960,6 +1986,8 @@ static int Curl_schannel_shutdown(struct connectdata *conn, int sockindex)
char * const hostname = SSL_IS_PROXY() ? conn->http_proxy.host.name :
conn->host.name;
+ DEBUGASSERT(data);
+
infof(data, "schannel: shutting down SSL/TLS connection with %s port %hu\n",
hostname, conn->remote_port);
@@ -1979,9 +2007,11 @@ static int Curl_schannel_shutdown(struct connectdata *conn, int sockindex)
sspi_status = s_pSecFn->ApplyControlToken(&BACKEND->ctxt->ctxt_handle,
&BuffDesc);
- if(sspi_status != SEC_E_OK)
+ if(sspi_status != SEC_E_OK) {
+ char buffer[STRERROR_LEN];
failf(data, "schannel: ApplyControlToken failure: %s",
- Curl_sspi_strerror(conn, sspi_status));
+ Curl_sspi_strerror(sspi_status, buffer, sizeof(buffer)));
+ }
host_name = Curl_convert_UTF8_to_tchar(hostname);
if(!host_name)
@@ -2023,7 +2053,7 @@ static int Curl_schannel_shutdown(struct connectdata *conn, int sockindex)
/* free SSPI Schannel API security context handle */
if(BACKEND->ctxt) {
- infof(data, "schannel: clear security context handle\n");
+ DEBUGF(infof(data, "schannel: clear security context handle\n"));
s_pSecFn->DeleteSecurityContext(&BACKEND->ctxt->ctxt_handle);
Curl_safefree(BACKEND->ctxt);
}
@@ -2035,11 +2065,9 @@ static int Curl_schannel_shutdown(struct connectdata *conn, int sockindex)
* might not have an associated transfer so the check for conn->data is
* necessary.
*/
- if(conn->data)
- Curl_ssl_sessionid_lock(conn);
+ Curl_ssl_sessionid_lock(conn);
Curl_schannel_session_free(BACKEND->cred);
- if(conn->data)
- Curl_ssl_sessionid_unlock(conn);
+ Curl_ssl_sessionid_unlock(conn);
BACKEND->cred = NULL;
}
@@ -2101,7 +2129,7 @@ static CURLcode Curl_schannel_random(struct Curl_easy *data UNUSED_PARAM,
static CURLcode pkp_pin_peer_pubkey(struct connectdata *conn, int sockindex,
const char *pinnedpubkey)
{
- SECURITY_STATUS status;
+ SECURITY_STATUS sspi_status;
struct Curl_easy *data = conn->data;
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
CERT_CONTEXT *pCertContextServer = NULL;
@@ -2118,13 +2146,15 @@ static CURLcode pkp_pin_peer_pubkey(struct connectdata *conn, int sockindex,
return CURLE_OK;
do {
- status = s_pSecFn->QueryContextAttributes(&BACKEND->ctxt->ctxt_handle,
- SECPKG_ATTR_REMOTE_CERT_CONTEXT,
- &pCertContextServer);
+ sspi_status =
+ s_pSecFn->QueryContextAttributes(&BACKEND->ctxt->ctxt_handle,
+ SECPKG_ATTR_REMOTE_CERT_CONTEXT,
+ &pCertContextServer);
- if((status != SEC_E_OK) || (pCertContextServer == NULL)) {
+ if((sspi_status != SEC_E_OK) || (pCertContextServer == NULL)) {
+ char buffer[STRERROR_LEN];
failf(data, "schannel: Failed to read remote certificate context: %s",
- Curl_sspi_strerror(conn, status));
+ Curl_sspi_strerror(sspi_status, buffer, sizeof(buffer)));
break; /* failed */
}
diff --git a/lib/vtls/schannel_verify.c b/lib/vtls/schannel_verify.c
index 680f6ec5..5a09e969 100644
--- a/lib/vtls/schannel_verify.c
+++ b/lib/vtls/schannel_verify.c
@@ -96,9 +96,10 @@ static CURLcode add_certs_to_store(HCERTSTORE trust_store,
ca_file_tstr = Curl_convert_UTF8_to_tchar((char *)ca_file);
if(!ca_file_tstr) {
+ char buffer[STRERROR_LEN];
failf(data,
"schannel: invalid path name for CA file '%s': %s",
- ca_file, Curl_strerror(conn, GetLastError()));
+ ca_file, Curl_strerror(GetLastError(), buffer, sizeof(buffer)));
result = CURLE_SSL_CACERT_BADFILE;
goto cleanup;
}
@@ -116,17 +117,19 @@ static CURLcode add_certs_to_store(HCERTSTORE trust_store,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(ca_file_handle == INVALID_HANDLE_VALUE) {
+ char buffer[STRERROR_LEN];
failf(data,
"schannel: failed to open CA file '%s': %s",
- ca_file, Curl_strerror(conn, GetLastError()));
+ ca_file, Curl_strerror(GetLastError(), buffer, sizeof(buffer)));
result = CURLE_SSL_CACERT_BADFILE;
goto cleanup;
}
if(!GetFileSizeEx(ca_file_handle, &file_size)) {
+ char buffer[STRERROR_LEN];
failf(data,
"schannel: failed to determine size of CA file '%s': %s",
- ca_file, Curl_strerror(conn, GetLastError()));
+ ca_file, Curl_strerror(GetLastError(), buffer, sizeof(buffer)));
result = CURLE_SSL_CACERT_BADFILE;
goto cleanup;
}
@@ -153,10 +156,10 @@ static CURLcode add_certs_to_store(HCERTSTORE trust_store,
if(!ReadFile(ca_file_handle, ca_file_buffer + total_bytes_read,
bytes_to_read, &bytes_read, NULL)) {
-
+ char buffer[STRERROR_LEN];
failf(data,
"schannel: failed to read from CA file '%s': %s",
- ca_file, Curl_strerror(conn, GetLastError()));
+ ca_file, Curl_strerror(GetLastError(), buffer, sizeof(buffer)));
result = CURLE_SSL_CACERT_BADFILE;
goto cleanup;
}
@@ -215,11 +218,12 @@ static CURLcode add_certs_to_store(HCERTSTORE trust_store,
NULL,
NULL,
(const void **)&cert_context)) {
-
+ char buffer[STRERROR_LEN];
failf(data,
"schannel: failed to extract certificate from CA file "
"'%s': %s",
- ca_file, Curl_strerror(conn, GetLastError()));
+ ca_file,
+ Curl_strerror(GetLastError(), buffer, sizeof(buffer)));
result = CURLE_SSL_CACERT_BADFILE;
more_certs = 0;
}
@@ -243,10 +247,12 @@ static CURLcode add_certs_to_store(HCERTSTORE trust_store,
NULL);
CertFreeCertificateContext(cert_context);
if(!add_cert_result) {
+ char buffer[STRERROR_LEN];
failf(data,
"schannel: failed to add certificate from CA file '%s' "
"to certificate store: %s",
- ca_file, Curl_strerror(conn, GetLastError()));
+ ca_file,
+ Curl_strerror(GetLastError(), buffer, sizeof(buffer)));
result = CURLE_SSL_CACERT_BADFILE;
more_certs = 0;
}
@@ -408,7 +414,7 @@ cleanup:
CURLcode Curl_verify_certificate(struct connectdata *conn, int sockindex)
{
- SECURITY_STATUS status;
+ SECURITY_STATUS sspi_status;
struct Curl_easy *data = conn->data;
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
CURLcode result = CURLE_OK;
@@ -420,13 +426,15 @@ CURLcode Curl_verify_certificate(struct connectdata *conn, int sockindex)
conn->http_proxy.host.name :
conn->host.name;
- status = s_pSecFn->QueryContextAttributes(&BACKEND->ctxt->ctxt_handle,
- SECPKG_ATTR_REMOTE_CERT_CONTEXT,
- &pCertContextServer);
+ sspi_status =
+ s_pSecFn->QueryContextAttributes(&BACKEND->ctxt->ctxt_handle,
+ SECPKG_ATTR_REMOTE_CERT_CONTEXT,
+ &pCertContextServer);
- if((status != SEC_E_OK) || (pCertContextServer == NULL)) {
+ if((sspi_status != SEC_E_OK) || (pCertContextServer == NULL)) {
+ char buffer[STRERROR_LEN];
failf(data, "schannel: Failed to read remote certificate context: %s",
- Curl_sspi_strerror(conn, status));
+ Curl_sspi_strerror(sspi_status, buffer, sizeof(buffer)));
result = CURLE_PEER_FAILED_VERIFICATION;
}
@@ -450,8 +458,9 @@ CURLcode Curl_verify_certificate(struct connectdata *conn, int sockindex)
CERT_STORE_CREATE_NEW_FLAG,
NULL);
if(!trust_store) {
+ char buffer[STRERROR_LEN];
failf(data, "schannel: failed to create certificate store: %s",
- Curl_strerror(conn, GetLastError()));
+ Curl_strerror(GetLastError(), buffer, sizeof(buffer)));
result = CURLE_SSL_CACERT_BADFILE;
}
else {
@@ -477,9 +486,10 @@ CURLcode Curl_verify_certificate(struct connectdata *conn, int sockindex)
CertCreateCertificateChainEngine(
(CERT_CHAIN_ENGINE_CONFIG *)&engine_config, &cert_chain_engine);
if(!create_engine_result) {
+ char buffer[STRERROR_LEN];
failf(data,
"schannel: failed to create certificate chain engine: %s",
- Curl_strerror(conn, GetLastError()));
+ Curl_strerror(GetLastError(), buffer, sizeof(buffer)));
result = CURLE_SSL_CACERT_BADFILE;
}
}
@@ -500,8 +510,9 @@ CURLcode Curl_verify_certificate(struct connectdata *conn, int sockindex)
CERT_CHAIN_REVOCATION_CHECK_CHAIN),
NULL,
&pChainContext)) {
+ char buffer[STRERROR_LEN];
failf(data, "schannel: CertGetCertificateChain failed: %s",
- Curl_sspi_strerror(conn, GetLastError()));
+ Curl_strerror(GetLastError(), buffer, sizeof(buffer)));
pChainContext = NULL;
result = CURLE_PEER_FAILED_VERIFICATION;
}
diff --git a/lib/vtls/darwinssl.c b/lib/vtls/sectransp.c
index bb251cdb..971dd78e 100644
--- a/lib/vtls/darwinssl.c
+++ b/lib/vtls/sectransp.c
@@ -6,7 +6,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2012 - 2017, Nick Zitzmann, <nickzman@gmail.com>.
- * Copyright (C) 2012 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -32,7 +32,7 @@
#include "curl_base64.h"
#include "strtok.h"
-#ifdef USE_DARWINSSL
+#ifdef USE_SECTRANSP
#ifdef __clang__
#pragma clang diagnostic push
@@ -59,7 +59,7 @@
#if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE))
#if MAC_OS_X_VERSION_MAX_ALLOWED < 1050
-#error "The darwinssl back-end requires Leopard or later."
+#error "The Secure Transport back-end requires Leopard or later."
#endif /* MAC_OS_X_VERSION_MAX_ALLOWED < 1050 */
#define CURL_BUILD_IOS 0
@@ -105,7 +105,7 @@
#define CURL_SUPPORT_MAC_10_9 0
#else
-#error "The darwinssl back-end requires iOS or OS X."
+#error "The Secure Transport back-end requires iOS or macOS."
#endif /* (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)) */
#if CURL_BUILD_MAC
@@ -118,7 +118,7 @@
#include "connect.h"
#include "select.h"
#include "vtls.h"
-#include "darwinssl.h"
+#include "sectransp.h"
#include "curl_printf.h"
#include "strdup.h"
@@ -144,20 +144,20 @@ struct ssl_backend_data {
/* version 1 supports macOS 10.12+ and iOS 10+ */
#if ((TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MIN_REQUIRED >= 100000) || \
(!TARGET_OS_IPHONE && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101200))
-#define DARWIN_SSL_PINNEDPUBKEY_V1 1
+#define SECTRANSP_PINNEDPUBKEY_V1 1
#endif
/* version 2 supports MacOSX 10.7+ */
#if (!TARGET_OS_IPHONE && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070)
-#define DARWIN_SSL_PINNEDPUBKEY_V2 1
+#define SECTRANSP_PINNEDPUBKEY_V2 1
#endif
-#if defined(DARWIN_SSL_PINNEDPUBKEY_V1) || defined(DARWIN_SSL_PINNEDPUBKEY_V2)
+#if defined(SECTRANSP_PINNEDPUBKEY_V1) || defined(SECTRANSP_PINNEDPUBKEY_V2)
/* this backend supports CURLOPT_PINNEDPUBLICKEY */
-#define DARWIN_SSL_PINNEDPUBKEY 1
-#endif /* DARWIN_SSL_PINNEDPUBKEY */
+#define SECTRANSP_PINNEDPUBKEY 1
+#endif /* SECTRANSP_PINNEDPUBKEY */
-#ifdef DARWIN_SSL_PINNEDPUBKEY
+#ifdef SECTRANSP_PINNEDPUBKEY
/* both new and old APIs return rsa keys missing the spki header (not DER) */
static const unsigned char rsa4096SpkiHeader[] = {
0x30, 0x82, 0x02, 0x22, 0x30, 0x0d,
@@ -170,7 +170,7 @@ static const unsigned char rsa2048SpkiHeader[] = {
0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05,
0x00, 0x03, 0x82, 0x01, 0x0f, 0x00};
-#ifdef DARWIN_SSL_PINNEDPUBKEY_V1
+#ifdef SECTRANSP_PINNEDPUBKEY_V1
/* the *new* version doesn't return DER encoded ecdsa certs like the old... */
static const unsigned char ecDsaSecp256r1SpkiHeader[] = {
0x30, 0x59, 0x30, 0x13, 0x06, 0x07,
@@ -184,8 +184,8 @@ static const unsigned char ecDsaSecp384r1SpkiHeader[] = {
0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02,
0x01, 0x06, 0x05, 0x2b, 0x81, 0x04,
0x00, 0x22, 0x03, 0x62, 0x00};
-#endif /* DARWIN_SSL_PINNEDPUBKEY_V1 */
-#endif /* DARWIN_SSL_PINNEDPUBKEY */
+#endif /* SECTRANSP_PINNEDPUBKEY_V1 */
+#endif /* SECTRANSP_PINNEDPUBKEY */
/* The following two functions were ripped from Apple sample code,
* with some modifications: */
@@ -1242,7 +1242,7 @@ CF_INLINE bool is_file(const char *filename)
}
#if CURL_BUILD_MAC_10_8 || CURL_BUILD_IOS
-static CURLcode darwinssl_version_from_curl(SSLProtocol *darwinver,
+static CURLcode sectransp_version_from_curl(SSLProtocol *darwinver,
long ssl_version)
{
switch(ssl_version) {
@@ -1312,13 +1312,13 @@ set_ssl_version_min_max(struct connectdata *conn, int sockindex)
if(SSLSetProtocolVersionMax != NULL) {
SSLProtocol darwin_ver_min = kTLSProtocol1;
SSLProtocol darwin_ver_max = kTLSProtocol1;
- CURLcode result = darwinssl_version_from_curl(&darwin_ver_min,
+ CURLcode result = sectransp_version_from_curl(&darwin_ver_min,
ssl_version);
if(result) {
failf(data, "unsupported min version passed via CURLOPT_SSLVERSION");
return result;
}
- result = darwinssl_version_from_curl(&darwin_ver_max,
+ result = sectransp_version_from_curl(&darwin_ver_max,
ssl_version_max >> 16);
if(result) {
failf(data, "unsupported max version passed via CURLOPT_SSLVERSION");
@@ -1361,12 +1361,12 @@ set_ssl_version_min_max(struct connectdata *conn, int sockindex)
#endif /* CURL_SUPPORT_MAC_10_8 */
}
#endif /* CURL_BUILD_MAC_10_8 || CURL_BUILD_IOS */
- failf(data, "DarwinSSL: cannot set SSL protocol");
+ failf(data, "Secure Transport: cannot set SSL protocol");
return CURLE_SSL_CONNECT_ERROR;
}
-static CURLcode darwinssl_connect_step1(struct connectdata *conn,
+static CURLcode sectransp_connect_step1(struct connectdata *conn,
int sockindex)
{
struct Curl_easy *data = conn->data;
@@ -1577,7 +1577,7 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn,
#if (CURL_BUILD_MAC_10_13 || CURL_BUILD_IOS_11) && HAVE_BUILTIN_AVAILABLE == 1
if(conn->bits.tls_enable_alpn) {
- if(__builtin_available(macOS 10.13.4, iOS 11, *)) {
+ if(__builtin_available(macOS 10.13.4, iOS 11, tvOS 11, *)) {
CFMutableArrayRef alpnArr = CFArrayCreateMutable(NULL, 0,
&kCFTypeArrayCallBacks);
@@ -2234,7 +2234,7 @@ static int verify_cert(const char *cafile, struct Curl_easy *data,
}
}
-#ifdef DARWIN_SSL_PINNEDPUBKEY
+#ifdef SECTRANSP_PINNEDPUBKEY
static CURLcode pkp_pin_peer_pubkey(struct Curl_easy *data,
SSLContextRef ctx,
const char *pinnedpubkey)
@@ -2266,14 +2266,14 @@ static CURLcode pkp_pin_peer_pubkey(struct Curl_easy *data,
if(keyRef == NULL)
break;
-#ifdef DARWIN_SSL_PINNEDPUBKEY_V1
+#ifdef SECTRANSP_PINNEDPUBKEY_V1
publicKeyBits = SecKeyCopyExternalRepresentation(keyRef, NULL);
CFRelease(keyRef);
if(publicKeyBits == NULL)
break;
-#elif DARWIN_SSL_PINNEDPUBKEY_V2
+#elif SECTRANSP_PINNEDPUBKEY_V2
OSStatus success = SecItemExport(keyRef, kSecFormatOpenSSL, 0, NULL,
&publicKeyBits);
@@ -2281,7 +2281,7 @@ static CURLcode pkp_pin_peer_pubkey(struct Curl_easy *data,
if(success != errSecSuccess || publicKeyBits == NULL)
break;
-#endif /* DARWIN_SSL_PINNEDPUBKEY_V2 */
+#endif /* SECTRANSP_PINNEDPUBKEY_V2 */
pubkeylen = CFDataGetLength(publicKeyBits);
pubkey = (unsigned char *)CFDataGetBytePtr(publicKeyBits);
@@ -2295,7 +2295,7 @@ static CURLcode pkp_pin_peer_pubkey(struct Curl_easy *data,
/* 2048 bit RSA pubkeylen == 270 */
spkiHeader = rsa2048SpkiHeader;
break;
-#ifdef DARWIN_SSL_PINNEDPUBKEY_V1
+#ifdef SECTRANSP_PINNEDPUBKEY_V1
case 65:
/* ecDSA secp256r1 pubkeylen == 65 */
spkiHeader = ecDsaSecp256r1SpkiHeader;
@@ -2308,7 +2308,7 @@ static CURLcode pkp_pin_peer_pubkey(struct Curl_easy *data,
break;
default:
infof(data, "SSL: unhandled public key length: %d\n", pubkeylen);
-#elif DARWIN_SSL_PINNEDPUBKEY_V2
+#elif SECTRANSP_PINNEDPUBKEY_V2
default:
/* ecDSA secp256r1 pubkeylen == 91 header already included?
* ecDSA secp384r1 header already included too
@@ -2316,7 +2316,7 @@ static CURLcode pkp_pin_peer_pubkey(struct Curl_easy *data,
*/
result = Curl_pin_peer_pubkey(data, pinnedpubkey, pubkey,
pubkeylen);
-#endif /* DARWIN_SSL_PINNEDPUBKEY_V2 */
+#endif /* SECTRANSP_PINNEDPUBKEY_V2 */
continue; /* break from loop */
}
@@ -2339,10 +2339,10 @@ static CURLcode pkp_pin_peer_pubkey(struct Curl_easy *data,
return result;
}
-#endif /* DARWIN_SSL_PINNEDPUBKEY */
+#endif /* SECTRANSP_PINNEDPUBKEY */
static CURLcode
-darwinssl_connect_step2(struct connectdata *conn, int sockindex)
+sectransp_connect_step2(struct connectdata *conn, int sockindex)
{
struct Curl_easy *data = conn->data;
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
@@ -2376,7 +2376,7 @@ darwinssl_connect_step2(struct connectdata *conn, int sockindex)
return res;
}
/* the documentation says we need to call SSLHandshake() again */
- return darwinssl_connect_step2(conn, sockindex);
+ return sectransp_connect_step2(conn, sockindex);
/* Problem with encrypt / decrypt */
case errSSLPeerDecodeError:
@@ -2578,7 +2578,7 @@ darwinssl_connect_step2(struct connectdata *conn, int sockindex)
/* we have been connected fine, we're not waiting for anything else. */
connssl->connecting_state = ssl_connect_3;
-#ifdef DARWIN_SSL_PINNEDPUBKEY
+#ifdef SECTRANSP_PINNEDPUBKEY
if(data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG]) {
CURLcode result = pkp_pin_peer_pubkey(data, BACKEND->ssl_ctx,
data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG]);
@@ -2587,7 +2587,7 @@ darwinssl_connect_step2(struct connectdata *conn, int sockindex)
return result;
}
}
-#endif /* DARWIN_SSL_PINNEDPUBKEY */
+#endif /* SECTRANSP_PINNEDPUBKEY */
/* Informational message */
(void)SSLGetNegotiatedCipher(BACKEND->ssl_ctx, &cipher);
@@ -2628,7 +2628,7 @@ darwinssl_connect_step2(struct connectdata *conn, int sockindex)
#if(CURL_BUILD_MAC_10_13 || CURL_BUILD_IOS_11) && HAVE_BUILTIN_AVAILABLE == 1
if(conn->bits.tls_enable_alpn) {
- if(__builtin_available(macOS 10.13.4, iOS 11, *)) {
+ if(__builtin_available(macOS 10.13.4, iOS 11, tvOS 11, *)) {
CFArrayRef alpnArr = NULL;
CFStringRef chosenProtocol = NULL;
err = SSLCopyALPNProtocols(BACKEND->ssl_ctx, &alpnArr);
@@ -2771,7 +2771,7 @@ show_verbose_server_cert(struct connectdata *conn,
#endif /* !CURL_DISABLE_VERBOSE_STRINGS */
static CURLcode
-darwinssl_connect_step3(struct connectdata *conn,
+sectransp_connect_step3(struct connectdata *conn,
int sockindex)
{
struct Curl_easy *data = conn->data;
@@ -2789,11 +2789,11 @@ darwinssl_connect_step3(struct connectdata *conn,
return CURLE_OK;
}
-static Curl_recv darwinssl_recv;
-static Curl_send darwinssl_send;
+static Curl_recv sectransp_recv;
+static Curl_send sectransp_send;
static CURLcode
-darwinssl_connect_common(struct connectdata *conn,
+sectransp_connect_common(struct connectdata *conn,
int sockindex,
bool nonblocking,
bool *done)
@@ -2821,7 +2821,7 @@ darwinssl_connect_common(struct connectdata *conn,
return CURLE_OPERATION_TIMEDOUT;
}
- result = darwinssl_connect_step1(conn, sockindex);
+ result = sectransp_connect_step1(conn, sockindex);
if(result)
return result;
}
@@ -2875,7 +2875,7 @@ darwinssl_connect_common(struct connectdata *conn,
* before step2 has completed while ensuring that a client using select()
* or epoll() will always have a valid fdset to wait on.
*/
- result = darwinssl_connect_step2(conn, sockindex);
+ result = sectransp_connect_step2(conn, sockindex);
if(result || (nonblocking &&
(ssl_connect_2 == connssl->connecting_state ||
ssl_connect_2_reading == connssl->connecting_state ||
@@ -2886,15 +2886,15 @@ darwinssl_connect_common(struct connectdata *conn,
if(ssl_connect_3 == connssl->connecting_state) {
- result = darwinssl_connect_step3(conn, sockindex);
+ result = sectransp_connect_step3(conn, sockindex);
if(result)
return result;
}
if(ssl_connect_done == connssl->connecting_state) {
connssl->state = ssl_connection_complete;
- conn->recv[sockindex] = darwinssl_recv;
- conn->send[sockindex] = darwinssl_send;
+ conn->recv[sockindex] = sectransp_recv;
+ conn->send[sockindex] = sectransp_send;
*done = TRUE;
}
else
@@ -2906,18 +2906,18 @@ darwinssl_connect_common(struct connectdata *conn,
return CURLE_OK;
}
-static CURLcode Curl_darwinssl_connect_nonblocking(struct connectdata *conn,
+static CURLcode Curl_sectransp_connect_nonblocking(struct connectdata *conn,
int sockindex, bool *done)
{
- return darwinssl_connect_common(conn, sockindex, TRUE, done);
+ return sectransp_connect_common(conn, sockindex, TRUE, done);
}
-static CURLcode Curl_darwinssl_connect(struct connectdata *conn, int sockindex)
+static CURLcode Curl_sectransp_connect(struct connectdata *conn, int sockindex)
{
CURLcode result;
bool done = FALSE;
- result = darwinssl_connect_common(conn, sockindex, FALSE, &done);
+ result = sectransp_connect_common(conn, sockindex, FALSE, &done);
if(result)
return result;
@@ -2927,7 +2927,7 @@ static CURLcode Curl_darwinssl_connect(struct connectdata *conn, int sockindex)
return CURLE_OK;
}
-static void Curl_darwinssl_close(struct connectdata *conn, int sockindex)
+static void Curl_sectransp_close(struct connectdata *conn, int sockindex)
{
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
@@ -2948,7 +2948,7 @@ static void Curl_darwinssl_close(struct connectdata *conn, int sockindex)
BACKEND->ssl_sockfd = 0;
}
-static int Curl_darwinssl_shutdown(struct connectdata *conn, int sockindex)
+static int Curl_sectransp_shutdown(struct connectdata *conn, int sockindex)
{
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
struct Curl_easy *data = conn->data;
@@ -2963,7 +2963,7 @@ static int Curl_darwinssl_shutdown(struct connectdata *conn, int sockindex)
if(data->set.ftp_ccc != CURLFTPSSL_CCC_ACTIVE)
return 0;
- Curl_darwinssl_close(conn, sockindex);
+ Curl_sectransp_close(conn, sockindex);
rc = 0;
@@ -3001,18 +3001,18 @@ static int Curl_darwinssl_shutdown(struct connectdata *conn, int sockindex)
return rc;
}
-static void Curl_darwinssl_session_free(void *ptr)
+static void Curl_sectransp_session_free(void *ptr)
{
/* ST, as of iOS 5 and Mountain Lion, has no public method of deleting a
cached session ID inside the Security framework. There is a private
function that does this, but I don't want to have to explain to you why I
got your application rejected from the App Store due to the use of a
private API, so the best we can do is free up our own char array that we
- created way back in darwinssl_connect_step1... */
+ created way back in sectransp_connect_step1... */
Curl_safefree(ptr);
}
-static size_t Curl_darwinssl_version(char *buffer, size_t size)
+static size_t Curl_sectransp_version(char *buffer, size_t size)
{
return msnprintf(buffer, size, "SecureTransport");
}
@@ -3025,7 +3025,7 @@ static size_t Curl_darwinssl_version(char *buffer, size_t size)
* 0 means the connection has been closed
* -1 means the connection status is unknown
*/
-static int Curl_darwinssl_check_cxn(struct connectdata *conn)
+static int Curl_sectransp_check_cxn(struct connectdata *conn)
{
struct ssl_connect_data *connssl = &conn->ssl[FIRSTSOCKET];
OSStatus err;
@@ -3040,7 +3040,7 @@ static int Curl_darwinssl_check_cxn(struct connectdata *conn)
return 0;
}
-static bool Curl_darwinssl_data_pending(const struct connectdata *conn,
+static bool Curl_sectransp_data_pending(const struct connectdata *conn,
int connindex)
{
const struct ssl_connect_data *connssl = &conn->ssl[connindex];
@@ -3057,7 +3057,7 @@ static bool Curl_darwinssl_data_pending(const struct connectdata *conn,
return false;
}
-static CURLcode Curl_darwinssl_random(struct Curl_easy *data UNUSED_PARAM,
+static CURLcode Curl_sectransp_random(struct Curl_easy *data UNUSED_PARAM,
unsigned char *entropy, size_t length)
{
/* arc4random_buf() isn't available on cats older than Lion, so let's
@@ -3077,7 +3077,7 @@ static CURLcode Curl_darwinssl_random(struct Curl_easy *data UNUSED_PARAM,
return CURLE_OK;
}
-static CURLcode Curl_darwinssl_md5sum(unsigned char *tmp, /* input */
+static CURLcode Curl_sectransp_md5sum(unsigned char *tmp, /* input */
size_t tmplen,
unsigned char *md5sum, /* output */
size_t md5len)
@@ -3087,7 +3087,7 @@ static CURLcode Curl_darwinssl_md5sum(unsigned char *tmp, /* input */
return CURLE_OK;
}
-static CURLcode Curl_darwinssl_sha256sum(const unsigned char *tmp, /* input */
+static CURLcode Curl_sectransp_sha256sum(const unsigned char *tmp, /* input */
size_t tmplen,
unsigned char *sha256sum, /* output */
size_t sha256len)
@@ -3097,7 +3097,7 @@ static CURLcode Curl_darwinssl_sha256sum(const unsigned char *tmp, /* input */
return CURLE_OK;
}
-static bool Curl_darwinssl_false_start(void)
+static bool Curl_sectransp_false_start(void)
{
#if CURL_BUILD_MAC_10_9 || CURL_BUILD_IOS_7
if(SSLSetSessionOption != NULL)
@@ -3106,7 +3106,7 @@ static bool Curl_darwinssl_false_start(void)
return FALSE;
}
-static ssize_t darwinssl_send(struct connectdata *conn,
+static ssize_t sectransp_send(struct connectdata *conn,
int sockindex,
const void *mem,
size_t len,
@@ -3172,7 +3172,7 @@ static ssize_t darwinssl_send(struct connectdata *conn,
return (ssize_t)processed;
}
-static ssize_t darwinssl_recv(struct connectdata *conn,
+static ssize_t sectransp_recv(struct connectdata *conn,
int num,
char *buf,
size_t buffersize,
@@ -3212,48 +3212,48 @@ static ssize_t darwinssl_recv(struct connectdata *conn,
return (ssize_t)processed;
}
-static void *Curl_darwinssl_get_internals(struct ssl_connect_data *connssl,
+static void *Curl_sectransp_get_internals(struct ssl_connect_data *connssl,
CURLINFO info UNUSED_PARAM)
{
(void)info;
return BACKEND->ssl_ctx;
}
-const struct Curl_ssl Curl_ssl_darwinssl = {
- { CURLSSLBACKEND_DARWINSSL, "darwinssl" }, /* info */
+const struct Curl_ssl Curl_ssl_sectransp = {
+ { CURLSSLBACKEND_SECURETRANSPORT, "secure-transport" }, /* info */
-#ifdef DARWIN_SSL_PINNEDPUBKEY
+#ifdef SECTRANSP_PINNEDPUBKEY
SSLSUPP_PINNEDPUBKEY,
#else
0,
-#endif /* DARWIN_SSL_PINNEDPUBKEY */
+#endif /* SECTRANSP_PINNEDPUBKEY */
sizeof(struct ssl_backend_data),
Curl_none_init, /* init */
Curl_none_cleanup, /* cleanup */
- Curl_darwinssl_version, /* version */
- Curl_darwinssl_check_cxn, /* check_cxn */
- Curl_darwinssl_shutdown, /* shutdown */
- Curl_darwinssl_data_pending, /* data_pending */
- Curl_darwinssl_random, /* random */
+ Curl_sectransp_version, /* version */
+ Curl_sectransp_check_cxn, /* check_cxn */
+ Curl_sectransp_shutdown, /* shutdown */
+ Curl_sectransp_data_pending, /* data_pending */
+ Curl_sectransp_random, /* random */
Curl_none_cert_status_request, /* cert_status_request */
- Curl_darwinssl_connect, /* connect */
- Curl_darwinssl_connect_nonblocking, /* connect_nonblocking */
- Curl_darwinssl_get_internals, /* get_internals */
- Curl_darwinssl_close, /* close_one */
+ Curl_sectransp_connect, /* connect */
+ Curl_sectransp_connect_nonblocking, /* connect_nonblocking */
+ Curl_sectransp_get_internals, /* get_internals */
+ Curl_sectransp_close, /* close_one */
Curl_none_close_all, /* close_all */
- Curl_darwinssl_session_free, /* session_free */
+ Curl_sectransp_session_free, /* session_free */
Curl_none_set_engine, /* set_engine */
Curl_none_set_engine_default, /* set_engine_default */
Curl_none_engines_list, /* engines_list */
- Curl_darwinssl_false_start, /* false_start */
- Curl_darwinssl_md5sum, /* md5sum */
- Curl_darwinssl_sha256sum /* sha256sum */
+ Curl_sectransp_false_start, /* false_start */
+ Curl_sectransp_md5sum, /* md5sum */
+ Curl_sectransp_sha256sum /* sha256sum */
};
#ifdef __clang__
#pragma clang diagnostic pop
#endif
-#endif /* USE_DARWINSSL */
+#endif /* USE_SECTRANSP */
diff --git a/lib/vtls/darwinssl.h b/lib/vtls/sectransp.h
index 23c7f705..5cec797b 100644
--- a/lib/vtls/darwinssl.h
+++ b/lib/vtls/sectransp.h
@@ -1,5 +1,5 @@
-#ifndef HEADER_CURL_DARWINSSL_H
-#define HEADER_CURL_DARWINSSL_H
+#ifndef HEADER_CURL_SECTRANSP_H
+#define HEADER_CURL_SECTRANSP_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
@@ -8,7 +8,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2012 - 2014, Nick Zitzmann, <nickzman@gmail.com>.
- * Copyright (C) 2012 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -24,9 +24,9 @@
***************************************************************************/
#include "curl_setup.h"
-#ifdef USE_DARWINSSL
+#ifdef USE_SECTRANSP
-extern const struct Curl_ssl Curl_ssl_darwinssl;
+extern const struct Curl_ssl Curl_ssl_sectransp;
-#endif /* USE_DARWINSSL */
-#endif /* HEADER_CURL_DARWINSSL_H */
+#endif /* USE_SECTRANSP */
+#endif /* HEADER_CURL_SECTRANSP_H */
diff --git a/lib/vtls/vtls.c b/lib/vtls/vtls.c
index 5e75f92e..8a405c05 100644
--- a/lib/vtls/vtls.c
+++ b/lib/vtls/vtls.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -248,7 +248,7 @@ Curl_ssl_connect(struct connectdata *conn, int sockindex)
conn->ssl[sockindex].use = TRUE;
conn->ssl[sockindex].state = ssl_connection_negotiating;
- result = Curl_ssl->connect(conn, sockindex);
+ result = Curl_ssl->connect_blocking(conn, sockindex);
if(!result)
Curl_pgrsTime(conn->data, TIMER_APPCONNECT); /* SSL is connected */
@@ -513,7 +513,7 @@ void Curl_ssl_close_all(struct Curl_easy *data)
}
#if defined(USE_OPENSSL) || defined(USE_GNUTLS) || defined(USE_SCHANNEL) || \
- defined(USE_DARWINSSL) || defined(USE_POLARSSL) || defined(USE_NSS) || \
+ defined(USE_SECTRANSP) || defined(USE_POLARSSL) || defined(USE_NSS) || \
defined(USE_MBEDTLS) || defined(USE_CYASSL)
int Curl_ssl_getsock(struct connectdata *conn, curl_socket_t *socks,
int numsocks)
@@ -546,7 +546,7 @@ int Curl_ssl_getsock(struct connectdata *conn,
(void)numsocks;
return GETSOCK_BLANK;
}
-/* USE_OPENSSL || USE_GNUTLS || USE_SCHANNEL || USE_DARWINSSL || USE_NSS */
+/* USE_OPENSSL || USE_GNUTLS || USE_SCHANNEL || USE_SECTRANSP || USE_NSS */
#endif
void Curl_ssl_close(struct connectdata *conn, int sockindex)
@@ -557,7 +557,7 @@ void Curl_ssl_close(struct connectdata *conn, int sockindex)
CURLcode Curl_ssl_shutdown(struct connectdata *conn, int sockindex)
{
- if(Curl_ssl->shutdown(conn, sockindex))
+ if(Curl_ssl->shut_down(conn, sockindex))
return CURLE_SSL_SHUTDOWN_FAILED;
conn->ssl[sockindex].use = FALSE; /* get back to ordinary socket usage */
@@ -1114,7 +1114,7 @@ static CURLcode Curl_multissl_connect(struct connectdata *conn, int sockindex)
{
if(multissl_init(NULL))
return CURLE_FAILED_INIT;
- return Curl_ssl->connect(conn, sockindex);
+ return Curl_ssl->connect_blocking(conn, sockindex);
}
static CURLcode Curl_multissl_connect_nonblocking(struct connectdata *conn,
@@ -1172,8 +1172,8 @@ const struct Curl_ssl *Curl_ssl =
&Curl_ssl_multi;
#elif defined(USE_CYASSL)
&Curl_ssl_cyassl;
-#elif defined(USE_DARWINSSL)
- &Curl_ssl_darwinssl;
+#elif defined(USE_SECTRANSP)
+ &Curl_ssl_sectransp;
#elif defined(USE_GNUTLS)
&Curl_ssl_gnutls;
#elif defined(USE_GSKIT)
@@ -1198,8 +1198,8 @@ static const struct Curl_ssl *available_backends[] = {
#if defined(USE_CYASSL)
&Curl_ssl_cyassl,
#endif
-#if defined(USE_DARWINSSL)
- &Curl_ssl_darwinssl,
+#if defined(USE_SECTRANSP)
+ &Curl_ssl_sectransp,
#endif
#if defined(USE_GNUTLS)
&Curl_ssl_gnutls,
diff --git a/lib/vtls/vtls.h b/lib/vtls/vtls.h
index 1f163631..2a87ca1f 100644
--- a/lib/vtls/vtls.h
+++ b/lib/vtls/vtls.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -47,7 +47,7 @@ struct Curl_ssl {
size_t (*version)(char *buffer, size_t size);
int (*check_cxn)(struct connectdata *cxn);
- int (*shutdown)(struct connectdata *conn, int sockindex);
+ int (*shut_down)(struct connectdata *conn, int sockindex);
bool (*data_pending)(const struct connectdata *conn,
int connindex);
@@ -56,7 +56,7 @@ struct Curl_ssl {
size_t length);
bool (*cert_status_request)(void);
- CURLcode (*connect)(struct connectdata *conn, int sockindex);
+ CURLcode (*connect_blocking)(struct connectdata *conn, int sockindex);
CURLcode (*connect_nonblocking)(struct connectdata *conn, int sockindex,
bool *done);
void *(*get_internals)(struct ssl_connect_data *connssl, CURLINFO info);
@@ -105,7 +105,7 @@ CURLcode Curl_none_md5sum(unsigned char *input, size_t inputlen,
#include "polarssl.h" /* PolarSSL versions */
#include "cyassl.h" /* CyaSSL versions */
#include "schannel.h" /* Schannel SSPI version */
-#include "darwinssl.h" /* SecureTransport (Darwin) version */
+#include "sectransp.h" /* SecureTransport (Darwin) version */
#include "mbedtls.h" /* mbedTLS versions */
#include "mesalink.h" /* MesaLink versions */
diff --git a/lib/warnless.c b/lib/warnless.c
index 05d9038d..cfd5e8e1 100644
--- a/lib/warnless.c
+++ b/lib/warnless.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -401,44 +401,6 @@ unsigned short curlx_uitous(unsigned int uinum)
}
/*
-** unsigned int to unsigned char
-*/
-
-unsigned char curlx_uitouc(unsigned int uinum)
-{
-#ifdef __INTEL_COMPILER
-# pragma warning(push)
-# pragma warning(disable:810) /* conversion may lose significant bits */
-#endif
-
- DEBUGASSERT(uinum <= (unsigned int) CURL_MASK_UCHAR);
- return (unsigned char) (uinum & (unsigned int) CURL_MASK_UCHAR);
-
-#ifdef __INTEL_COMPILER
-# pragma warning(pop)
-#endif
-}
-
-/*
-** unsigned int to signed int
-*/
-
-int curlx_uitosi(unsigned int uinum)
-{
-#ifdef __INTEL_COMPILER
-# pragma warning(push)
-# pragma warning(disable:810) /* conversion may lose significant bits */
-#endif
-
- DEBUGASSERT(uinum <= (unsigned int) CURL_MASK_SINT);
- return (int) (uinum & (unsigned int) CURL_MASK_SINT);
-
-#ifdef __INTEL_COMPILER
-# pragma warning(pop)
-#endif
-}
-
-/*
** signed int to unsigned size_t
*/
diff --git a/lib/warnless.h b/lib/warnless.h
index 284ea1e7..ea4c4395 100644
--- a/lib/warnless.h
+++ b/lib/warnless.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -57,10 +57,6 @@ int curlx_sztosi(ssize_t sznum);
unsigned short curlx_uitous(unsigned int uinum);
-unsigned char curlx_uitouc(unsigned int uinum);
-
-int curlx_uitosi(unsigned int uinum);
-
size_t curlx_sitouz(int sinum);
#ifdef USE_WINSOCK
diff --git a/lib/x509asn1.c b/lib/x509asn1.c
index 746e1e8e..25231921 100644
--- a/lib/x509asn1.c
+++ b/lib/x509asn1.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -120,7 +120,7 @@ static const char *getASN1Element(curl_asn1Element *elem,
if an error occurs. */
if(!beg || !end || beg >= end || !*beg ||
(size_t)(end - beg) > CURL_ASN1_MAX)
- return (const char *) NULL;
+ return NULL;
/* Process header byte. */
elem->header = beg;
@@ -129,12 +129,12 @@ static const char *getASN1Element(curl_asn1Element *elem,
elem->class = (b >> 6) & 3;
b &= 0x1F;
if(b == 0x1F)
- return (const char *) NULL; /* Long tag values not supported here. */
+ return NULL; /* Long tag values not supported here. */
elem->tag = b;
/* Process length. */
if(beg >= end)
- return (const char *) NULL;
+ return NULL;
b = (unsigned char) *beg++;
if(!(b & 0x80))
len = b;
@@ -142,69 +142,72 @@ static const char *getASN1Element(curl_asn1Element *elem,
/* Unspecified length. Since we have all the data, we can determine the
effective length by skipping element until an end element is found. */
if(!elem->constructed)
- return (const char *) NULL;
+ return NULL;
elem->beg = beg;
while(beg < end && *beg) {
beg = getASN1Element(&lelem, beg, end);
if(!beg)
- return (const char *) NULL;
+ return NULL;
}
if(beg >= end)
- return (const char *) NULL;
+ return NULL;
elem->end = beg;
return beg + 1;
}
else if((unsigned)b > (size_t)(end - beg))
- return (const char *) NULL; /* Does not fit in source. */
+ return NULL; /* Does not fit in source. */
else {
/* Get long length. */
len = 0;
do {
if(len & 0xFF000000L)
- return (const char *) NULL; /* Lengths > 32 bits are not supported. */
+ return NULL; /* Lengths > 32 bits are not supported. */
len = (len << 8) | (unsigned char) *beg++;
} while(--b);
}
if(len > (size_t)(end - beg))
- return (const char *) NULL; /* Element data does not fit in source. */
+ return NULL; /* Element data does not fit in source. */
elem->beg = beg;
elem->end = beg + len;
return elem->end;
}
+/*
+ * Search the null terminated OID or OID identifier in local table.
+ * Return the table entry pointer or NULL if not found.
+ */
static const curl_OID * searchOID(const char *oid)
{
const curl_OID *op;
-
- /* Search the null terminated OID or OID identifier in local table.
- Return the table entry pointer or NULL if not found. */
-
for(op = OIDtable; op->numoid; op++)
if(!strcmp(op->numoid, oid) || strcasecompare(op->textoid, oid))
return op;
- return (const curl_OID *) NULL;
+ return NULL;
}
+/*
+ * Convert an ASN.1 Boolean value into its string representation. Return the
+ * dynamically allocated string, or NULL if source is not an ASN.1 Boolean
+ * value.
+ */
+
static const char *bool2str(const char *beg, const char *end)
{
- /* Convert an ASN.1 Boolean value into its string representation.
- Return the dynamically allocated string, or NULL if source is not an
- ASN.1 Boolean value. */
-
if(end - beg != 1)
- return (const char *) NULL;
+ return NULL;
return strdup(*beg? "TRUE": "FALSE");
}
+/*
+ * Convert an ASN.1 octet string to a printable string.
+ * Return the dynamically allocated string, or NULL if an error occurs.
+ */
static const char *octet2str(const char *beg, const char *end)
{
size_t n = end - beg;
char *buf = NULL;
- /* Convert an ASN.1 octet string to a printable string.
- Return the dynamically allocated string, or NULL if an error occurs. */
-
if(n <= (SIZE_T_MAX - 1) / 3) {
buf = malloc(3 * n + 1);
if(buf)
@@ -220,21 +223,22 @@ static const char *bit2str(const char *beg, const char *end)
Return the dynamically allocated string, or NULL if an error occurs. */
if(++beg > end)
- return (const char *) NULL;
+ return NULL;
return octet2str(beg, end);
}
+/*
+ * Convert an ASN.1 integer value into its string representation.
+ * Return the dynamically allocated string, or NULL if source is not an
+ * ASN.1 integer value.
+ */
static const char *int2str(const char *beg, const char *end)
{
unsigned long val = 0;
size_t n = end - beg;
- /* Convert an ASN.1 integer value into its string representation.
- Return the dynamically allocated string, or NULL if source is not an
- ASN.1 integer value. */
-
if(!n)
- return (const char *) NULL;
+ return NULL;
if(n > 4)
return octet2str(beg, end);
@@ -249,6 +253,13 @@ static const char *int2str(const char *beg, const char *end)
return curl_maprintf("%s%lx", val >= 10? "0x": "", val);
}
+/*
+ * Perform a lazy conversion from an ASN.1 typed string to UTF8. Allocate the
+ * destination buffer dynamically. The allocation size will normally be too
+ * large: this is to avoid buffer overflows.
+ * Terminate the string with a nul byte and return the converted
+ * string length.
+ */
static ssize_t
utf8asn1str(char **to, int type, const char *from, const char *end)
{
@@ -259,13 +270,7 @@ utf8asn1str(char **to, int type, const char *from, const char *end)
unsigned int wc;
char *buf;
- /* Perform a lazy conversion from an ASN.1 typed string to UTF8. Allocate the
- destination buffer dynamically. The allocation size will normally be too
- large: this is to avoid buffer overflows.
- Terminate the string with a nul byte and return the converted
- string length. */
-
- *to = (char *) NULL;
+ *to = NULL;
switch(type) {
case CURL_ASN1_BMP_STRING:
size = 2;
@@ -341,96 +346,105 @@ utf8asn1str(char **to, int type, const char *from, const char *end)
return outlength;
}
+/*
+ * Convert an ASN.1 String into its UTF-8 string representation.
+ * Return the dynamically allocated string, or NULL if an error occurs.
+ */
static const char *string2str(int type, const char *beg, const char *end)
{
char *buf;
-
- /* Convert an ASN.1 String into its UTF-8 string representation.
- Return the dynamically allocated string, or NULL if an error occurs. */
-
if(utf8asn1str(&buf, type, beg, end) < 0)
- return (const char *) NULL;
+ return NULL;
return buf;
}
-static int encodeUint(char *buf, int n, unsigned int x)
+/*
+ * Decimal ASCII encode unsigned integer `x' into the buflen sized buffer at
+ * buf. Return the total number of encoded digits, even if larger than
+ * `buflen'.
+ */
+static size_t encodeUint(char *buf, size_t buflen, unsigned int x)
{
- int i = 0;
+ size_t i = 0;
unsigned int y = x / 10;
- /* Decimal ASCII encode unsigned integer `x' in the `n'-byte buffer at `buf'.
- Return the total number of encoded digits, even if larger than `n'. */
-
if(y) {
- i += encodeUint(buf, n, y);
+ i = encodeUint(buf, buflen, y);
x -= y * 10;
}
- if(i < n)
+ if(i < buflen)
buf[i] = (char) ('0' + x);
i++;
- if(i < n)
+ if(i < buflen)
buf[i] = '\0'; /* Store a terminator if possible. */
return i;
}
-static int encodeOID(char *buf, int n, const char *beg, const char *end)
+/*
+ * Convert an ASN.1 OID into its dotted string representation.
+ * Store the result in th `n'-byte buffer at `buf'.
+ * Return the converted string length, or 0 on errors.
+ */
+static size_t encodeOID(char *buf, size_t buflen,
+ const char *beg, const char *end)
{
- int i = 0;
+ size_t i;
unsigned int x;
unsigned int y;
- /* Convert an ASN.1 OID into its dotted string representation.
- Store the result in th `n'-byte buffer at `buf'.
- Return the converted string length, or -1 if an error occurs. */
-
/* Process the first two numbers. */
y = *(const unsigned char *) beg++;
x = y / 40;
y -= x * 40;
- i += encodeUint(buf + i, n - i, x);
- if(i < n)
+ i = encodeUint(buf, buflen, x);
+ if(i < buflen)
buf[i] = '.';
i++;
- i += encodeUint(buf + i, n - i, y);
+ if(i >= buflen)
+ i += encodeUint(NULL, 0, y);
+ else
+ i += encodeUint(buf + i, buflen - i, y);
/* Process the trailing numbers. */
while(beg < end) {
- if(i < n)
+ if(i < buflen)
buf[i] = '.';
i++;
x = 0;
do {
if(x & 0xFF000000)
- return -1;
+ return 0;
y = *(const unsigned char *) beg++;
x = (x << 7) | (y & 0x7F);
} while(y & 0x80);
- i += encodeUint(buf + i, n - i, x);
+ if(i >= buflen)
+ i += encodeUint(NULL, 0, x);
+ else
+ i += encodeUint(buf + i, buflen - i, x);
}
- if(i < n)
+ if(i < buflen)
buf[i] = '\0';
return i;
}
+/*
+ * Convert an ASN.1 OID into its dotted or symbolic string representation.
+ * Return the dynamically allocated string, or NULL if an error occurs.
+ */
+
static const char *OID2str(const char *beg, const char *end, bool symbolic)
{
- char *buf = (char *) NULL;
- const curl_OID * op;
- int n;
-
- /* Convert an ASN.1 OID into its dotted or symbolic string representation.
- Return the dynamically allocated string, or NULL if an error occurs. */
-
+ char *buf = NULL;
if(beg < end) {
- n = encodeOID((char *) NULL, -1, beg, end);
- if(n >= 0) {
- buf = malloc(n + 1);
+ size_t buflen = encodeOID(NULL, 0, beg, end);
+ if(buflen) {
+ buf = malloc(buflen + 1); /* one extra for the zero byte */
if(buf) {
- encodeOID(buf, n, beg, end);
- buf[n] = '\0';
+ encodeOID(buf, buflen, beg, end);
+ buf[buflen] = '\0';
if(symbolic) {
- op = searchOID(buf);
+ const curl_OID *op = searchOID(buf);
if(op) {
free(buf);
buf = strdup(op->textoid);
@@ -470,7 +484,7 @@ static const char *GTime2str(const char *beg, const char *end)
sec2 = fracp[-1];
break;
default:
- return (const char *) NULL;
+ return NULL;
}
/* Scan for timezone, measure fractional seconds. */
@@ -506,15 +520,16 @@ static const char *GTime2str(const char *beg, const char *end)
sep, tzl, tzp);
}
+/*
+ * Convert an ASN.1 UTC time to a printable string.
+ * Return the dynamically allocated string, or NULL if an error occurs.
+ */
static const char *UTime2str(const char *beg, const char *end)
{
const char *tzp;
size_t tzl;
const char *sec;
- /* Convert an ASN.1 UTC time to a printable string.
- Return the dynamically allocated string, or NULL if an error occurs. */
-
for(tzp = beg; tzp < end && *tzp >= '0' && *tzp <= '9'; tzp++)
;
/* Get the seconds. */
@@ -525,12 +540,12 @@ static const char *UTime2str(const char *beg, const char *end)
case 2:
break;
default:
- return (const char *) NULL;
+ return NULL;
}
/* Process timezone. */
if(tzp >= end)
- return (const char *) NULL;
+ return NULL;
if(*tzp == 'Z') {
tzp = "GMT";
end = tzp + 3;
@@ -545,13 +560,14 @@ static const char *UTime2str(const char *beg, const char *end)
tzl, tzp);
}
+/*
+ * Convert an ASN.1 element to a printable string.
+ * Return the dynamically allocated string, or NULL if an error occurs.
+ */
static const char *ASN1tostr(curl_asn1Element *elem, int type)
{
- /* Convert an ASN.1 element to a printable string.
- Return the dynamically allocated string, or NULL if an error occurs. */
-
if(elem->constructed)
- return (const char *) NULL; /* No conversion of structured elements. */
+ return NULL; /* No conversion of structured elements. */
if(!type)
type = elem->tag; /* Type not forced: use element tag as type. */
@@ -585,10 +601,14 @@ static const char *ASN1tostr(curl_asn1Element *elem, int type)
return string2str(type, elem->beg, elem->end);
}
- return (const char *) NULL; /* Unsupported. */
+ return NULL; /* Unsupported. */
}
-static ssize_t encodeDN(char *buf, size_t n, curl_asn1Element *dn)
+/*
+ * ASCII encode distinguished name at `dn' into the `buflen'-sized buffer at
+ * `buf'. Return the total string length, even if larger than `buflen'.
+ */
+static ssize_t encodeDN(char *buf, size_t buflen, curl_asn1Element *dn)
{
curl_asn1Element rdn;
curl_asn1Element atv;
@@ -600,9 +620,6 @@ static ssize_t encodeDN(char *buf, size_t n, curl_asn1Element *dn)
const char *p3;
const char *str;
- /* ASCII encode distinguished name at `dn' into the `n'-byte buffer at `buf'.
- Return the total string length, even if larger than `n'. */
-
for(p1 = dn->beg; p1 < dn->end;) {
p1 = getASN1Element(&rdn, p1, dn->end);
if(!p1)
@@ -626,7 +643,7 @@ static ssize_t encodeDN(char *buf, size_t n, curl_asn1Element *dn)
for(p3 = str; isupper(*p3); p3++)
;
for(p3 = (*p3 || p3 - str > 2)? "/": ", "; *p3; p3++) {
- if(l < n)
+ if(l < buflen)
buf[l] = *p3;
l++;
}
@@ -634,14 +651,14 @@ static ssize_t encodeDN(char *buf, size_t n, curl_asn1Element *dn)
/* Encode attribute name. */
for(p3 = str; *p3; p3++) {
- if(l < n)
+ if(l < buflen)
buf[l] = *p3;
l++;
}
free((char *) str);
/* Generate equal sign. */
- if(l < n)
+ if(l < buflen)
buf[l] = '=';
l++;
@@ -650,7 +667,7 @@ static ssize_t encodeDN(char *buf, size_t n, curl_asn1Element *dn)
if(!str)
return -1;
for(p3 = str; *p3; p3++) {
- if(l < n)
+ if(l < buflen)
buf[l] = *p3;
l++;
}
@@ -661,28 +678,30 @@ static ssize_t encodeDN(char *buf, size_t n, curl_asn1Element *dn)
return l;
}
+/*
+ * Convert an ASN.1 distinguished name into a printable string.
+ * Return the dynamically allocated string, or NULL if an error occurs.
+ */
static const char *DNtostr(curl_asn1Element *dn)
{
- char *buf = (char *) NULL;
- ssize_t n = encodeDN(buf, 0, dn);
-
- /* Convert an ASN.1 distinguished name into a printable string.
- Return the dynamically allocated string, or NULL if an error occurs. */
+ char *buf = NULL;
+ ssize_t buflen = encodeDN(NULL, 0, dn);
- if(n >= 0) {
- buf = malloc(n + 1);
+ if(buflen >= 0) {
+ buf = malloc(buflen + 1);
if(buf) {
- encodeDN(buf, n + 1, dn);
- buf[n] = '\0';
+ encodeDN(buf, buflen + 1, dn);
+ buf[buflen] = '\0';
}
}
- return (const char *) buf;
+ return buf;
}
/*
- * X509 parser.
+ * ASN.1 parse an X509 certificate into structure subfields.
+ * Syntax is assumed to have already been checked by the SSL backend.
+ * See RFC 5280.
*/
-
int Curl_parseX509(curl_X509certificate *cert,
const char *beg, const char *end)
{
@@ -691,10 +710,6 @@ int Curl_parseX509(curl_X509certificate *cert,
const char *ccp;
static const char defaultVersion = 0; /* v1. */
- /* ASN.1 parse an X509 certificate into structure subfields.
- Syntax is assumed to have already been checked by the SSL backend.
- See RFC 5280. */
-
cert->certificate.header = NULL;
cert->certificate.beg = beg;
cert->certificate.end = end;
@@ -801,13 +816,14 @@ int Curl_parseX509(curl_X509certificate *cert,
return 0;
}
+
+/*
+ * Copy at most 64-characters, terminate with a newline and returns the
+ * effective number of stored characters.
+ */
static size_t copySubstring(char *to, const char *from)
{
size_t i;
-
- /* Copy at most 64-characters, terminate with a newline and returns the
- effective number of stored characters. */
-
for(i = 0; i < 64; i++) {
to[i] = *from;
if(!*from++)
@@ -1104,15 +1120,15 @@ static const char *checkOID(const char *beg, const char *end,
ccp = getASN1Element(&e, beg, end);
if(!ccp || e.tag != CURL_ASN1_OBJECT_IDENTIFIER)
- return (const char *) NULL;
+ return NULL;
p = OID2str(e.beg, e.end, FALSE);
if(!p)
- return (const char *) NULL;
+ return NULL;
matched = !strcmp(p, oid);
free((char *) p);
- return matched? ccp: (const char *) NULL;
+ return matched? ccp: NULL;
}
CURLcode Curl_verifyhost(struct connectdata *conn,
diff --git a/local-configure.patch b/local-configure.patch
index 62835143..e68c188e 100644
--- a/local-configure.patch
+++ b/local-configure.patch
@@ -2,7 +2,7 @@ Index: curl/lib/curl_config.h
===================================================================
--- curl.orig/lib/curl_config.h
+++ curl/lib/curl_config.h
-@@ -464,7 +464,7 @@
+@@ -461,7 +461,7 @@
#define HAVE_NETDB_H 1
/* Define to 1 if you have the <netinet/in6.h> header file. */
@@ -11,7 +11,7 @@ Index: curl/lib/curl_config.h
/* Define to 1 if you have the <netinet/in.h> header file. */
#define HAVE_NETINET_IN_H 1
-@@ -495,7 +495,7 @@
+@@ -492,7 +492,7 @@
#define HAVE_OPENSSL_RSA_H 1
/* if you have the function SRP_Calc_client_key */
@@ -20,7 +20,7 @@ Index: curl/lib/curl_config.h
/* Define to 1 if you have the <openssl/ssl.h> header file. */
#define HAVE_OPENSSL_SSL_H 1
-@@ -815,9 +815,6 @@
+@@ -809,9 +809,6 @@
/* Define absolute filename for winbind's ntlm_auth helper. */
/* #undef NTLM_WB_FILE */
@@ -30,7 +30,7 @@ Index: curl/lib/curl_config.h
/* Name of package */
#define PACKAGE "curl"
-@@ -873,7 +870,7 @@
+@@ -867,7 +864,7 @@
#define SELECT_TYPE_ARG5 struct timeval *
/* Define to the function return type for select. */
@@ -39,7 +39,7 @@ Index: curl/lib/curl_config.h
/* Define to the type qualifier of arg 2 for send. */
#define SEND_QUAL_ARG2 const
-@@ -899,24 +896,9 @@
+@@ -893,24 +890,9 @@
/* The number of bytes in type int */
#define SIZEOF_INT 4
diff --git a/m4/curl-functions.m4 b/m4/curl-functions.m4
index 9f230b3f..8249108b 100644
--- a/m4/curl-functions.m4
+++ b/m4/curl-functions.m4
@@ -545,6 +545,25 @@ curl_includes_ws2tcpip="\
])
+dnl CURL_INCLUDES_BSDSOCKET
+dnl -------------------------------------------------
+dnl Set up variable with list of headers that must be
+dnl included when bsdsocket.h is to be included.
+
+AC_DEFUN([CURL_INCLUDES_BSDSOCKET], [
+curl_includes_bsdsocket="\
+/* includes start */
+#ifdef HAVE_PROTO_BSDSOCKET_H
+# include <proto/bsdsocket.h>
+ struct Library *SocketBase = NULL;
+#endif
+/* includes end */"
+ AC_CHECK_HEADERS(
+ proto/bsdsocket.h,
+ [], [], [ $curl_includes_bsdsocket])
+])
+
+
dnl CURL_PREPROCESS_CALLCONV
dnl -------------------------------------------------
dnl Set up variable with a preprocessor block which
@@ -759,6 +778,7 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET], [
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_socket
]],[[
if(0 != closesocket(0))
@@ -776,6 +796,7 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET], [
AC_MSG_CHECKING([if closesocket is prototyped])
AC_EGREP_CPP([closesocket],[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_socket
],[
AC_MSG_RESULT([yes])
@@ -791,6 +812,7 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_socket
]],[[
if(0 != closesocket(0))
@@ -944,6 +966,7 @@ AC_DEFUN([CURL_CHECK_FUNC_CONNECT], [
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
$curl_includes_socket
]],[[
@@ -962,6 +985,7 @@ AC_DEFUN([CURL_CHECK_FUNC_CONNECT], [
AC_MSG_CHECKING([if connect is prototyped])
AC_EGREP_CPP([connect],[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
$curl_includes_socket
],[
@@ -978,6 +1002,7 @@ AC_DEFUN([CURL_CHECK_FUNC_CONNECT], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
$curl_includes_socket
]],[[
@@ -1168,92 +1193,6 @@ AC_DEFUN([CURL_CHECK_FUNC_FCNTL_O_NONBLOCK], [
fi
])
-
-dnl CURL_CHECK_FUNC_FDOPEN
-dnl -------------------------------------------------
-dnl Verify if fdopen is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable curl_disallow_fdopen, then
-dnl HAVE_FDOPEN will be defined.
-
-AC_DEFUN([CURL_CHECK_FUNC_FDOPEN], [
- AC_REQUIRE([CURL_INCLUDES_STDIO])dnl
- #
- tst_links_fdopen="unknown"
- tst_proto_fdopen="unknown"
- tst_compi_fdopen="unknown"
- tst_allow_fdopen="unknown"
- #
- AC_MSG_CHECKING([if fdopen can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([fdopen])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_fdopen="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_fdopen="no"
- ])
- #
- if test "$tst_links_fdopen" = "yes"; then
- AC_MSG_CHECKING([if fdopen is prototyped])
- AC_EGREP_CPP([fdopen],[
- $curl_includes_stdio
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_fdopen="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_fdopen="no"
- ])
- fi
- #
- if test "$tst_proto_fdopen" = "yes"; then
- AC_MSG_CHECKING([if fdopen is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $curl_includes_stdio
- ]],[[
- if(0 != fdopen(0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_fdopen="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_fdopen="no"
- ])
- fi
- #
- if test "$tst_compi_fdopen" = "yes"; then
- AC_MSG_CHECKING([if fdopen usage allowed])
- if test "x$curl_disallow_fdopen" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_fdopen="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_fdopen="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if fdopen might be used])
- if test "$tst_links_fdopen" = "yes" &&
- test "$tst_proto_fdopen" = "yes" &&
- test "$tst_compi_fdopen" = "yes" &&
- test "$tst_allow_fdopen" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_FDOPEN, 1,
- [Define to 1 if you have the fdopen function.])
- curl_cv_func_fdopen="yes"
- else
- AC_MSG_RESULT([no])
- curl_cv_func_fdopen="no"
- fi
-])
-
-
dnl CURL_CHECK_FUNC_FGETXATTR
dnl -------------------------------------------------
dnl Verify if fgetxattr is available, prototyped, and
@@ -2292,6 +2231,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYADDR], [
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_netdb
]],[[
if(0 != gethostbyaddr(0, 0, 0))
@@ -2309,6 +2249,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYADDR], [
AC_MSG_CHECKING([if gethostbyaddr is prototyped])
AC_EGREP_CPP([gethostbyaddr],[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_netdb
],[
AC_MSG_RESULT([yes])
@@ -2324,6 +2265,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYADDR], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_netdb
]],[[
if(0 != gethostbyaddr(0, 0, 0))
@@ -2385,6 +2327,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GAI_STRERROR], [
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_netdb
]],[[
if(0 != gai_strerror(0))
@@ -2402,6 +2345,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GAI_STRERROR], [
AC_MSG_CHECKING([if gai_strerror is prototyped])
AC_EGREP_CPP([gai_strerror],[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_netdb
],[
AC_MSG_RESULT([yes])
@@ -2417,6 +2361,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GAI_STRERROR], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_netdb
]],[[
if(0 != gai_strerror(0))
@@ -2621,6 +2566,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYNAME], [
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_netdb
]],[[
if(0 != gethostbyname(0))
@@ -2638,6 +2584,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYNAME], [
AC_MSG_CHECKING([if gethostbyname is prototyped])
AC_EGREP_CPP([gethostbyname],[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_netdb
],[
AC_MSG_RESULT([yes])
@@ -2653,6 +2600,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYNAME], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_netdb
]],[[
if(0 != gethostbyname(0))
@@ -2848,6 +2796,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
AC_REQUIRE([CURL_INCLUDES_UNISTD])dnl
AC_REQUIRE([CURL_PREPROCESS_CALLCONV])dnl
+ AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
#
tst_links_gethostname="unknown"
tst_proto_gethostname="unknown"
@@ -2858,6 +2807,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_unistd
]],[[
if(0 != gethostname(0, 0))
@@ -2875,6 +2825,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
AC_MSG_CHECKING([if gethostname is prototyped])
AC_EGREP_CPP([gethostname],[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_unistd
],[
AC_MSG_RESULT([yes])
@@ -2890,6 +2841,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_unistd
]],[[
if(0 != gethostname(0, 0))
@@ -2913,6 +2865,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_unistd
$curl_preprocess_callconv
extern int FUNCALLCONV gethostname($tst_arg1, $tst_arg2);
@@ -4109,6 +4062,7 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET], [
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
]],[[
if(0 != ioctlsocket(0, 0, 0))
return 1;
@@ -4125,6 +4079,7 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET], [
AC_MSG_CHECKING([if ioctlsocket is prototyped])
AC_EGREP_CPP([ioctlsocket],[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
],[
AC_MSG_RESULT([yes])
tst_proto_ioctlsocket="yes"
@@ -4139,6 +4094,7 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
]],[[
if(0 != ioctlsocket(0, 0, 0))
return 1;
@@ -4197,6 +4153,7 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_FIONBIO], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
]],[[
int flags = 0;
if(0 != ioctlsocket(0, FIONBIO, &flags))
@@ -5011,6 +4968,7 @@ AC_DEFUN([CURL_CHECK_FUNC_SETSOCKOPT], [
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
]],[[
if(0 != setsockopt(0, 0, 0, 0, 0))
@@ -5028,6 +4986,7 @@ AC_DEFUN([CURL_CHECK_FUNC_SETSOCKOPT], [
AC_MSG_CHECKING([if setsockopt is prototyped])
AC_EGREP_CPP([setsockopt],[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
],[
AC_MSG_RESULT([yes])
@@ -5043,6 +5002,7 @@ AC_DEFUN([CURL_CHECK_FUNC_SETSOCKOPT], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
]],[[
if(0 != setsockopt(0, 0, 0, 0, 0))
@@ -5102,6 +5062,7 @@ AC_DEFUN([CURL_CHECK_FUNC_SETSOCKOPT_SO_NONBLOCK], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
]],[[
if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0))
@@ -5647,6 +5608,7 @@ AC_DEFUN([CURL_CHECK_FUNC_SOCKET], [
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
$curl_includes_socket
]],[[
@@ -5665,6 +5627,7 @@ AC_DEFUN([CURL_CHECK_FUNC_SOCKET], [
AC_MSG_CHECKING([if socket is prototyped])
AC_EGREP_CPP([socket],[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
$curl_includes_socket
],[
@@ -5681,6 +5644,7 @@ AC_DEFUN([CURL_CHECK_FUNC_SOCKET], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_winsock2
+ $curl_includes_bsdsocket
$curl_includes_sys_socket
$curl_includes_socket
]],[[
diff --git a/packages/OS400/README.OS400 b/packages/OS400/README.OS400
index 967c26f6..c653cece 100644
--- a/packages/OS400/README.OS400
+++ b/packages/OS400/README.OS400
@@ -64,6 +64,7 @@ _ curl_easy_setopt_ccsid()
Variable arguments are a string pointer and a CCSID (unsigned int) for
options:
CURLOPT_ABSTRACT_UNIX_SOCKET
+ CURLOPT_ALTSVC
CURLOPT_CAINFO
CURLOPT_CAPATH
CURLOPT_COOKIE
diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c
index 7ce61aa9..a4cae27e 100644
--- a/packages/OS400/ccsidcurl.c
+++ b/packages/OS400/ccsidcurl.c
@@ -1132,7 +1132,12 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...)
if(testwarn) {
testwarn = 0;
- if((int) STRING_LASTZEROTERMINATED != (int) STRING_DOH + 1 ||
+ if(
+#ifdef USE_ALTSVC
+ (int) STRING_LASTZEROTERMINATED != (int) STRING_ALTSVC + 1 ||
+#else
+ (int) STRING_LASTZEROTERMINATED != (int) STRING_DOH + 1 ||
+#endif
(int) STRING_LAST != (int) STRING_COPYPOSTFIELDS + 1)
curl_mfprintf(stderr,
"*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n");
@@ -1144,6 +1149,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...)
switch (tag) {
case CURLOPT_ABSTRACT_UNIX_SOCKET:
+ case CURLOPT_ALTSVC:
case CURLOPT_CAINFO:
case CURLOPT_CAPATH:
case CURLOPT_COOKIE:
diff --git a/packages/OS400/curl.inc.in b/packages/OS400/curl.inc.in
index 643f480c..72a769f1 100644
--- a/packages/OS400/curl.inc.in
+++ b/packages/OS400/curl.inc.in
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -134,6 +134,10 @@
d c X'00200000'
d CURL_VERSION_MULTI_SSL...
d c X'00400000'
+ d CURL_VERSION_BROTLI...
+ d c X'00800000'
+ d CURL_VERSION_ALTSVC...
+ d c X'01000000'
*
d CURL_HTTPPOST_FILENAME...
d c X'00000001'
@@ -814,6 +818,19 @@
d CURLHEADER_SEPARATE...
d c X'00000001'
*
+ d CURLALTSVC_IMMEDIATELY...
+ d c X'00000001'
+ d CURLALTSVC_ALTUSED...
+ d c X'00000002'
+ d CURLALTSVC_READONLYFILE...
+ d c X'00000004'
+ d CURLALTSVC_H1...
+ d c X'00000008'
+ d CURLALTSVC_H2...
+ d c X'00000010'
+ d CURLALTSVC_H3...
+ d c X'00000020'
+ *
d CURLPROTO_HTTP...
d c X'00000001'
d CURLPROTO_HTTPS...
@@ -1395,6 +1412,10 @@
d c 10284
d CURLOPT_HTTP09_ALLOWED...
d c 00285
+ d CURLOPT_ALTSVC_CTRL...
+ d c 00286
+ d CURLOPT_ALTSVC...
+ d c 10287
*
/if not defined(CURL_NO_OLDIES)
d CURLOPT_FILE c 10001
diff --git a/projects/Windows/VC10/lib/libcurl.vcxproj b/projects/Windows/VC10/lib/libcurl.vcxproj
index 04aed109..6ecf7ded 100644
--- a/projects/Windows/VC10/lib/libcurl.vcxproj
+++ b/projects/Windows/VC10/lib/libcurl.vcxproj
@@ -2323,6 +2323,7 @@
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
+ <ClCompile Include="..\..\..\..\lib\altsvc.c" />
<ClCompile Include="..\..\..\..\lib\amigaos.c" />
<ClCompile Include="..\..\..\..\lib\asyn-ares.c" />
<ClCompile Include="..\..\..\..\lib\asyn-thread.c" />
@@ -2447,7 +2448,6 @@
<ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
<ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />
<ClCompile Include="..\..\..\..\lib\vtls\cyassl.c" />
- <ClCompile Include="..\..\..\..\lib\vtls\darwinssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
<ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
@@ -2458,9 +2458,11 @@
<ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />
<ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />
<ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
<ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
</ItemGroup>
<ItemGroup>
+ <ClInclude Include="..\..\..\..\lib\altsvc.h" />
<ClInclude Include="..\..\..\..\lib\amigaos.h" />
<ClInclude Include="..\..\..\..\lib\arpa_telnet.h" />
<ClInclude Include="..\..\..\..\lib\asyn.h" />
@@ -2574,7 +2576,6 @@
<ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
<ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />
<ClInclude Include="..\..\..\..\lib\vtls\cyassl.h" />
- <ClInclude Include="..\..\..\..\lib\vtls\darwinssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
<ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
@@ -2584,6 +2585,7 @@
<ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\polarssl_threadlock.h" />
<ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
<ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
</ItemGroup>
<ItemGroup>
diff --git a/projects/Windows/VC11/lib/libcurl.vcxproj b/projects/Windows/VC11/lib/libcurl.vcxproj
index 99b69675..42636c59 100644
--- a/projects/Windows/VC11/lib/libcurl.vcxproj
+++ b/projects/Windows/VC11/lib/libcurl.vcxproj
@@ -2379,6 +2379,7 @@
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
+ <ClCompile Include="..\..\..\..\lib\altsvc.c" />
<ClCompile Include="..\..\..\..\lib\amigaos.c" />
<ClCompile Include="..\..\..\..\lib\asyn-ares.c" />
<ClCompile Include="..\..\..\..\lib\asyn-thread.c" />
@@ -2503,7 +2504,6 @@
<ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
<ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />
<ClCompile Include="..\..\..\..\lib\vtls\cyassl.c" />
- <ClCompile Include="..\..\..\..\lib\vtls\darwinssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
<ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
@@ -2514,9 +2514,11 @@
<ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />
<ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />
<ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
<ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
</ItemGroup>
<ItemGroup>
+ <ClInclude Include="..\..\..\..\lib\altsvc.h" />
<ClInclude Include="..\..\..\..\lib\amigaos.h" />
<ClInclude Include="..\..\..\..\lib\arpa_telnet.h" />
<ClInclude Include="..\..\..\..\lib\asyn.h" />
@@ -2630,7 +2632,6 @@
<ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
<ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />
<ClInclude Include="..\..\..\..\lib\vtls\cyassl.h" />
- <ClInclude Include="..\..\..\..\lib\vtls\darwinssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
<ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
@@ -2640,6 +2641,7 @@
<ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\polarssl_threadlock.h" />
<ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
<ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
</ItemGroup>
<ItemGroup>
diff --git a/projects/Windows/VC12/lib/libcurl.vcxproj b/projects/Windows/VC12/lib/libcurl.vcxproj
index 71fa851c..e0f16827 100644
--- a/projects/Windows/VC12/lib/libcurl.vcxproj
+++ b/projects/Windows/VC12/lib/libcurl.vcxproj
@@ -2379,6 +2379,7 @@
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
+ <ClCompile Include="..\..\..\..\lib\altsvc.c" />
<ClCompile Include="..\..\..\..\lib\amigaos.c" />
<ClCompile Include="..\..\..\..\lib\asyn-ares.c" />
<ClCompile Include="..\..\..\..\lib\asyn-thread.c" />
@@ -2503,7 +2504,6 @@
<ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
<ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />
<ClCompile Include="..\..\..\..\lib\vtls\cyassl.c" />
- <ClCompile Include="..\..\..\..\lib\vtls\darwinssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
<ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
@@ -2514,9 +2514,11 @@
<ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />
<ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />
<ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
<ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
</ItemGroup>
<ItemGroup>
+ <ClInclude Include="..\..\..\..\lib\altsvc.h" />
<ClInclude Include="..\..\..\..\lib\amigaos.h" />
<ClInclude Include="..\..\..\..\lib\arpa_telnet.h" />
<ClInclude Include="..\..\..\..\lib\asyn.h" />
@@ -2630,7 +2632,6 @@
<ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
<ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />
<ClInclude Include="..\..\..\..\lib\vtls\cyassl.h" />
- <ClInclude Include="..\..\..\..\lib\vtls\darwinssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
<ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
@@ -2640,6 +2641,7 @@
<ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\polarssl_threadlock.h" />
<ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
<ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
</ItemGroup>
<ItemGroup>
diff --git a/projects/Windows/VC14/lib/libcurl.vcxproj b/projects/Windows/VC14/lib/libcurl.vcxproj
index d119e7af..3a5ff95e 100644
--- a/projects/Windows/VC14/lib/libcurl.vcxproj
+++ b/projects/Windows/VC14/lib/libcurl.vcxproj
@@ -2379,6 +2379,7 @@
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
+ <ClCompile Include="..\..\..\..\lib\altsvc.c" />
<ClCompile Include="..\..\..\..\lib\amigaos.c" />
<ClCompile Include="..\..\..\..\lib\asyn-ares.c" />
<ClCompile Include="..\..\..\..\lib\asyn-thread.c" />
@@ -2503,7 +2504,6 @@
<ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
<ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />
<ClCompile Include="..\..\..\..\lib\vtls\cyassl.c" />
- <ClCompile Include="..\..\..\..\lib\vtls\darwinssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
<ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
@@ -2514,9 +2514,11 @@
<ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />
<ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />
<ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
<ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
</ItemGroup>
<ItemGroup>
+ <ClInclude Include="..\..\..\..\lib\altsvc.h" />
<ClInclude Include="..\..\..\..\lib\amigaos.h" />
<ClInclude Include="..\..\..\..\lib\arpa_telnet.h" />
<ClInclude Include="..\..\..\..\lib\asyn.h" />
@@ -2630,7 +2632,6 @@
<ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
<ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />
<ClInclude Include="..\..\..\..\lib\vtls\cyassl.h" />
- <ClInclude Include="..\..\..\..\lib\vtls\darwinssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
<ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
@@ -2640,6 +2641,7 @@
<ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\polarssl_threadlock.h" />
<ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
<ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
</ItemGroup>
<ItemGroup>
diff --git a/projects/Windows/VC15/lib/libcurl.vcxproj b/projects/Windows/VC15/lib/libcurl.vcxproj
index 743745c7..bcc3ba23 100644
--- a/projects/Windows/VC15/lib/libcurl.vcxproj
+++ b/projects/Windows/VC15/lib/libcurl.vcxproj
@@ -2351,6 +2351,7 @@
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
+ <ClCompile Include="..\..\..\..\lib\altsvc.c" />
<ClCompile Include="..\..\..\..\lib\amigaos.c" />
<ClCompile Include="..\..\..\..\lib\asyn-ares.c" />
<ClCompile Include="..\..\..\..\lib\asyn-thread.c" />
@@ -2475,7 +2476,6 @@
<ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />
<ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />
<ClCompile Include="..\..\..\..\lib\vtls\cyassl.c" />
- <ClCompile Include="..\..\..\..\lib\vtls\darwinssl.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />
<ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />
<ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />
@@ -2486,9 +2486,11 @@
<ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />
<ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />
<ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />
+ <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />
<ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />
</ItemGroup>
<ItemGroup>
+ <ClInclude Include="..\..\..\..\lib\altsvc.h" />
<ClInclude Include="..\..\..\..\lib\amigaos.h" />
<ClInclude Include="..\..\..\..\lib\arpa_telnet.h" />
<ClInclude Include="..\..\..\..\lib\asyn.h" />
@@ -2602,7 +2604,6 @@
<ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />
<ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />
<ClInclude Include="..\..\..\..\lib\vtls\cyassl.h" />
- <ClInclude Include="..\..\..\..\lib\vtls\darwinssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />
<ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />
<ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />
@@ -2612,6 +2613,7 @@
<ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />
<ClInclude Include="..\..\..\..\lib\vtls\polarssl_threadlock.h" />
<ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />
+ <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />
<ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />
</ItemGroup>
<ItemGroup>
diff --git a/projects/Windows/VC6/lib/libcurl.dsp b/projects/Windows/VC6/lib/libcurl.dsp
index 1c2c4b41..9681f6bf 100644
--- a/projects/Windows/VC6/lib/libcurl.dsp
+++ b/projects/Windows/VC6/lib/libcurl.dsp
@@ -730,6 +730,10 @@ LIB32=link.exe -lib
# PROP Default_Filter ""
# Begin Source File
+SOURCE=..\..\..\..\lib\altsvc.c
+# End Source File
+# Begin Source File
+
SOURCE=..\..\..\..\lib\amigaos.c
# End Source File
# Begin Source File
@@ -1226,10 +1230,6 @@ SOURCE=..\..\..\..\lib\vtls\cyassl.c
# End Source File
# Begin Source File
-SOURCE=..\..\..\..\lib\vtls\darwinssl.c
-# End Source File
-# Begin Source File
-
SOURCE=..\..\..\..\lib\vtls\gskit.c
# End Source File
# Begin Source File
@@ -1270,6 +1270,10 @@ SOURCE=..\..\..\..\lib\vtls\schannel_verify.c
# End Source File
# Begin Source File
+SOURCE=..\..\..\..\lib\vtls\sectransp.c
+# End Source File
+# Begin Source File
+
SOURCE=..\..\..\..\lib\vtls\vtls.c
# End Source File
# End Group
@@ -1278,6 +1282,10 @@ SOURCE=..\..\..\..\lib\vtls\vtls.c
# PROP Default_Filter ""
# Begin Source File
+SOURCE=..\..\..\..\lib\altsvc.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\..\..\lib\amigaos.h
# End Source File
# Begin Source File
@@ -1730,10 +1738,6 @@ SOURCE=..\..\..\..\lib\vtls\cyassl.h
# End Source File
# Begin Source File
-SOURCE=..\..\..\..\lib\vtls\darwinssl.h
-# End Source File
-# Begin Source File
-
SOURCE=..\..\..\..\lib\vtls\gskit.h
# End Source File
# Begin Source File
@@ -1770,6 +1774,10 @@ SOURCE=..\..\..\..\lib\vtls\schannel.h
# End Source File
# Begin Source File
+SOURCE=..\..\..\..\lib\vtls\sectransp.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\..\..\lib\vtls\vtls.h
# End Source File
# End Group
diff --git a/projects/Windows/VC7.1/lib/libcurl.vcproj b/projects/Windows/VC7.1/lib/libcurl.vcproj
index 93660da4..4c7cce6e 100644
--- a/projects/Windows/VC7.1/lib/libcurl.vcproj
+++ b/projects/Windows/VC7.1/lib/libcurl.vcproj
@@ -1256,6 +1256,9 @@
Name="Source Files"
Filter="">
<File
+ RelativePath="..\..\..\..\lib\altsvc.c">
+ </File>
+ <File
RelativePath="..\..\..\..\lib\amigaos.c">
</File>
<File
@@ -1593,6 +1596,9 @@
Name="Header Files"
Filter="">
<File
+ RelativePath="..\..\..\..\lib\altsvc.h">
+ </File>
+ <File
RelativePath="..\..\..\..\lib\amigaos.h">
</File>
<File
@@ -1994,9 +2000,6 @@
RelativePath="..\..\..\..\lib\vtls\cyassl.c">
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\darwinssl.c">
- </File>
- <File
RelativePath="..\..\..\..\lib\vtls\gskit.c">
</File>
<File
@@ -2027,6 +2030,9 @@
RelativePath="..\..\..\..\lib\vtls\schannel_verify.c">
</File>
<File
+ RelativePath="..\..\..\..\lib\vtls\sectransp.c">
+ </File>
+ <File
RelativePath="..\..\..\..\lib\vtls\vtls.c">
</File>
</Filter>
@@ -2037,9 +2043,6 @@
RelativePath="..\..\..\..\lib\vtls\cyassl.h">
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\darwinssl.h">
- </File>
- <File
RelativePath="..\..\..\..\lib\vtls\gskit.h">
</File>
<File
@@ -2067,6 +2070,9 @@
RelativePath="..\..\..\..\lib\vtls\schannel.h">
</File>
<File
+ RelativePath="..\..\..\..\lib\vtls\sectransp.h">
+ </File>
+ <File
RelativePath="..\..\..\..\lib\vtls\vtls.h">
</File>
</Filter>
diff --git a/projects/Windows/VC7/lib/libcurl.vcproj b/projects/Windows/VC7/lib/libcurl.vcproj
index 933f6127..8d873874 100644
--- a/projects/Windows/VC7/lib/libcurl.vcproj
+++ b/projects/Windows/VC7/lib/libcurl.vcproj
@@ -1110,6 +1110,9 @@
Name="Source Files"
Filter="">
<File
+ RelativePath="..\..\..\..\lib\altsvc.c">
+ </File>
+ <File
RelativePath="..\..\..\..\lib\amigaos.c">
</File>
<File
@@ -1447,6 +1450,9 @@
Name="Header Files"
Filter="">
<File
+ RelativePath="..\..\..\..\lib\altsvc.h">
+ </File>
+ <File
RelativePath="..\..\..\..\lib\amigaos.h">
</File>
<File
@@ -1848,9 +1854,6 @@
RelativePath="..\..\..\..\lib\vtls\cyassl.c">
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\darwinssl.c">
- </File>
- <File
RelativePath="..\..\..\..\lib\vtls\gskit.c">
</File>
<File
@@ -1881,6 +1884,9 @@
RelativePath="..\..\..\..\lib\vtls\schannel_verify.c">
</File>
<File
+ RelativePath="..\..\..\..\lib\vtls\sectransp.c">
+ </File>
+ <File
RelativePath="..\..\..\..\lib\vtls\vtls.c">
</File>
</Filter>
@@ -1891,9 +1897,6 @@
RelativePath="..\..\..\..\lib\vtls\cyassl.h">
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\darwinssl.h">
- </File>
- <File
RelativePath="..\..\..\..\lib\vtls\gskit.h">
</File>
<File
@@ -1921,6 +1924,9 @@
RelativePath="..\..\..\..\lib\vtls\schannel.h">
</File>
<File
+ RelativePath="..\..\..\..\lib\vtls\sectransp.h">
+ </File>
+ <File
RelativePath="..\..\..\..\lib\vtls\vtls.h">
</File>
</Filter>
diff --git a/projects/Windows/VC8/lib/libcurl.vcproj b/projects/Windows/VC8/lib/libcurl.vcproj
index bdb55ef4..ce2bae6e 100644
--- a/projects/Windows/VC8/lib/libcurl.vcproj
+++ b/projects/Windows/VC8/lib/libcurl.vcproj
@@ -3617,6 +3617,10 @@
Name="Source Files"
>
<File
+ RelativePath="..\..\..\..\lib\altsvc.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\lib\amigaos.c"
>
</File>
@@ -4065,6 +4069,10 @@
Name="Header Files"
>
<File
+ RelativePath="..\..\..\..\lib\altsvc.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\lib\amigaos.h"
>
</File>
@@ -4592,10 +4600,6 @@
>
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\darwinssl.c"
- >
- </File>
- <File
RelativePath="..\..\..\..\lib\vtls\gskit.c"
>
</File>
@@ -4636,6 +4640,10 @@
>
</File>
<File
+ RelativePath="..\..\..\..\lib\vtls\sectransp.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\lib\vtls\vtls.c"
>
</File>
@@ -4648,10 +4656,6 @@
>
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\darwinssl.h"
- >
- </File>
- <File
RelativePath="..\..\..\..\lib\vtls\gskit.h"
>
</File>
@@ -4688,6 +4692,10 @@
>
</File>
<File
+ RelativePath="..\..\..\..\lib\vtls\sectransp.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\lib\vtls\vtls.h"
>
</File>
diff --git a/projects/Windows/VC9/lib/libcurl.vcproj b/projects/Windows/VC9/lib/libcurl.vcproj
index f5c13312..45689a12 100644
--- a/projects/Windows/VC9/lib/libcurl.vcproj
+++ b/projects/Windows/VC9/lib/libcurl.vcproj
@@ -3558,6 +3558,10 @@
Name="Source Files"
>
<File
+ RelativePath="..\..\..\..\lib\altsvc.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\lib\amigaos.c"
>
</File>
@@ -4006,6 +4010,10 @@
Name="Header Files"
>
<File
+ RelativePath="..\..\..\..\lib\altsvc.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\lib\amigaos.h"
>
</File>
@@ -4533,10 +4541,6 @@
>
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\darwinssl.c"
- >
- </File>
- <File
RelativePath="..\..\..\..\lib\vtls\gskit.c"
>
</File>
@@ -4577,6 +4581,10 @@
>
</File>
<File
+ RelativePath="..\..\..\..\lib\vtls\sectransp.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\lib\vtls\vtls.c"
>
</File>
@@ -4589,10 +4597,6 @@
>
</File>
<File
- RelativePath="..\..\..\..\lib\vtls\darwinssl.h"
- >
- </File>
- <File
RelativePath="..\..\..\..\lib\vtls\gskit.h"
>
</File>
@@ -4629,6 +4633,10 @@
>
</File>
<File
+ RelativePath="..\..\..\..\lib\vtls\sectransp.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\lib\vtls\vtls.h"
>
</File>
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index 15c08828..297b8d29 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -20,20 +20,30 @@
#
###########################################################################
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
+FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
PERL = @PERL@
ZSH_COMPLETION_FUNCTION_FILENAME = _curl
+FISH_COMPLETION_FUNCTION_FILENAME = curl.fish
-CLEANFILES = $(ZSH_COMPLETION_FUNCTION_FILENAME)
+CLEANFILES = $(ZSH_COMPLETION_FUNCTION_FILENAME) $(FISH_COMPLETION_FUNCTION_FILENAME)
-all-local: $(ZSH_COMPLETION_FUNCTION_FILENAME)
+all-local: $(ZSH_COMPLETION_FUNCTION_FILENAME) $(FISH_COMPLETION_FUNCTION_FILENAME)
-$(ZSH_COMPLETION_FUNCTION_FILENAME): zsh.pl
+$(ZSH_COMPLETION_FUNCTION_FILENAME): completion.pl
if CROSSCOMPILING
@echo "NOTICE: we can't generate zsh completion when cross-compiling!"
else # if not cross-compiling:
- @if ! test -x "$(PERL)"; then echo "No perl: can't install zsh.pl"; exit 0; fi
- $(PERL) $(srcdir)/zsh.pl $(top_builddir)/src/curl$(EXEEXT) > $@
+ @if ! test -x "$(PERL)"; then echo "No perl: can't install completion.pl"; exit 0; fi
+ $(PERL) $(srcdir)/completion.pl --curl $(top_builddir)/src/curl$(EXEEXT) --shell zsh > $@
+endif
+
+$(FISH_COMPLETION_FUNCTION_FILENAME): completion.pl
+if CROSSCOMPILING
+ @echo "NOTICE: we can't generate fish completion when cross-compiling!"
+else # if not cross-compiling:
+ @if ! test -x "$(PERL)"; then echo "No perl: can't install completion.pl"; exit 0; fi
+ $(PERL) $(srcdir)/completion.pl --curl $(top_builddir)/src/curl$(EXEEXT) --shell fish > $@
endif
install-data-local:
@@ -41,5 +51,7 @@ if CROSSCOMPILING
@echo "NOTICE: we can't install zsh completion when cross-compiling!"
else # if not cross-compiling:
$(MKDIR_P) $(DESTDIR)$(ZSH_FUNCTIONS_DIR)
+ $(MKDIR_P) $(DESTDIR)$(FISH_FUNCTIONS_DIR)
$(INSTALL_DATA) $(ZSH_COMPLETION_FUNCTION_FILENAME) $(DESTDIR)$(ZSH_FUNCTIONS_DIR)/$(ZSH_COMPLETION_FUNCTION_FILENAME)
+ $(INSTALL_DATA) $(FISH_COMPLETION_FUNCTION_FILENAME) $(DESTDIR)$(FISH_FUNCTIONS_DIR)/$(FISH_COMPLETION_FUNCTION_FILENAME)
endif
diff --git a/scripts/completion.pl b/scripts/completion.pl
new file mode 100755
index 00000000..1c41755b
--- /dev/null
+++ b/scripts/completion.pl
@@ -0,0 +1,134 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use Getopt::Long();
+use Pod::Usage();
+
+my $curl = 'curl';
+my $shell = 'zsh';
+my $help = 0;
+Getopt::Long::GetOptions(
+ 'curl=s' => \$curl,
+ 'shell=s' => \$shell,
+ 'help' => \$help,
+) or Pod::Usage::pod2usage();
+Pod::Usage::pod2usage() if $help;
+
+my $regex = '\s+(?:(-[^\s]+),\s)?(--[^\s]+)\s*(\<.+?\>)?\s+(.*)';
+my @opts = parse_main_opts('--help', $regex);
+
+if ($shell eq 'fish') {
+ print "# curl fish completion\n\n";
+ print qq{$_ \n} foreach (@opts);
+} elsif ($shell eq 'zsh') {
+ my $opts_str;
+
+ $opts_str .= qq{ $_ \\\n} foreach (@opts);
+ chomp $opts_str;
+
+my $tmpl = <<"EOS";
+#compdef curl
+
+# curl zsh completion
+
+local curcontext="\$curcontext" state state_descr line
+typeset -A opt_args
+
+local rc=1
+
+_arguments -C -S \\
+$opts_str
+ '*:URL:_urls' && rc=0
+
+return rc
+EOS
+
+ print $tmpl;
+} else {
+ die("Unsupported shell: $shell");
+}
+
+sub parse_main_opts {
+ my ($cmd, $regex) = @_;
+
+ my @list;
+ my @lines = call_curl($cmd);
+
+ foreach my $line (@lines) {
+ my ($short, $long, $arg, $desc) = ($line =~ /^$regex/) or next;
+
+ my $option = '';
+
+ $arg =~ s/\:/\\\:/g if defined $arg;
+
+ $desc =~ s/'/'\\''/g if defined $desc;
+ $desc =~ s/\[/\\\[/g if defined $desc;
+ $desc =~ s/\]/\\\]/g if defined $desc;
+ $desc =~ s/\:/\\\:/g if defined $desc;
+
+ if ($shell eq 'fish') {
+ $option .= "complete --command curl";
+ $option .= " --short-option '" . strip_dash(trim($short)) . "'"
+ if defined $short;
+ $option .= " --long-option '" . strip_dash(trim($long)) . "'"
+ if defined $long;
+ $option .= " --description '" . strip_dash(trim($desc)) . "'"
+ if defined $desc;
+ } elsif ($shell eq 'zsh') {
+ $option .= '{' . trim($short) . ',' if defined $short;
+ $option .= trim($long) if defined $long;
+ $option .= '}' if defined $short;
+ $option .= '\'[' . trim($desc) . ']\'' if defined $desc;
+
+ $option .= ":'$arg'" if defined $arg;
+
+ $option .= ':_files'
+ if defined $arg and ($arg eq '<file>' || $arg eq '<filename>'
+ || $arg eq '<dir>');
+ }
+
+ push @list, $option;
+ }
+
+ # Sort longest first, because zsh won't complete an option listed
+ # after one that's a prefix of it.
+ @list = sort {
+ $a =~ /([^=]*)/; my $ma = $1;
+ $b =~ /([^=]*)/; my $mb = $1;
+
+ length($mb) <=> length($ma)
+ } @list if $shell eq 'zsh';
+
+ return @list;
+}
+
+sub trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s };
+sub strip_dash { my $s = shift; $s =~ s/^-+//g; return $s };
+
+sub call_curl {
+ my ($cmd) = @_;
+ my $output = `"$curl" $cmd`;
+ if ($? == -1) {
+ die "Could not run curl: $!";
+ } elsif ((my $exit_code = $? >> 8) != 0) {
+ die "curl returned $exit_code with output:\n$output";
+ }
+ return split /\n/, $output;
+}
+
+__END__
+
+=head1 NAME
+
+completion.pl - Generates tab-completion files for various shells
+
+=head1 SYNOPSIS
+
+completion.pl [options...]
+
+ --curl path to curl executable
+ --shell zsh/fish
+ --help prints this help
+
+=cut
diff --git a/scripts/zsh.pl b/scripts/zsh.pl
deleted file mode 100755
index 1257190d..00000000
--- a/scripts/zsh.pl
+++ /dev/null
@@ -1,89 +0,0 @@
-#!/usr/bin/env perl
-
-# Generate ZSH completion
-
-use strict;
-use warnings;
-
-my $curl = $ARGV[0] || 'curl';
-
-my $regex = '\s+(?:(-[^\s]+),\s)?(--[^\s]+)\s([^\s.]+)?\s+(.*)';
-my @opts = parse_main_opts('--help', $regex);
-
-my $opts_str;
-
-$opts_str .= qq{ $_ \\\n} foreach (@opts);
-chomp $opts_str;
-
-my $tmpl = <<"EOS";
-#compdef curl
-
-# curl zsh completion
-
-local curcontext="\$curcontext" state state_descr line
-typeset -A opt_args
-
-local rc=1
-
-_arguments -C -S \\
-$opts_str
- '*:URL:_urls' && rc=0
-
-return rc
-EOS
-
-print $tmpl;
-
-sub parse_main_opts {
- my ($cmd, $regex) = @_;
-
- my @list;
- my @lines = call_curl($cmd);
-
- foreach my $line (@lines) {
- my ($short, $long, $arg, $desc) = ($line =~ /^$regex/) or next;
-
- my $option = '';
-
- $desc =~ s/'/'\\''/g if defined $desc;
- $desc =~ s/\[/\\\[/g if defined $desc;
- $desc =~ s/\]/\\\]/g if defined $desc;
-
- $option .= '{' . trim($short) . ',' if defined $short;
- $option .= trim($long) if defined $long;
- $option .= '}' if defined $short;
- $option .= '\'[' . trim($desc) . ']\'' if defined $desc;
-
- $option .= ":'$arg'" if defined $arg;
-
- $option .= ':_files'
- if defined $arg and ($arg eq '<file>' || $arg eq '<filename>'
- || $arg eq '<dir>');
-
- push @list, $option;
- }
-
- # Sort longest first, because zsh won't complete an option listed
- # after one that's a prefix of it.
- @list = sort {
- $a =~ /([^=]*)/; my $ma = $1;
- $b =~ /([^=]*)/; my $mb = $1;
-
- length($mb) <=> length($ma)
- } @list;
-
- return @list;
-}
-
-sub trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s };
-
-sub call_curl {
- my ($cmd) = @_;
- my $output = `"$curl" $cmd`;
- if ($? == -1) {
- die "Could not run curl: $!";
- } elsif ((my $exit_code = $? >> 8) != 0) {
- die "curl returned $exit_code with output:\n$output";
- }
- return split /\n/, $output;
-}
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index f10a3d0b..63e2b943 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -9,16 +9,13 @@ if(USE_MANUAL)
COMMAND ${CMAKE_COMMAND} -E echo "#ifndef HAVE_LIBZ" >> tool_hugehelp.c
COMMAND env LC_ALL=C "${NROFF}" ${NROFF_MANOPT}
"${CURL_BINARY_DIR}/docs/curl.1" |
- "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl"
- "${CURL_SOURCE_DIR}/docs/MANUAL" >> tool_hugehelp.c
+ "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl" >> tool_hugehelp.c
COMMAND ${CMAKE_COMMAND} -E echo "#else" >> tool_hugehelp.c
COMMAND env LC_ALL=C "${NROFF}" ${NROFF_MANOPT}
"${CURL_BINARY_DIR}/docs/curl.1" |
- "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl" -c
- "${CURL_SOURCE_DIR}/docs/MANUAL" >> tool_hugehelp.c
+ "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl" -c >> tool_hugehelp.c
COMMAND ${CMAKE_COMMAND} -E echo "#endif /* HAVE_LIBZ */" >> tool_hugehelp.c
DEPENDS
- "${CURL_SOURCE_DIR}/docs/MANUAL"
generate-curl.1
"${CURL_BINARY_DIR}/docs/curl.1"
"${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl"
diff --git a/src/Makefile.am b/src/Makefile.am
index 2b4c231a..a26a5707 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -91,10 +91,19 @@ EXTRA_DIST = mkhelp.pl makefile.dj \
# Use absolute directory to disable VPATH
MANPAGE=$(abs_top_builddir)/docs/curl.1
-README=$(top_srcdir)/docs/MANUAL
MKHELP=$(top_srcdir)/src/mkhelp.pl
HUGE=tool_hugehelp.c
+HUGECMD = $(HUGEIT_$(V))
+HUGEIT_0 = @echo " HUGE " $@;
+HUGEIT_1 =
+HUGEIT_ = $(HUGEIT_0)
+
+CHECKSRC = $(CS_$(V))
+CS_0 = @echo " RUN " $@;
+CS_1 =
+CS_ = $(CS_0)
+
if USE_MANUAL
# Here are the stuff to create a built-in manual
@@ -104,33 +113,33 @@ $(MANPAGE):
if HAVE_LIBZ
# This generates the tool_hugehelp.c file in both uncompressed and
# compressed formats.
-$(HUGE): $(MANPAGE) $(README) $(MKHELP)
- echo '#include "tool_setup.h"' > $(HUGE)
- echo '#ifndef HAVE_LIBZ' >> $(HUGE)
- $(NROFF) $(MANPAGE) | $(PERL) $(MKHELP) $(README) >> $(HUGE)
- echo '#else' >> $(HUGE)
- $(NROFF) $(MANPAGE) | $(PERL) $(MKHELP) -c $(README) >> $(HUGE)
- echo '#endif /* HAVE_LIBZ */' >> $(HUGE)
+$(HUGE): $(MANPAGE) $(MKHELP)
+ $(HUGECMD) (echo '#include "tool_setup.h"' > $(HUGE); \
+ echo '#ifndef HAVE_LIBZ' >> $(HUGE); \
+ $(NROFF) $(MANPAGE) | $(PERL) $(MKHELP) >> $(HUGE); \
+ echo '#else' >> $(HUGE); \
+ $(NROFF) $(MANPAGE) | $(PERL) $(MKHELP) -c >> $(HUGE); \
+ echo '#endif /* HAVE_LIBZ */' >> $(HUGE) )
else # HAVE_LIBZ
# This generates the tool_hugehelp.c file uncompressed only
-$(HUGE): $(MANPAGE) $(README) $(MKHELP)
- echo '#include "tool_setup.h"' > $(HUGE)
- $(NROFF) $(MANPAGE) | $(PERL) $(MKHELP) $(README) >> $(HUGE)
+$(HUGE): $(MANPAGE) $(MKHELP)
+ $(HUGECMD)(echo '#include "tool_setup.h"' > $(HUGE): \
+ $(NROFF) $(MANPAGE) | $(PERL) $(MKHELP) >> $(HUGE) )
endif
else # USE_MANUAL
# built-in manual has been disabled, make a blank file
$(HUGE):
- echo "/* built-in manual is disabled, blank function */" > $(HUGE)
- echo '#include "tool_hugehelp.h"' >> $(HUGE)
- echo "void hugehelp(void) {}" >>$(HUGE)
+ $(HUGECMD)(echo "/* built-in manual is disabled, blank function */" > $(HUGE); \
+ echo '#include "tool_hugehelp.h"' >> $(HUGE); \
+ echo "void hugehelp(void) {}" >>$(HUGE) )
endif
# ignore tool_hugehelp.c since it is generated source code and it plays
# by slightly different rules!
checksrc:
- @PERL@ $(top_srcdir)/lib/checksrc.pl -D$(srcdir) \
- -W$(srcdir)/tool_hugehelp.c $(srcdir)/*.[ch]
+ $(CHECKSRC)(@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(srcdir) \
+ -W$(srcdir)/tool_hugehelp.c $(srcdir)/*.[ch])
if CURLDEBUG
# for debug builds, we scan the sources on all regular make invokes
diff --git a/src/mkhelp.pl b/src/mkhelp.pl
index 757f024c..5e62b4eb 100755
--- a/src/mkhelp.pl
+++ b/src/mkhelp.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -33,14 +33,6 @@ if($ARGV[0] eq "-c") {
shift @ARGV;
}
-my $README = $ARGV[0];
-
-if($README eq "") {
- print "usage: mkhelp.pl [-c] <README> < manpage\n";
- exit;
-}
-
-
push @out, " _ _ ____ _\n";
push @out, " Project ___| | | | _ \\| |\n";
push @out, " / __| | | | |_) | |\n";
@@ -89,19 +81,6 @@ while (<STDIN>) {
}
push @out, "\n"; # just an extra newline
-open(READ, "<$README") ||
- die "couldn't read the README infile $README";
-
-while(<READ>) {
- my $line = $_;
-
- # remove trailing CR from line. msysgit checks out files as line+CRLF
- $line =~ s/\r$//;
-
- push @out, $line;
-}
-close(READ);
-
print <<HEAD
/*
* NEVER EVER edit this manually, fix the mkhelp.pl script instead!
diff --git a/src/tool_cb_wrt.c b/src/tool_cb_wrt.c
index 195d6e79..1944f16c 100644
--- a/src/tool_cb_wrt.c
+++ b/src/tool_cb_wrt.c
@@ -79,6 +79,9 @@ size_t tool_write_cb(char *buffer, size_t sz, size_t nmemb, void *userdata)
struct OperationConfig *config = outs->config;
size_t bytes = sz * nmemb;
bool is_tty = config->global->isatty;
+#ifdef WIN32
+ CONSOLE_SCREEN_BUFFER_INFO console_info;
+#endif
/*
* Once that libcurl has called back tool_write_cb() the returned value
@@ -156,7 +159,9 @@ size_t tool_write_cb(char *buffer, size_t sz, size_t nmemb, void *userdata)
}
#ifdef _WIN32
- if(isatty(fileno(outs->stream))) {
+ if(isatty(fileno(outs->stream)) &&
+ GetConsoleScreenBufferInfo(
+ (HANDLE)_get_osfhandle(fileno(outs->stream)), &console_info)) {
DWORD in_len = (DWORD)(sz * nmemb);
wchar_t* wc_buf;
DWORD wc_len;
diff --git a/src/tool_cfgable.c b/src/tool_cfgable.c
index 0eb941ef..fabd6d63 100644
--- a/src/tool_cfgable.c
+++ b/src/tool_cfgable.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -53,6 +53,7 @@ static void free_config_fields(struct OperationConfig *config)
Curl_safefree(config->random_file);
Curl_safefree(config->egd_file);
Curl_safefree(config->useragent);
+ Curl_safefree(config->altsvc);
Curl_safefree(config->cookie);
Curl_safefree(config->cookiejar);
Curl_safefree(config->cookiefile);
@@ -144,10 +145,10 @@ static void free_config_fields(struct OperationConfig *config)
curl_slist_free_all(config->headers);
curl_slist_free_all(config->proxyheaders);
- if(config->mimepost) {
- curl_mime_free(config->mimepost);
- config->mimepost = NULL;
- }
+ curl_mime_free(config->mimepost);
+ config->mimepost = NULL;
+ tool_mime_free(config->mimeroot);
+ config->mimeroot = NULL;
config->mimecurrent = NULL;
curl_slist_free_all(config->telnet_options);
diff --git a/src/tool_cfgable.h b/src/tool_cfgable.h
index 81680dbb..e374a7f0 100644
--- a/src/tool_cfgable.h
+++ b/src/tool_cfgable.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -27,6 +27,8 @@
#include "tool_metalink.h"
+#include "tool_formparse.h"
+
typedef enum {
ERR_NONE,
ERR_BINARY_TERMINAL = 1, /* binary to terminal detected */
@@ -44,6 +46,7 @@ struct OperationConfig {
char *cookie; /* single line with specified cookies */
char *cookiejar; /* write to this file */
char *cookiefile; /* read from this file */
+ char *altsvc; /* alt-svc cache file name */
bool cookiesession; /* new session? */
bool encoding; /* Accept-Encoding please */
bool tr_encoding; /* Transfer-Encoding please */
@@ -176,8 +179,9 @@ struct OperationConfig {
curl_off_t condtime;
struct curl_slist *headers;
struct curl_slist *proxyheaders;
+ tool_mime *mimeroot;
+ tool_mime *mimecurrent;
curl_mime *mimepost;
- curl_mime *mimecurrent;
struct curl_slist *telnet_options;
struct curl_slist *resolve;
struct curl_slist *connect_to;
diff --git a/src/tool_convert.c b/src/tool_convert.c
index ec9d7ac7..3969130c 100644
--- a/src/tool_convert.c
+++ b/src/tool_convert.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -122,15 +122,13 @@ char convert_char(curl_infotype infotype, char this_char)
case CURLINFO_SSL_DATA_IN:
case CURLINFO_SSL_DATA_OUT:
/* data, treat as ASCII */
- if((this_char >= 0x20) && (this_char < 0x7f)) {
- /* printable ASCII hex value: convert to host encoding */
- (void)convert_from_network(&this_char, 1);
- }
- else {
+ if(this_char < 0x20 || this_char >= 0x7f) {
/* non-printable ASCII, use a replacement character */
return UNPRINTABLE_CHAR;
}
- /* fall through to default */
+ /* printable ASCII hex value: convert to host encoding */
+ (void)convert_from_network(&this_char, 1);
+ /* FALLTHROUGH */
default:
/* treat as host encoding */
if(ISPRINT(this_char)
diff --git a/src/tool_formparse.c b/src/tool_formparse.c
index 5d1ea9c5..49993470 100644
--- a/src/tool_formparse.c
+++ b/src/tool_formparse.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -21,7 +21,6 @@
***************************************************************************/
#include "tool_setup.h"
-#include "mime.h"
#include "strcase.h"
#define ENABLE_CURLX_PRINTF
@@ -38,14 +37,307 @@
#include "memdebug.h" /* keep this as LAST include */
-/* Stdin parameters. */
-typedef struct {
- char *data; /* Memory data. */
- curl_off_t origin; /* File read origin offset. */
- curl_off_t size; /* Data size. */
- curl_off_t curpos; /* Current read position. */
-} standard_input;
+/* Macros to free const pointers. */
+#define CONST_FREE(x) free((void *) (x))
+#define CONST_SAFEFREE(x) Curl_safefree(*((void **) &(x)))
+/* tool_mime functions. */
+static tool_mime *tool_mime_new(tool_mime *parent, toolmimekind kind)
+{
+ tool_mime *m = (tool_mime *) calloc(1, sizeof(*m));
+
+ if(m) {
+ m->kind = kind;
+ m->parent = parent;
+ if(parent) {
+ m->prev = parent->subparts;
+ parent->subparts = m;
+ }
+ }
+ return m;
+}
+
+static tool_mime *tool_mime_new_parts(tool_mime *parent)
+{
+ return tool_mime_new(parent, TOOLMIME_PARTS);
+}
+
+static tool_mime *tool_mime_new_data(tool_mime *parent, const char *data)
+{
+ tool_mime *m = NULL;
+
+ data = strdup(data);
+ if(data) {
+ m = tool_mime_new(parent, TOOLMIME_DATA);
+ if(!m)
+ CONST_FREE(data);
+ else
+ m->data = data;
+ }
+ return m;
+}
+
+static tool_mime *tool_mime_new_filedata(tool_mime *parent,
+ const char *filename,
+ bool isremotefile,
+ CURLcode *errcode)
+{
+ CURLcode result = CURLE_OK;
+ tool_mime *m = NULL;
+
+ *errcode = CURLE_OUT_OF_MEMORY;
+ if(strcmp(filename, "-")) {
+ /* This is a normal file. */
+ filename = strdup(filename);
+ if(filename) {
+ m = tool_mime_new(parent, TOOLMIME_FILE);
+ if(!m)
+ CONST_FREE(filename);
+ else {
+ m->data = filename;
+ if(!isremotefile)
+ m->kind = TOOLMIME_FILEDATA;
+ *errcode = CURLE_OK;
+ }
+ }
+ }
+ else { /* Standard input. */
+ int fd = fileno(stdin);
+ char *data = NULL;
+ curl_off_t size;
+ curl_off_t origin;
+ struct_stat sbuf;
+
+ set_binmode(stdin);
+ origin = ftell(stdin);
+ /* If stdin is a regular file, do not buffer data but read it
+ when needed. */
+ if(fd >= 0 && origin >= 0 && !fstat(fd, &sbuf) &&
+#ifdef __VMS
+ sbuf.st_fab_rfm != FAB$C_VAR && sbuf.st_fab_rfm != FAB$C_VFC &&
+#endif
+ S_ISREG(sbuf.st_mode)) {
+ size = sbuf.st_size - origin;
+ if(size < 0)
+ size = 0;
+ }
+ else { /* Not suitable for direct use, buffer stdin data. */
+ size_t stdinsize = 0;
+
+ if(file2memory(&data, &stdinsize, stdin) != PARAM_OK) {
+ /* Out of memory. */
+ return m;
+ }
+
+ if(ferror(stdin)) {
+ result = CURLE_READ_ERROR;
+ Curl_safefree(data);
+ data = NULL;
+ }
+ else if(!stdinsize) {
+ /* Zero-length data has been freed. Re-create it. */
+ data = strdup("");
+ if(!data)
+ return m;
+ }
+ size = curlx_uztoso(stdinsize);
+ origin = 0;
+ }
+ m = tool_mime_new(parent, TOOLMIME_STDIN);
+ if(!m)
+ Curl_safefree(data);
+ else {
+ m->data = data;
+ m->origin = origin;
+ m->size = size;
+ m->curpos = 0;
+ if(!isremotefile)
+ m->kind = TOOLMIME_STDINDATA;
+ *errcode = result;
+ }
+ }
+ return m;
+}
+
+void tool_mime_free(tool_mime *mime)
+{
+ if(mime) {
+ if(mime->subparts)
+ tool_mime_free(mime->subparts);
+ if(mime->prev)
+ tool_mime_free(mime->prev);
+ CONST_SAFEFREE(mime->name);
+ CONST_SAFEFREE(mime->filename);
+ CONST_SAFEFREE(mime->type);
+ CONST_SAFEFREE(mime->encoder);
+ CONST_SAFEFREE(mime->data);
+ curl_slist_free_all(mime->headers);
+ free(mime);
+ }
+}
+
+
+/* Mime part callbacks for stdin. */
+size_t tool_mime_stdin_read(char *buffer,
+ size_t size, size_t nitems, void *arg)
+{
+ tool_mime *sip = (tool_mime *) arg;
+ curl_off_t bytesleft;
+ (void) size; /* Always 1: ignored. */
+
+ if(sip->size >= 0) {
+ if(sip->curpos >= sip->size)
+ return 0; /* At eof. */
+ bytesleft = sip->size - sip->curpos;
+ if(curlx_uztoso(nitems) > bytesleft)
+ nitems = curlx_sotouz(bytesleft);
+ }
+ if(nitems) {
+ if(sip->data) {
+ /* Return data from memory. */
+ memcpy(buffer, sip->data + curlx_sotouz(sip->curpos), nitems);
+ }
+ else {
+ /* Read from stdin. */
+ nitems = fread(buffer, 1, nitems, stdin);
+ if(ferror(stdin)) {
+ /* Show error only once. */
+ if(sip->config) {
+ warnf(sip->config, "stdin: %s\n", strerror(errno));
+ sip->config = NULL;
+ }
+ return CURL_READFUNC_ABORT;
+ }
+ }
+ sip->curpos += curlx_uztoso(nitems);
+ }
+ return nitems;
+}
+
+int tool_mime_stdin_seek(void *instream, curl_off_t offset, int whence)
+{
+ tool_mime *sip = (tool_mime *) instream;
+
+ switch(whence) {
+ case SEEK_CUR:
+ offset += sip->curpos;
+ break;
+ case SEEK_END:
+ offset += sip->size;
+ break;
+ }
+ if(offset < 0)
+ return CURL_SEEKFUNC_CANTSEEK;
+ if(!sip->data) {
+ if(fseek(stdin, (long) (offset + sip->origin), SEEK_SET))
+ return CURL_SEEKFUNC_CANTSEEK;
+ }
+ sip->curpos = offset;
+ return CURL_SEEKFUNC_OK;
+}
+
+/* Translate an internal mime tree into a libcurl mime tree. */
+
+static CURLcode tool2curlparts(CURL *curl, tool_mime *m, curl_mime *mime)
+{
+ CURLcode ret = CURLE_OK;
+ curl_mimepart *part = NULL;
+ curl_mime *submime = NULL;
+ const char *filename = NULL;
+
+ if(m) {
+ ret = tool2curlparts(curl, m->prev, mime);
+ if(!ret) {
+ part = curl_mime_addpart(mime);
+ if(!part)
+ ret = CURLE_OUT_OF_MEMORY;
+ }
+ if(!ret) {
+ filename = m->filename;
+ switch(m->kind) {
+ case TOOLMIME_PARTS:
+ ret = tool2curlmime(curl, m, &submime);
+ if(!ret) {
+ ret = curl_mime_subparts(part, submime);
+ if(ret)
+ curl_mime_free(submime);
+ }
+ break;
+
+ case TOOLMIME_DATA:
+#ifdef CURL_DOES_CONVERSIONS
+ /* Our data is always textual: convert it to ASCII. */
+ {
+ size_t size = strlen(m->data);
+ char *cp = malloc(size + 1);
+
+ if(!cp)
+ ret = CURLE_OUT_OF_MEMORY;
+ else {
+ memcpy(cp, m->data, size + 1);
+ ret = convert_to_network(cp, size);
+ if(!ret)
+ ret = curl_mime_data(part, cp, CURL_ZERO_TERMINATED);
+ free(cp);
+ }
+ }
+#else
+ ret = curl_mime_data(part, m->data, CURL_ZERO_TERMINATED);
+#endif
+ break;
+
+ case TOOLMIME_FILE:
+ case TOOLMIME_FILEDATA:
+ ret = curl_mime_filedata(part, m->data);
+ if(!ret && m->kind == TOOLMIME_FILEDATA && !filename)
+ ret = curl_mime_filename(part, NULL);
+ break;
+
+ case TOOLMIME_STDIN:
+ if(!filename)
+ filename = "-";
+ /* FALLTHROUGH */
+ case TOOLMIME_STDINDATA:
+ ret = curl_mime_data_cb(part, m->size,
+ (curl_read_callback) tool_mime_stdin_read,
+ (curl_seek_callback) tool_mime_stdin_seek,
+ NULL, m);
+ break;
+
+ default:
+ /* Other cases not possible in this context. */
+ break;
+ }
+ }
+ if(!ret && filename)
+ ret = curl_mime_filename(part, filename);
+ if(!ret)
+ ret = curl_mime_type(part, m->type);
+ if(!ret)
+ ret = curl_mime_headers(part, m->headers, 0);
+ if(!ret)
+ ret = curl_mime_encoder(part, m->encoder);
+ if(!ret)
+ ret = curl_mime_name(part, m->name);
+ }
+ return ret;
+}
+
+CURLcode tool2curlmime(CURL *curl, tool_mime *m, curl_mime **mime)
+{
+ CURLcode ret = CURLE_OK;
+
+ *mime = curl_mime_init(curl);
+ if(!*mime)
+ ret = CURLE_OUT_OF_MEMORY;
+ else
+ ret = tool2curlparts(curl, m->subparts, *mime);
+ if(ret) {
+ curl_mime_free(*mime);
+ *mime = NULL;
+ }
+ return ret;
+}
/*
* helper function to get a word from form param
@@ -379,130 +671,15 @@ static int get_param_part(struct OperationConfig *config, char endchar,
}
-/* Mime part callbacks for stdin. */
-static size_t stdin_read(char *buffer, size_t size, size_t nitems, void *arg)
-{
- standard_input *sip = (standard_input *) arg;
- curl_off_t bytesleft;
- (void) size; /* Always 1: ignored. */
-
- if(sip->curpos >= sip->size)
- return 0; /* At eof. */
- bytesleft = sip->size - sip->curpos;
- if((curl_off_t) nitems > bytesleft)
- nitems = (size_t) bytesleft;
- if(sip->data) {
- /* Return data from memory. */
- memcpy(buffer, sip->data + (size_t) sip->curpos, nitems);
- }
- else {
- /* Read from stdin. */
- nitems = fread(buffer, 1, nitems, stdin);
- }
- sip->curpos += nitems;
- return nitems;
-}
-
-static int stdin_seek(void *instream, curl_off_t offset, int whence)
-{
- standard_input *sip = (standard_input *) instream;
-
- switch(whence) {
- case SEEK_CUR:
- offset += sip->curpos;
- break;
- case SEEK_END:
- offset += sip->size;
- break;
- }
- if(offset < 0)
- return CURL_SEEKFUNC_CANTSEEK;
- if(!sip->data) {
- if(fseek(stdin, (long) (offset + sip->origin), SEEK_SET))
- return CURL_SEEKFUNC_CANTSEEK;
- }
- sip->curpos = offset;
- return CURL_SEEKFUNC_OK;
-}
-
-static void stdin_free(void *ptr)
-{
- standard_input *sip = (standard_input *) ptr;
-
- Curl_safefree(sip->data);
- free(sip);
-}
-
-/* Set a part's data from a file, taking care about the pseudo filename "-" as
- * a shortcut to read stdin: if so, use a callback to read OUR stdin (to
- * workaround Windows DLL file handle caveat).
- * If stdin is a regular file opened in binary mode, save current offset as
- * origin for rewind and do not buffer data. Else read to EOF and keep in
- * memory. In all cases, compute the stdin data size.
- */
-static CURLcode file_or_stdin(curl_mimepart *part, const char *file)
-{
- standard_input *sip = NULL;
- int fd = -1;
- CURLcode result = CURLE_OK;
- struct_stat sbuf;
-
- if(strcmp(file, "-"))
- return curl_mime_filedata(part, file);
-
- sip = (standard_input *) calloc(1, sizeof(*sip));
- if(!sip)
- return CURLE_OUT_OF_MEMORY;
-
- set_binmode(stdin);
-
- /* If stdin is a regular file, do not buffer data but read it when needed. */
- fd = fileno(stdin);
- sip->origin = ftell(stdin);
- if(fd >= 0 && sip->origin >= 0 && !fstat(fd, &sbuf) &&
-#ifdef __VMS
- sbuf.st_fab_rfm != FAB$C_VAR && sbuf.st_fab_rfm != FAB$C_VFC &&
-#endif
- S_ISREG(sbuf.st_mode)) {
- sip->size = sbuf.st_size - sip->origin;
- if(sip->size < 0)
- sip->size = 0;
- }
- else { /* Not suitable for direct use, buffer stdin data. */
- size_t stdinsize = 0;
-
- sip->origin = 0;
- if(file2memory(&sip->data, &stdinsize, stdin) != PARAM_OK)
- result = CURLE_OUT_OF_MEMORY;
- else {
- if(!stdinsize)
- sip->data = NULL; /* Has been freed if no data. */
- sip->size = stdinsize;
- if(ferror(stdin))
- result = CURLE_READ_ERROR;
- }
- }
-
- /* Set remote file name. */
- if(!result)
- result = curl_mime_filename(part, file);
-
- /* Set part's data from callback. */
- if(!result)
- result = curl_mime_data_cb(part, sip->size,
- stdin_read, stdin_seek, stdin_free, sip);
- if(result)
- stdin_free(sip);
- return result;
-}
-
-
/***************************************************************************
*
* formparse()
*
* Reads a 'name=value' parameter and builds the appropriate linked list.
*
+ * If the value is of the form '<filename', field data is read from the
+ * given file.
+
* Specify files to upload with 'name=@filename', or 'name=@"filename"'
* in case the filename contain ',' or ';'. Supports specified
* given Content-Type of the files. Such as ';type=<content-type>'.
@@ -539,15 +716,27 @@ static CURLcode file_or_stdin(curl_mimepart *part, const char *file)
* else curl will fail to figure out the correct filename. if the filename
* tobe quoted contains '"' or '\', '"' and '\' must be escaped by backslash.
*
- * This function uses curl_formadd to fulfill it's job. Is heavily based on
- * the old curl_formparse code.
- *
***************************************************************************/
+/* Convenience macros for null pointer check. */
+#define NULL_CHECK(ptr, init, retcode) { \
+ (ptr) = (init); \
+ if(!(ptr)) { \
+ warnf(config->global, "out of memory!\n"); \
+ curl_slist_free_all(headers); \
+ Curl_safefree(contents); \
+ return retcode; \
+ } \
+}
+#define SET_TOOL_MIME_PTR(m, field, retcode) { \
+ if(field) \
+ NULL_CHECK((m)->field, strdup(field), retcode); \
+}
+
int formparse(struct OperationConfig *config,
const char *input,
- curl_mime **mimepost,
- curl_mime **mimecurrent,
+ tool_mime **mimeroot,
+ tool_mime **mimecurrent,
bool literal_value)
{
/* input MUST be a string in the format 'name=contents' and we'll
@@ -560,25 +749,17 @@ int formparse(struct OperationConfig *config,
char *filename = NULL;
char *encoder = NULL;
struct curl_slist *headers = NULL;
- curl_mimepart *part = NULL;
+ tool_mime *part = NULL;
CURLcode res;
/* Allocate the main mime structure if needed. */
- if(!*mimepost) {
- *mimepost = curl_mime_init(config->easy);
- if(!*mimepost) {
- warnf(config->global, "curl_mime_init failed!\n");
- return 1;
- }
- *mimecurrent = *mimepost;
+ if(!*mimecurrent) {
+ NULL_CHECK(*mimeroot, tool_mime_new_parts(NULL), 1);
+ *mimecurrent = *mimeroot;
}
/* Make a copy we can overwrite. */
- contents = strdup(input);
- if(!contents) {
- fprintf(config->global->errors, "out of memory\n");
- return 2;
- }
+ NULL_CHECK(contents, strdup(input), 2);
/* Scan for the end of the name. */
contp = strchr(contents, '=');
@@ -589,8 +770,6 @@ int formparse(struct OperationConfig *config,
*contp++ = '\0';
if(*contp == '(' && !literal_value) {
- curl_mime *subparts;
-
/* Starting a multipart. */
sep = get_param_part(config, '\0',
&contp, &data, &type, NULL, NULL, &headers);
@@ -598,55 +777,26 @@ int formparse(struct OperationConfig *config,
Curl_safefree(contents);
return 3;
}
- subparts = curl_mime_init(config->easy);
- if(!subparts) {
- warnf(config->global, "curl_mime_init failed!\n");
- curl_slist_free_all(headers);
- Curl_safefree(contents);
- return 4;
- }
- part = curl_mime_addpart(*mimecurrent);
- if(!part) {
- warnf(config->global, "curl_mime_addpart failed!\n");
- curl_mime_free(subparts);
- curl_slist_free_all(headers);
- Curl_safefree(contents);
- return 5;
- }
- if(curl_mime_subparts(part, subparts)) {
- warnf(config->global, "curl_mime_subparts failed!\n");
- curl_mime_free(subparts);
- curl_slist_free_all(headers);
- Curl_safefree(contents);
- return 6;
- }
- *mimecurrent = subparts;
- if(curl_mime_headers(part, headers, 1)) {
- warnf(config->global, "curl_mime_headers failed!\n");
- curl_slist_free_all(headers);
- Curl_safefree(contents);
- return 7;
- }
- if(curl_mime_type(part, type)) {
- warnf(config->global, "curl_mime_type failed!\n");
- Curl_safefree(contents);
- return 8;
- }
+ NULL_CHECK(part, tool_mime_new_parts(*mimecurrent), 4);
+ *mimecurrent = part;
+ part->headers = headers;
+ headers = NULL;
+ SET_TOOL_MIME_PTR(part, type, 5);
}
else if(!name && !strcmp(contp, ")") && !literal_value) {
- /* Ending a mutipart. */
- if(*mimecurrent == *mimepost) {
+ /* Ending a multipart. */
+ if(*mimecurrent == *mimeroot) {
warnf(config->global, "no multipart to terminate!\n");
Curl_safefree(contents);
- return 9;
+ return 6;
}
- *mimecurrent = (*mimecurrent)->parent->parent;
+ *mimecurrent = (*mimecurrent)->parent;
}
else if('@' == contp[0] && !literal_value) {
/* we use the @-letter to indicate file name(s) */
- curl_mime *subparts = NULL;
+ tool_mime *subparts = NULL;
do {
/* since this was a file, it may have a content-type specifier
@@ -655,10 +805,8 @@ int formparse(struct OperationConfig *config,
sep = get_param_part(config, ',', &contp,
&data, &type, &filename, &encoder, &headers);
if(sep < 0) {
- if(subparts != *mimecurrent)
- curl_mime_free(subparts);
Curl_safefree(contents);
- return 10;
+ return 7;
}
/* now contp point to comma or string end.
@@ -666,125 +814,68 @@ int formparse(struct OperationConfig *config,
if(!subparts) {
if(sep != ',') /* If there is a single file. */
subparts = *mimecurrent;
- else {
- subparts = curl_mime_init(config->easy);
- if(!subparts) {
- warnf(config->global, "curl_mime_init failed!\n");
- curl_slist_free_all(headers);
- Curl_safefree(contents);
- return 11;
- }
- }
+ else
+ NULL_CHECK(subparts, tool_mime_new_parts(*mimecurrent), 8);
}
- /* Allocate a part for that file. */
- part = curl_mime_addpart(subparts);
- if(!part) {
- warnf(config->global, "curl_mime_addpart failed!\n");
- if(subparts != *mimecurrent)
- curl_mime_free(subparts);
- curl_slist_free_all(headers);
- Curl_safefree(contents);
- return 12;
- }
-
- /* Set part headers. */
- if(curl_mime_headers(part, headers, 1)) {
- warnf(config->global, "curl_mime_headers failed!\n");
- if(subparts != *mimecurrent)
- curl_mime_free(subparts);
- curl_slist_free_all(headers);
- Curl_safefree(contents);
- return 13;
- }
-
- /* Setup file in part. */
- res = file_or_stdin(part, data);
- if(res) {
- warnf(config->global, "setting file %s failed!\n", data);
- if(res != CURLE_READ_ERROR) {
- if(subparts != *mimecurrent)
- curl_mime_free(subparts);
+ /* Store that file in a part. */
+ NULL_CHECK(part,
+ tool_mime_new_filedata(subparts, data, TRUE, &res), 9);
+ part->headers = headers;
+ headers = NULL;
+ part->config = config->global;
+ if(res == CURLE_READ_ERROR) {
+ /* An error occurred while reading stdin: if read has started,
+ issue the error now. Else, delay it until processed by
+ libcurl. */
+ if(part->size > 0) {
+ warnf(config->global,
+ "error while reading standard input\n");
Curl_safefree(contents);
- return 14;
+ return 10;
}
+ CONST_SAFEFREE(part->data);
+ part->data = NULL;
+ part->size = -1;
+ res = CURLE_OK;
}
- if(filename && curl_mime_filename(part, filename)) {
- warnf(config->global, "curl_mime_filename failed!\n");
- if(subparts != *mimecurrent)
- curl_mime_free(subparts);
- Curl_safefree(contents);
- return 15;
- }
- if(curl_mime_type(part, type)) {
- warnf(config->global, "curl_mime_type failed!\n");
- if(subparts != *mimecurrent)
- curl_mime_free(subparts);
- Curl_safefree(contents);
- return 16;
- }
- if(curl_mime_encoder(part, encoder)) {
- warnf(config->global, "curl_mime_encoder failed!\n");
- if(subparts != *mimecurrent)
- curl_mime_free(subparts);
- Curl_safefree(contents);
- return 17;
- }
+ SET_TOOL_MIME_PTR(part, filename, 11);
+ SET_TOOL_MIME_PTR(part, type, 12);
+ SET_TOOL_MIME_PTR(part, encoder, 13);
/* *contp could be '\0', so we just check with the delimiter */
} while(sep); /* loop if there's another file name */
-
- /* now we add the multiple files section */
- if(subparts != *mimecurrent) {
- part = curl_mime_addpart(*mimecurrent);
- if(!part) {
- warnf(config->global, "curl_mime_addpart failed!\n");
- curl_mime_free(subparts);
- Curl_safefree(contents);
- return 18;
- }
- if(curl_mime_subparts(part, subparts)) {
- warnf(config->global, "curl_mime_subparts failed!\n");
- curl_mime_free(subparts);
- Curl_safefree(contents);
- return 19;
- }
- }
+ part = (*mimecurrent)->subparts; /* Set name on group. */
}
else {
- /* Allocate a mime part. */
- part = curl_mime_addpart(*mimecurrent);
- if(!part) {
- warnf(config->global, "curl_mime_addpart failed!\n");
- Curl_safefree(contents);
- return 20;
- }
-
if(*contp == '<' && !literal_value) {
++contp;
sep = get_param_part(config, '\0', &contp,
&data, &type, NULL, &encoder, &headers);
if(sep < 0) {
Curl_safefree(contents);
- return 21;
- }
-
- /* Set part headers. */
- if(curl_mime_headers(part, headers, 1)) {
- warnf(config->global, "curl_mime_headers failed!\n");
- curl_slist_free_all(headers);
- Curl_safefree(contents);
- return 22;
+ return 14;
}
- /* Setup file in part. */
- res = file_or_stdin(part, data);
- if(res) {
- warnf(config->global, "setting file %s failed!\n", data);
- if(res != CURLE_READ_ERROR) {
+ NULL_CHECK(part, tool_mime_new_filedata(*mimecurrent, data, FALSE,
+ &res), 15);
+ part->headers = headers;
+ headers = NULL;
+ part->config = config->global;
+ if(res == CURLE_READ_ERROR) {
+ /* An error occurred while reading stdin: if read has started,
+ issue the error now. Else, delay it until processed by
+ libcurl. */
+ if(part->size > 0) {
+ warnf(config->global,
+ "error while reading standard input\n");
Curl_safefree(contents);
- return 23;
+ return 16;
}
+ CONST_SAFEFREE(part->data);
+ part->data = NULL;
+ part->size = -1;
+ res = CURLE_OK;
}
}
else {
@@ -795,48 +886,18 @@ int formparse(struct OperationConfig *config,
&data, &type, &filename, &encoder, &headers);
if(sep < 0) {
Curl_safefree(contents);
- return 24;
+ return 17;
}
}
- /* Set part headers. */
- if(curl_mime_headers(part, headers, 1)) {
- warnf(config->global, "curl_mime_headers failed!\n");
- curl_slist_free_all(headers);
- Curl_safefree(contents);
- return 25;
- }
-
-#ifdef CURL_DOES_CONVERSIONS
- if(convert_to_network(data, strlen(data))) {
- warnf(config->global, "curl_formadd failed!\n");
- Curl_safefree(contents);
- return 26;
- }
-#endif
-
- if(curl_mime_data(part, data, CURL_ZERO_TERMINATED)) {
- warnf(config->global, "curl_mime_data failed!\n");
- Curl_safefree(contents);
- return 27;
- }
+ NULL_CHECK(part, tool_mime_new_data(*mimecurrent, data), 18);
+ part->headers = headers;
+ headers = NULL;
}
- if(curl_mime_filename(part, filename)) {
- warnf(config->global, "curl_mime_filename failed!\n");
- Curl_safefree(contents);
- return 28;
- }
- if(curl_mime_type(part, type)) {
- warnf(config->global, "curl_mime_type failed!\n");
- Curl_safefree(contents);
- return 29;
- }
- if(curl_mime_encoder(part, encoder)) {
- warnf(config->global, "curl_mime_encoder failed!\n");
- Curl_safefree(contents);
- return 30;
- }
+ SET_TOOL_MIME_PTR(part, filename, 19);
+ SET_TOOL_MIME_PTR(part, type, 20);
+ SET_TOOL_MIME_PTR(part, encoder, 21);
if(sep) {
*contp = (char) sep;
@@ -846,16 +907,12 @@ int formparse(struct OperationConfig *config,
}
/* Set part name. */
- if(name && curl_mime_name(part, name)) {
- warnf(config->global, "curl_mime_name failed!\n");
- Curl_safefree(contents);
- return 31;
- }
+ SET_TOOL_MIME_PTR(part, name, 22);
}
else {
warnf(config->global, "Illegally formatted input field!\n");
Curl_safefree(contents);
- return 32;
+ return 23;
}
Curl_safefree(contents);
return 0;
diff --git a/src/tool_formparse.h b/src/tool_formparse.h
index cdf02d02..750fe451 100644
--- a/src/tool_formparse.h
+++ b/src/tool_formparse.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -23,10 +23,50 @@
***************************************************************************/
#include "tool_setup.h"
+/* Private structure for mime/parts. */
+
+typedef enum {
+ TOOLMIME_NONE = 0,
+ TOOLMIME_PARTS,
+ TOOLMIME_DATA,
+ TOOLMIME_FILE,
+ TOOLMIME_FILEDATA,
+ TOOLMIME_STDIN,
+ TOOLMIME_STDINDATA
+} toolmimekind;
+
+typedef struct tool_mime tool_mime;
+struct tool_mime {
+ /* Structural fields. */
+ toolmimekind kind; /* Part kind. */
+ tool_mime *parent; /* Parent item. */
+ tool_mime *prev; /* Previous sibling (reverse order link). */
+ /* Common fields. */
+ const char *data; /* Actual data or data filename. */
+ const char *name; /* Part name. */
+ const char *filename; /* Part's filename. */
+ const char *type; /* Part's mime type. */
+ const char *encoder; /* Part's requested encoding. */
+ struct curl_slist *headers; /* User-defined headers. */
+ /* TOOLMIME_PARTS fields. */
+ tool_mime *subparts; /* Part's subparts. */
+ /* TOOLMIME_STDIN/TOOLMIME_STDINDATA fields. */
+ curl_off_t origin; /* Stdin read origin offset. */
+ curl_off_t size; /* Stdin data size. */
+ curl_off_t curpos; /* Stdin current read position. */
+ struct GlobalConfig *config; /* For access from callback. */
+};
+
+size_t tool_mime_stdin_read(char *buffer,
+ size_t size, size_t nitems, void *arg);
+int tool_mime_stdin_seek(void *instream, curl_off_t offset, int whence);
+
int formparse(struct OperationConfig *config,
const char *input,
- curl_mime **mimepost,
- curl_mime **mimecurrent,
+ tool_mime **mimeroot,
+ tool_mime **mimecurrent,
bool literal_value);
+CURLcode tool2curlmime(CURL *curl, tool_mime *m, curl_mime **mime);
+void tool_mime_free(tool_mime *mime);
#endif /* HEADER_CURL_TOOL_FORMPARSE_H */
diff --git a/src/tool_getparam.c b/src/tool_getparam.c
index c7ba5f24..b133cb87 100644
--- a/src/tool_getparam.c
+++ b/src/tool_getparam.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -214,6 +214,7 @@ static const struct LongShort aliases[]= {
{"a", "append", ARG_BOOL},
{"A", "user-agent", ARG_STRING},
{"b", "cookie", ARG_STRING},
+ {"ba", "alt-svc", ARG_STRING},
{"B", "use-ascii", ARG_BOOL},
{"c", "cookie-jar", ARG_STRING},
{"C", "continue-at", ARG_STRING},
@@ -1244,17 +1245,23 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
/* This specifies the User-Agent name */
GetStr(&config->useragent, nextarg);
break;
- case 'b': /* cookie string coming up: */
- if(nextarg[0] == '@') {
- nextarg++;
- }
- else if(strchr(nextarg, '=')) {
- /* A cookie string must have a =-letter */
- GetStr(&config->cookie, nextarg);
+ case 'b':
+ switch(subletter) {
+ case 'a': /* --alt-svc */
+ GetStr(&config->altsvc, nextarg);
break;
+ default: /* --cookie string coming up: */
+ if(nextarg[0] == '@') {
+ nextarg++;
+ }
+ else if(strchr(nextarg, '=')) {
+ /* A cookie string must have a =-letter */
+ GetStr(&config->cookie, nextarg);
+ break;
+ }
+ /* We have a cookie file to read from! */
+ GetStr(&config->cookiefile, nextarg);
}
- /* We have a cookie file to read from! */
- GetStr(&config->cookiefile, nextarg);
break;
case 'B':
/* use ASCII/text when transferring */
@@ -1691,7 +1698,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
to sort this out slowly and carefully */
if(formparse(config,
nextarg,
- &config->mimepost,
+ &config->mimeroot,
&config->mimecurrent,
(subletter == 's')?TRUE:FALSE)) /* 's' is literal string */
return PARAM_BAD_USE;
diff --git a/src/tool_getpass.c b/src/tool_getpass.c
index e5e2d6dc..bf531a53 100644
--- a/src/tool_getpass.c
+++ b/src/tool_getpass.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -21,6 +21,10 @@
***************************************************************************/
#include "tool_setup.h"
+#if defined(__AMIGA__) && !defined(__amigaos4__)
+# undef HAVE_TERMIOS_H
+#endif
+
#ifndef HAVE_GETPASS_R
/* this file is only for systems without getpass_r() */
diff --git a/src/tool_help.c b/src/tool_help.c
index aeffd3de..8a3c2582 100644
--- a/src/tool_help.c
+++ b/src/tool_help.c
@@ -48,6 +48,8 @@ struct helptxt {
static const struct helptxt helptext[] = {
{" --abstract-unix-socket <path>",
"Connect via abstract Unix domain socket"},
+ {" --alt-svc <file name>",
+ "Enable alt-svc with this cache file"},
{" --anyauth",
"Pick any authentication method"},
{"-a, --append",
@@ -78,7 +80,7 @@ static const struct helptxt helptext[] = {
"Connect to host"},
{"-C, --continue-at <offset>",
"Resumed transfer offset"},
- {"-b, --cookie <data>",
+ {"-b, --cookie <data|filename>",
"Send cookies from string/file"},
{"-c, --cookie-jar <filename>",
"Write cookies to <filename> after operation"},
@@ -525,6 +527,7 @@ static const struct feat feats[] = {
{"HTTPS-proxy", CURL_VERSION_HTTPS_PROXY},
{"MultiSSL", CURL_VERSION_MULTI_SSL},
{"PSL", CURL_VERSION_PSL},
+ {"alt-svc", CURL_VERSION_ALTSVC},
};
void tool_help(void)
@@ -540,6 +543,21 @@ void tool_help(void)
}
}
+static int
+featcomp(const void *p1, const void *p2)
+{
+ /* The arguments to this function are "pointers to pointers to char", but
+ the comparison arguments are "pointers to char", hence the following cast
+ plus dereference */
+#ifdef HAVE_STRCASECMP
+ return strcasecmp(* (char * const *) p1, * (char * const *) p2);
+#elif defined(HAVE_STRCMPI)
+ return strcmpi(* (char * const *) p1, * (char * const *) p2);
+#else
+ return strcmp(* (char * const *) p1, * (char * const *) p2);
+#endif
+}
+
void tool_version_info(void)
{
const char *const *proto;
@@ -559,15 +577,20 @@ void tool_version_info(void)
puts(""); /* newline */
}
if(curlinfo->features) {
+ char *featp[ sizeof(feats) / sizeof(feats[0]) + 1];
+ size_t numfeat = 0;
unsigned int i;
- printf("Features: ");
+ printf("Features:");
for(i = 0; i < sizeof(feats)/sizeof(feats[0]); i++) {
if(curlinfo->features & feats[i].bitmask)
- printf("%s ", feats[i].name);
+ featp[numfeat++] = (char *)feats[i].name;
}
#ifdef USE_METALINK
- printf("Metalink ");
+ featp[numfeat++] = (char *)"Metalink";
#endif
+ qsort(&featp[0], numfeat, sizeof(char *), featcomp);
+ for(i = 0; i< numfeat; i++)
+ printf(" %s", featp[i]);
puts(""); /* newline */
}
}
diff --git a/src/tool_hugehelp.c b/src/tool_hugehelp.c
index 539a8140..074a8cf3 100644
--- a/src/tool_hugehelp.c
+++ b/src/tool_hugehelp.c
@@ -172,15 +172,36 @@ void hugehelp(void)
"\n"
" Added in 7.53.0.\n"
"\n"
+" --alt-svc <file name>\n"
+" (HTTPS) WARNING: this option is experiemental. Do not use in\n"
+" production.\n"
+"\n"
+" This option enables the alt-svc parser in curl. If the file name\n"
+" points to an existing alt-svc cache file, that will be used. Af-\n"
+, stdout);
+ fputs(
+" ter a completed transfer, the cache will be saved to the file\n"
+" name again if it has been modified.\n"
+"\n"
+" Specifiy a \"\" file name (zero length) to avoid loading/saving\n"
+" and make curl just handle the cache in memory.\n"
+"\n"
+" If this option is used several times, curl will load contents\n"
+" from all the files but the the last one will be used for saving.\n"
+"\n"
+" Added in 7.64.1.\n"
+"\n"
" --anyauth\n"
+, stdout);
+ fputs(
" (HTTP) Tells curl to figure out authentication method by itself,\n"
" and use the most secure one the remote site claims to support.\n"
" This is done by first doing a request and checking the response-\n"
" headers, thus possibly inducing an extra network round-trip.\n"
-, stdout);
- fputs(
" This is used instead of setting a specific authentication\n"
" method, which you can do with --basic, --digest, --ntlm, and\n"
+, stdout);
+ fputs(
" --negotiate.\n"
"\n"
" Using --anyauth is not recommended if you do uploads from stdin,\n"
@@ -188,23 +209,23 @@ void hugehelp(void)
" must be able to rewind. If the need should arise when uploading\n"
" from stdin, the upload operation will fail.\n"
"\n"
-, stdout);
- fputs(
" Used together with -u, --user.\n"
"\n"
" See also --proxy-anyauth and --basic and --digest.\n"
"\n"
" -a, --append\n"
+, stdout);
+ fputs(
" (FTP SFTP) When used in an upload, this makes curl append to the\n"
" target file instead of overwriting it. If the remote file\n"
" doesn't exist, it will be created. Note that this flag is ig-\n"
" nored by some SFTP servers (including OpenSSH).\n"
"\n"
" --basic\n"
-, stdout);
- fputs(
" (HTTP) Tells curl to use HTTP Basic authentication with the re-\n"
" mote host. This is the default and this option is usually point-\n"
+, stdout);
+ fputs(
" less, unless you use it to override a previously set option that\n"
" sets a different authentication method (such as --ntlm, --di-\n"
" gest, or --negotiate).\n"
@@ -214,60 +235,60 @@ void hugehelp(void)
" See also --proxy-basic.\n"
"\n"
" --cacert <file>\n"
-, stdout);
- fputs(
" (TLS) Tells curl to use the specified certificate file to verify\n"
" the peer. The file may contain multiple CA certificates. The\n"
+, stdout);
+ fputs(
" certificate(s) must be in PEM format. Normally curl is built to\n"
" use a default file for this, so this option is typically used to\n"
" alter that default file.\n"
"\n"
" curl recognizes the environment variable named 'CURL_CA_BUNDLE'\n"
-, stdout);
- fputs(
" if it is set, and uses the given path as a path to a CA cert\n"
" bundle. This option overrides that variable.\n"
"\n"
" The windows version of curl will automatically look for a CA\n"
+, stdout);
+ fputs(
" certs file named 'curl-ca-bundle.crt', either in the same direc-\n"
" tory as curl.exe, or in the Current Working Directory, or in any\n"
" folder along your PATH.\n"
"\n"
" If curl is built against the NSS SSL library, the NSS PEM\n"
-, stdout);
- fputs(
" PKCS#11 module (libnsspem.so) needs to be available for this op-\n"
" tion to work properly.\n"
"\n"
" (iOS and macOS only) If curl is built against Secure Transport,\n"
+, stdout);
+ fputs(
" then this option is supported for backward compatibility with\n"
" other SSL engines, but it should not be set. If the option is\n"
" not set, then curl will use the certificates in the system and\n"
-, stdout);
- fputs(
" user Keychain to verify the peer, which is the preferred method\n"
" of verifying the peer's certificate chain.\n"
"\n"
" (Schannel only) This option is supported for Schannel in Windows\n"
+, stdout);
+ fputs(
" 7 or later with libcurl 7.60 or later. This option is supported\n"
" for backward compatibility with other SSL engines; instead it is\n"
" recommended to use Windows' store of root certificates (the de-\n"
" fault for Schannel).\n"
"\n"
-, stdout);
- fputs(
" If this option is used several times, the last one will be used.\n"
"\n"
" --capath <dir>\n"
" (TLS) Tells curl to use the specified certificate directory to\n"
+, stdout);
+ fputs(
" verify the peer. Multiple paths can be provided by separating\n"
" them with \":\" (e.g. \"path1:path2:path3\"). The certificates must\n"
" be in PEM format, and if curl is built against OpenSSL, the di-\n"
" rectory must have been processed using the c_rehash utility sup-\n"
-, stdout);
- fputs(
" plied with OpenSSL. Using --capath can allow OpenSSL-powered\n"
" curl to make SSL-connections much more efficiently than using\n"
+, stdout);
+ fputs(
" --cacert if the --cacert file contains many CA certificates.\n"
"\n"
" If this option is set, the default capath value will be ignored,\n"
@@ -275,11 +296,11 @@ void hugehelp(void)
"\n"
" --cert-status\n"
" (TLS) Tells curl to verify the status of the server certificate\n"
-, stdout);
- fputs(
" by using the Certificate Status Request (aka. OCSP stapling) TLS\n"
" extension.\n"
"\n"
+, stdout);
+ fputs(
" If this option is enabled and the server sends an invalid (e.g.\n"
" expired) response, if the response suggests that the server cer-\n"
" tificate has been revoked, or no response at all is received,\n"
@@ -288,11 +309,11 @@ void hugehelp(void)
" This is currently only implemented in the OpenSSL, GnuTLS and\n"
" NSS backends.\n"
"\n"
-, stdout);
- fputs(
" Added in 7.41.0.\n"
"\n"
" --cert-type <type>\n"
+, stdout);
+ fputs(
" (TLS) Tells curl what type the provided client certificate is\n"
" using. PEM, DER, ENG and P12 are recognized types. If not spec-\n"
" ified, PEM is assumed.\n"
@@ -302,71 +323,71 @@ void hugehelp(void)
" See also -E, --cert and --key and --key-type.\n"
"\n"
" -E, --cert <certificate[:password]>\n"
+" (TLS) Tells curl to use the specified client certificate file\n"
, stdout);
fputs(
-" (TLS) Tells curl to use the specified client certificate file\n"
" when getting a file with HTTPS, FTPS or another SSL-based proto-\n"
" col. The certificate must be in PKCS#12 format if using Secure\n"
" Transport, or PEM format if using any other engine. If the op-\n"
" tional password isn't specified, it will be queried for on the\n"
" terminal. Note that this option assumes a \"certificate\" file\n"
+" that is the private key and the client certificate concatenated!\n"
, stdout);
fputs(
-" that is the private key and the client certificate concatenated!\n"
" See -E, --cert and --key to specify them independently.\n"
"\n"
" If curl is built against the NSS SSL library then this option\n"
" can tell curl the nickname of the certificate to use within the\n"
" NSS database defined by the environment variable SSL_DIR (or by\n"
" default /etc/pki/nssdb). If the NSS PEM PKCS#11 module (lib-\n"
+" nsspem.so) is available then PEM files may be loaded. If you\n"
, stdout);
fputs(
-" nsspem.so) is available then PEM files may be loaded. If you\n"
" want to use a file from the current directory, please precede it\n"
" with \"./\" prefix, in order to avoid confusion with a nickname.\n"
" If the nickname contains \":\", it needs to be preceded by \"\\\" so\n"
" that it is not recognized as password delimiter. If the nick-\n"
" name contains \"\\\", it needs to be escaped as \"\\\\\" so that it is\n"
-, stdout);
- fputs(
" not recognized as an escape character.\n"
"\n"
+, stdout);
+ fputs(
" 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"
" ify a certificate located in a PKCS#11 device. A string begin-\n"
" ning with \"pkcs11:\" will be interpreted as a PKCS#11 URI. If a\n"
" PKCS#11 URI is provided, then the --engine option will be set as\n"
+" \"pkcs11\" if none was provided and the --cert-type option will be\n"
, stdout);
fputs(
-" \"pkcs11\" if none was provided and the --cert-type option will be\n"
" set as \"ENG\" if none was provided.\n"
"\n"
" (iOS and macOS only) If curl is built against Secure Transport,\n"
" then the certificate string can either be the name of a certifi-\n"
" cate/private key in the system or user keychain, or the path to\n"
" a PKCS#12-encoded certificate and private key. If you want to\n"
+" use a file from the current directory, please precede it with\n"
, stdout);
fputs(
-" use a file from the current directory, please precede it with\n"
" \"./\" prefix, in order to avoid confusion with a nickname.\n"
"\n"
" (Schannel only) Client certificates must be specified by a path\n"
" expression to a certificate store. (Loading PFX is not sup-\n"
" ported; you can import it to a store first). You can use \"<store\n"
" location>\\<store name>\\<thumbprint>\" to refer to a certificate\n"
+" in the system certificates store, for example, \"Curren-\n"
, stdout);
fputs(
-" in the system certificates store, for example, \"Curren-\n"
" tUser\\MY\\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a\". Thumbprint\n"
" is usually a SHA-1 hex string which you can see in certificate\n"
" details. Following store locations are supported: CurrentUser,\n"
" LocalMachine, CurrentService, Services, CurrentUserGroupPolicy,\n"
" LocalMachineGroupPolicy, LocalMachineEnterprise.\n"
"\n"
-, stdout);
- fputs(
" If this option is used several times, the last one will be used.\n"
"\n"
+, stdout);
+ fputs(
" See also --cert-type and --key and --key-type.\n"
"\n"
" --ciphers <list of ciphers>\n"
@@ -376,11 +397,11 @@ void hugehelp(void)
"\n"
" https://curl.haxx.se/docs/ssl-ciphers.html\n"
"\n"
-, stdout);
- fputs(
" If this option is used several times, the last one will be used.\n"
"\n"
" --compressed-ssh\n"
+, stdout);
+ fputs(
" (SCP SFTP) Enables built-in SSH compression. This is a request,\n"
" not an order; the server may or may not do it.\n"
"\n"
@@ -389,42 +410,42 @@ void hugehelp(void)
" --compressed\n"
" (HTTP) Request a compressed response using one of the algorithms\n"
" curl supports, and save the uncompressed document. If this op-\n"
-, stdout);
- fputs(
" tion is used and the server sends an unsupported encoding, curl\n"
" will report an error.\n"
"\n"
" -K, --config <file>\n"
"\n"
+, stdout);
+ fputs(
" Specify a text file to read curl arguments from. The command\n"
" line arguments found in the text file will be used as if they\n"
" were provided on the command line.\n"
"\n"
" Options and their parameters must be specified on the same line\n"
-, stdout);
- fputs(
" in the file, separated by whitespace, colon, or the equals sign.\n"
" Long option names can optionally be given in the config file\n"
+, stdout);
+ fputs(
" without the initial double dashes and if so, the colon or equals\n"
" characters can be used as separators. If the option is specified\n"
" with one or two dashes, there can be no colon or equals charac-\n"
" ter between the option and its parameter.\n"
"\n"
-, stdout);
- fputs(
" If the parameter is to contain whitespace, the parameter must be\n"
" enclosed within quotes. Within double quotes, the following es-\n"
+, stdout);
+ fputs(
" cape sequences are available: \\\\, \\\", \\t, \\n, \\r and \\v. A back-\n"
" slash preceding any other letter is ignored. If the first column\n"
" of a config line is a '#' character, the rest of the line will\n"
" be treated as a comment. Only write one option per physical line\n"
-, stdout);
- fputs(
" in the config file.\n"
"\n"
" Specify the filename to -K, --config as '-' to make curl read\n"
" the file from stdin.\n"
"\n"
+, stdout);
+ fputs(
" Note that to be able to specify a URL in the config file, you\n"
" need to specify it using the --url option, and not by simply\n"
" writing the URL on its own line. So, it could look similar to\n"
@@ -432,19 +453,19 @@ void hugehelp(void)
"\n"
" url = \"https://curl.haxx.se/docs/\"\n"
"\n"
-, stdout);
- fputs(
" When curl is invoked, it (unless -q, --disable is used) checks\n"
" for a default config file and uses it if found. The default con-\n"
+, stdout);
+ fputs(
" fig file is checked for in the following places in this order:\n"
"\n"
" 1) curl tries to find the \"home dir\": It first checks for the\n"
" CURL_HOME and then the HOME environment variables. Failing that,\n"
" it uses getpwuid() on Unix-like systems (which returns the home\n"
-, stdout);
- fputs(
" dir given the current user in your system). On Windows, it then\n"
" checks for the APPDATA variable, or as a last resort the '%USER-\n"
+, stdout);
+ fputs(
" PROFILE%\\Application Data'.\n"
"\n"
" 2) On windows, if there is no _curlrc file in the home dir, it\n"
@@ -452,12 +473,12 @@ void hugehelp(void)
" Unix-like systems, it will simply try to load .curlrc from the\n"
" determined home dir.\n"
"\n"
-, stdout);
- fputs(
" # --- Example file ---\n"
" # this is a comment\n"
" url = \"example.com\"\n"
" output = \"curlhere.html\"\n"
+, stdout);
+ fputs(
" user-agent = \"superagent/1.0\"\n"
"\n"
" # and fetch another URL too\n"
@@ -467,12 +488,12 @@ void hugehelp(void)
" # --- End of example file ---\n"
"\n"
" This option can be used multiple times to load multiple config\n"
-, stdout);
- fputs(
" files.\n"
"\n"
" --connect-timeout <seconds>\n"
" Maximum time in seconds that you allow curl's connection to\n"
+, stdout);
+ fputs(
" take. This only limits the connection phase, so if curl con-\n"
" nects within the given period it will continue - if not it will\n"
" exit. Since version 7.32.0, this option accepts decimal values.\n"
@@ -480,93 +501,93 @@ void hugehelp(void)
"\n"
" See also -m, --max-time.\n"
"\n"
-, stdout);
- fputs(
" --connect-to <HOST1:PORT1:HOST2:PORT2>\n"
"\n"
" For a request to the given HOST1:PORT1 pair, connect to\n"
+, stdout);
+ fputs(
" HOST2:PORT2 instead. This option is suitable to direct requests\n"
" at a specific server, e.g. at a specific cluster node in a clus-\n"
" ter of servers. This option is only used to establish the net-\n"
" work connection. It does NOT affect the hostname/port that is\n"
-, stdout);
- fputs(
" used for TLS/SSL (e.g. SNI, certificate verification) or for the\n"
" application protocols. \"HOST1\" and \"PORT1\" may be the empty\n"
+, stdout);
+ fputs(
" string, meaning \"any host/port\". \"HOST2\" and \"PORT2\" may also be\n"
" the empty string, meaning \"use the request's original\n"
" host/port\".\n"
"\n"
" A \"host\" specified to this option is compared as a string, so it\n"
-, stdout);
- fputs(
" needs to match the name used in request URL. It can be either\n"
" numerical such as \"127.0.0.1\" or the full host name such as \"ex-\n"
" ample.org\".\n"
"\n"
+, stdout);
+ fputs(
" This option can be used many times to add many connect rules.\n"
"\n"
" See also --resolve and -H, --header. Added in 7.49.0.\n"
"\n"
" -C, --continue-at <offset>\n"
" Continue/Resume a previous file transfer at the given offset.\n"
-, stdout);
- fputs(
" The given offset is the exact number of bytes that will be\n"
" skipped, counting from the beginning of the source file before\n"
" it is transferred to the destination. If used with uploads, the\n"
+, stdout);
+ fputs(
" FTP server command SIZE will not be used by curl.\n"
"\n"
" Use \"-C -\" to tell curl to automatically find out where/how to\n"
" resume the transfer. It then uses the given output/input files\n"
" to figure that out.\n"
"\n"
-, stdout);
- fputs(
" If this option is used several times, the last one will be used.\n"
"\n"
" See also -r, --range.\n"
"\n"
" -c, --cookie-jar <filename>\n"
" (HTTP) Specify to which file you want curl to write all cookies\n"
+, stdout);
+ fputs(
" after a completed operation. Curl writes all cookies from its\n"
" in-memory cookie storage to the given file at the end of opera-\n"
" tions. If no cookies are known, no data will be written. The\n"
-, stdout);
- fputs(
" file will be written using the Netscape cookie file format. If\n"
" you set the file name to a single dash, \"-\", the cookies will be\n"
" written to stdout.\n"
"\n"
+, stdout);
+ fputs(
" This command line option will activate the cookie engine that\n"
" makes curl record and use cookies. Another way to activate it is\n"
" to use the -b, --cookie option.\n"
"\n"
" If the cookie jar can't be created or written to, the whole curl\n"
-, stdout);
- fputs(
" operation won't fail or even report an error clearly. Using -v,\n"
" --verbose will get a warning displayed, but that is the only\n"
+, stdout);
+ fputs(
" visible feedback you get about this possibly lethal situation.\n"
"\n"
" If this option is used several times, the last specified file\n"
" name will be used.\n"
"\n"
-" -b, --cookie <data>\n"
+" -b, --cookie <data|filename>\n"
" (HTTP) Pass the data to the HTTP server in the Cookie header. It\n"
-, stdout);
- fputs(
" is supposedly the data previously received from the server in a\n"
" \"Set-Cookie:\" line. The data should be in the format\n"
+, stdout);
+ fputs(
" \"NAME1=VALUE1; NAME2=VALUE2\".\n"
"\n"
" If no '=' symbol is used in the argument, it is instead treated\n"
" as a filename to read previously stored cookie from. This option\n"
" also activates the cookie engine which will make curl record in-\n"
-, stdout);
- fputs(
" coming cookies, which may be handy if you're using this in com-\n"
" bination with the -L, --location option or do multiple URL\n"
+, stdout);
+ fputs(
" transfers on the same invoke. If the file name is exactly a mi-\n"
" nus (\"-\"), curl will instead the contents from stdin.\n"
"\n"
@@ -574,38 +595,38 @@ void hugehelp(void)
" HTTP headers (Set-Cookie style) or the Netscape/Mozilla cookie\n"
" file format.\n"
"\n"
-, stdout);
- fputs(
" The file specified with -b, --cookie is only used as input. No\n"
" cookies will be written to the file. To store cookies, use the\n"
+, stdout);
+ fputs(
" -c, --cookie-jar option.\n"
"\n"
" Exercise caution if you are using this option and multiple\n"
" transfers may occur. If you use the NAME1=VALUE1; format, or in\n"
" a file use the Set-Cookie format and don't specify a domain,\n"
-, stdout);
- fputs(
" then the cookie is sent for any domain (even after redirects are\n"
" followed) and cannot be modified by a server-set cookie. If the\n"
+, stdout);
+ fputs(
" cookie engine is enabled and a server sets a cookie of the same\n"
" name then both will be sent on a future transfer to that server,\n"
" likely not what you intended. To address these issues set a do-\n"
" main in Set-Cookie (doing that will include sub domains) or use\n"
-, stdout);
- fputs(
" the Netscape format.\n"
"\n"
" If this option is used several times, the last one will be used.\n"
+, stdout);
+ fputs(
" Users very often want to both read cookies from a file and write\n"
" updated cookies back to a file, so using both -b, --cookie and\n"
" -c, --cookie-jar in the same command line is common.\n"
"\n"
" --create-dirs\n"
" When used in conjunction with the -o, --output option, curl will\n"
-, stdout);
- fputs(
" create the necessary local directory hierarchy as needed. This\n"
" option creates the dirs mentioned with the -o, --output option,\n"
+, stdout);
+ fputs(
" nothing else. If the --output file name uses no dir or if the\n"
" dirs it mentions already exist, no dir will be created.\n"
"\n"
@@ -613,13 +634,13 @@ void hugehelp(void)
" create-dirs.\n"
"\n"
" --crlf (FTP SMTP) Convert LF to CRLF in upload. Useful for MVS\n"
-, stdout);
- fputs(
" (OS/390).\n"
"\n"
" (SMTP added in 7.40.0)\n"
"\n"
" --crlfile <file>\n"
+, stdout);
+ fputs(
" (TLS) Provide a file using PEM format with a Certificate Revoca-\n"
" tion List that may specify peer certificates that are to be con-\n"
" sidered revoked.\n"
@@ -631,10 +652,10 @@ void hugehelp(void)
" --data-ascii <data>\n"
" (HTTP) This is just an alias for -d, --data.\n"
"\n"
-, stdout);
- fputs(
" --data-binary <data>\n"
" (HTTP) This posts data exactly as specified with no extra pro-\n"
+, stdout);
+ fputs(
" cessing whatsoever.\n"
"\n"
" If you start the data with the letter @, the rest should be a\n"
@@ -642,10 +663,10 @@ void hugehelp(void)
" does, except that newlines and carriage returns are preserved\n"
" and conversions are never done.\n"
"\n"
-, stdout);
- fputs(
" Like -d, --data the default content-type sent to the server is\n"
" application/x-www-form-urlencoded. If you want the data to be\n"
+, stdout);
+ fputs(
" treated as arbitrary binary data by the server then set the con-\n"
" tent-type to octet-stream: -H \"Content-Type: application/octet-\n"
" stream\".\n"
@@ -653,12 +674,12 @@ void hugehelp(void)
" If this option is used several times, the ones following the\n"
" first will append data as described in -d, --data.\n"
"\n"
-, stdout);
- fputs(
" --data-raw <data>\n"
" (HTTP) This posts data similarly to -d, --data but without the\n"
" special interpretation of the @ character.\n"
"\n"
+, stdout);
+ fputs(
" See also -d, --data. Added in 7.43.0.\n"
"\n"
" --data-urlencode <data>\n"
@@ -666,23 +687,23 @@ void hugehelp(void)
" with the exception that this performs URL-encoding.\n"
"\n"
" To be CGI-compliant, the <data> part should begin with a name\n"
-, stdout);
- fputs(
" followed by a separator and a content specification. The <data>\n"
" part can be passed to curl using one of the following syntaxes:\n"
"\n"
" content\n"
+, stdout);
+ fputs(
" This will make curl URL-encode the content and pass that\n"
" on. Just be careful so that the content doesn't contain\n"
" any = or @ symbols, as that will then make the syntax\n"
" match one of the other cases below!\n"
"\n"
" =content\n"
-, stdout);
- fputs(
" This will make curl URL-encode the content and pass that\n"
" on. The preceding = symbol is not included in the data.\n"
"\n"
+, stdout);
+ fputs(
" name=content\n"
" This will make curl URL-encode the content part and pass\n"
" that on. Note that the name part is expected to be URL-\n"
@@ -690,61 +711,61 @@ void hugehelp(void)
"\n"
" @filename\n"
" This will make curl load data from the given file (in-\n"
-, stdout);
- fputs(
" cluding any newlines), URL-encode that data and pass it\n"
" on in the POST.\n"
"\n"
" name@filename\n"
+, stdout);
+ fputs(
" This will make curl load data from the given file (in-\n"
" cluding any newlines), URL-encode that data and pass it\n"
" on in the POST. The name part gets an equal sign ap-\n"
" pended, resulting in name=urlencoded-file-content. Note\n"
-, stdout);
- fputs(
" that the name is expected to be URL-encoded already.\n"
" See also -d, --data and --data-raw. Added in 7.18.0.\n"
"\n"
" -d, --data <data>\n"
+, stdout);
+ fputs(
" (HTTP) Sends the specified data in a POST request to the HTTP\n"
" server, in the same way that a browser does when a user has\n"
" filled in an HTML form and presses the submit button. This will\n"
" cause curl to pass the data to the server using the content-type\n"
-, stdout);
- fputs(
" application/x-www-form-urlencoded. Compare to -F, --form.\n"
"\n"
" --data-raw is almost the same but does not have a special inter-\n"
+, stdout);
+ fputs(
" pretation of the @ character. To post data purely binary, you\n"
" should instead use the --data-binary option. To URL-encode the\n"
" value of a form field you may use --data-urlencode.\n"
"\n"
" If any of these options is used more than once on the same com-\n"
-, stdout);
- fputs(
" mand line, the data pieces specified will be merged together\n"
" with a separating &-symbol. Thus, using '-d name=daniel -d\n"
+, stdout);
+ fputs(
" skill=lousy' would generate a post chunk that looks like\n"
" 'name=daniel&skill=lousy'.\n"
"\n"
" If you start the data with the letter @, the rest should be a\n"
" file name to read the data from, or - if you want curl to read\n"
-, stdout);
- fputs(
" the data from stdin. Multiple files can also be specified. Post-\n"
" ing data from a file named from a file like that, carriage re-\n"
+, stdout);
+ fputs(
" turns and newlines will be stripped out. If you don't want the @\n"
" character to have a special interpretation use --data-raw in-\n"
" stead.\n"
"\n"
" See also --data-binary and --data-urlencode and --data-raw. This\n"
" option overrides -F, --form and -I, --head and -T, --upload-\n"
-, stdout);
- fputs(
" file.\n"
"\n"
" --delegation <LEVEL>\n"
" (GSS/kerberos) Set LEVEL to tell the server what it is allowed\n"
+, stdout);
+ fputs(
" to delegate when it comes to user credentials.\n"
"\n"
" none Don't allow any delegation.\n"
@@ -753,12 +774,12 @@ void hugehelp(void)
" in the Kerberos service ticket, which is a matter of\n"
" realm policy.\n"
"\n"
-, stdout);
- fputs(
" always Unconditionally allow the server to delegate.\n"
"\n"
" --digest\n"
" (HTTP) Enables HTTP Digest authentication. This is an authenti-\n"
+, stdout);
+ fputs(
" cation scheme that prevents the password from being sent over\n"
" the wire in clear text. Use this in combination with the normal\n"
" -u, --user option to set user name and password.\n"
@@ -766,20 +787,20 @@ void hugehelp(void)
" If this option is used several times, only the first one is\n"
" used.\n"
"\n"
-, stdout);
- fputs(
" See also -u, --user and --proxy-digest and --anyauth. This op-\n"
" tion overrides --basic and --ntlm and --negotiate.\n"
"\n"
" --disable-eprt\n"
+, stdout);
+ fputs(
" (FTP) Tell curl to disable the use of the EPRT and LPRT commands\n"
" when doing active FTP transfers. Curl will normally always first\n"
" attempt to use EPRT, then LPRT before using PORT, but with this\n"
" option, it will use PORT right away. EPRT and LPRT are exten-\n"
-, stdout);
- fputs(
" sions to the original FTP protocol, and may not work on all\n"
" servers, but they enable more functionality in a better way than\n"
+, stdout);
+ fputs(
" the traditional PORT command.\n"
"\n"
" --eprt can be used to explicitly enable EPRT again and --no-eprt\n"
@@ -788,23 +809,23 @@ void hugehelp(void)
" If the server is accessed using IPv6, this option will have no\n"
" effect as EPRT is necessary then.\n"
"\n"
-, stdout);
- fputs(
" Disabling EPRT only changes the active behavior. If you want to\n"
" switch to passive mode you need to not use -P, --ftp-port or\n"
" force it with --ftp-pasv.\n"
"\n"
+, stdout);
+ fputs(
" --disable-epsv\n"
" (FTP) (FTP) Tell curl to disable the use of the EPSV command\n"
" when doing passive FTP transfers. Curl will normally always\n"
" first attempt to use EPSV before PASV, but with this option, it\n"
" will not try using EPSV.\n"
"\n"
-, stdout);
- fputs(
" --epsv can be used to explicitly enable EPSV again and --no-epsv\n"
" is an alias for --disable-epsv.\n"
"\n"
+, stdout);
+ fputs(
" If the server is an IPv6 host, this option will have no effect\n"
" as EPSV is necessary then.\n"
"\n"
@@ -813,9 +834,9 @@ void hugehelp(void)
"\n"
" -q, --disable\n"
" If used as the first parameter on the command line, the curlrc\n"
+" config file will not be read and used. See the -K, --config for\n"
, stdout);
fputs(
-" config file will not be read and used. See the -K, --config for\n"
" details on the default config file search path.\n"
"\n"
" --disallow-username-in-url\n"
@@ -826,9 +847,9 @@ void hugehelp(void)
"\n"
" --dns-interface <interface>\n"
" (DNS) Tell curl to send outgoing DNS requests through <inter-\n"
+" face>. This option is a counterpart to --interface (which does\n"
, stdout);
fputs(
-" face>. This option is a counterpart to --interface (which does\n"
" not affect DNS). The supplied string must be an interface name\n"
" (not an address).\n"
"\n"
@@ -838,9 +859,9 @@ void hugehelp(void)
"\n"
" --dns-ipv4-addr <address>\n"
" (DNS) Tell curl to bind to <ip-address> when making IPv4 DNS re-\n"
+" quests, so that the DNS requests originate from this address.\n"
, stdout);
fputs(
-" quests, so that the DNS requests originate from this address.\n"
" The argument should be a single IPv4 address.\n"
"\n"
" See also --dns-interface and --dns-ipv6-addr. --dns-ipv4-addr\n"
@@ -849,9 +870,9 @@ void hugehelp(void)
"\n"
" --dns-ipv6-addr <address>\n"
" (DNS) Tell curl to bind to <ip-address> when making IPv6 DNS re-\n"
+" quests, so that the DNS requests originate from this address.\n"
, stdout);
fputs(
-" quests, so that the DNS requests originate from this address.\n"
" The argument should be a single IPv6 address.\n"
"\n"
" See also --dns-interface and --dns-ipv4-addr. --dns-ipv6-addr\n"
@@ -860,9 +881,9 @@ void hugehelp(void)
"\n"
" --dns-servers <addresses>\n"
" Set the list of DNS servers to be used instead of the system de-\n"
+" fault. The list of IP addresses should be separated with com-\n"
, stdout);
fputs(
-" fault. The list of IP addresses should be separated with com-\n"
" mas. Port numbers may also optionally be given as :<port-number>\n"
" after each IP address.\n"
"\n"
@@ -871,11 +892,11 @@ void hugehelp(void)
"\n"
" --doh-url <URL>\n"
" (all) Specifies which DNS-over-HTTPS (DOH) server to use to re-\n"
-, stdout);
- fputs(
" solve hostnames, instead of using the default name resolver\n"
" mechanism. The URL must be HTTPS.\n"
"\n"
+, stdout);
+ fputs(
" If this option is used several times, the last one will be used.\n"
"\n"
" -D, --dump-header <filename>\n"
@@ -883,10 +904,10 @@ void hugehelp(void)
" file.\n"
"\n"
" This option is handy to use when you want to store the headers\n"
-, stdout);
- fputs(
" that an HTTP site sends to you. Cookies from the headers could\n"
" then be read in a second curl invocation by using the -b,\n"
+, stdout);
+ fputs(
" --cookie option! The -c, --cookie-jar option is a better way to\n"
" store cookies.\n"
"\n"
@@ -895,12 +916,12 @@ void hugehelp(void)
"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
-, stdout);
- fputs(
" See also -o, --output.\n"
"\n"
" --egd-file <file>\n"
" (TLS) Specify the path name to the Entropy Gathering Daemon\n"
+, stdout);
+ fputs(
" socket. The socket is used to seed the random engine for SSL\n"
" connections.\n"
"\n"
@@ -909,45 +930,45 @@ void hugehelp(void)
" --engine <name>\n"
" (TLS) Select the OpenSSL crypto engine to use for cipher opera-\n"
" tions. Use --engine list to print a list of build-time supported\n"
-, stdout);
- fputs(
" engines. Note that not all (or none) of the engines may be\n"
" available at run-time.\n"
"\n"
" --expect100-timeout <seconds>\n"
+, stdout);
+ fputs(
" (HTTP) Maximum time in seconds that you allow curl to wait for a\n"
" 100-continue response when curl emits an Expects: 100-continue\n"
" header in its request. By default curl will wait one second.\n"
" This option accepts decimal values! When curl stops waiting, it\n"
-, stdout);
- fputs(
" will continue as if the response has been received.\n"
"\n"
" See also --connect-timeout. Added in 7.47.0.\n"
"\n"
" --fail-early\n"
+, stdout);
+ fputs(
" Fail and exit on the first detected transfer error.\n"
"\n"
" When curl is used to do multiple transfers on the command line,\n"
" it will attempt to operate on each given URL, one by one. By de-\n"
" fault, it will ignore errors if there are more URLs given and\n"
-, stdout);
- fputs(
" the last URL's success will determine the error code curl re-\n"
" turns. So early failures will be \"hidden\" by subsequent success-\n"
" ful transfers.\n"
"\n"
+, stdout);
+ fputs(
" Using this option, curl will instead return an error on the\n"
" first transfer that fails, independent of the amount of URLs\n"
" that are given on the command line. This way, no transfer fail-\n"
" ures go undetected by scripts and similar.\n"
"\n"
-, stdout);
- fputs(
" This option is global and does not need to be specified for each\n"
" use of -:, --next.\n"
"\n"
" This option does not imply -f, --fail, which causes transfers to\n"
+, stdout);
+ fputs(
" fail due to the server's HTTP status code. You can combine the\n"
" two options, however note -f, --fail is not global and is there-\n"
" fore contained by -:, --next.\n"
@@ -955,27 +976,25 @@ void hugehelp(void)
" Added in 7.52.0.\n"
"\n"
" -f, --fail\n"
-, stdout);
- fputs(
" (HTTP) Fail silently (no output at all) on server errors. This\n"
" is mostly done to better enable scripts etc to better deal with\n"
" failed attempts. In normal cases when an HTTP server fails to\n"
+, stdout);
+ fputs(
" deliver a document, it returns an HTML document stating so\n"
" (which often also describes why and more). This flag will pre-\n"
" vent curl from outputting that and return error 22.\n"
"\n"
-, stdout);
- fputs(
" This method is not fail-safe and there are occasions where non-\n"
" successful response codes will slip through, especially when au-\n"
" thentication is involved (response codes 401 and 407).\n"
"\n"
" --false-start\n"
+, stdout);
+ fputs(
" (TLS) Tells curl to use false start during the TLS handshake.\n"
" False start is a mode where a TLS client will start sending ap-\n"
" plication data before verifying the server's Finished message,\n"
-, stdout);
- fputs(
" thus saving a round trip when performing a full handshake.\n"
"\n"
" This is currently only implemented in the NSS and Secure Trans-\n"
@@ -983,22 +1002,22 @@ void hugehelp(void)
"\n"
" Added in 7.42.0.\n"
"\n"
+, stdout);
+ fputs(
" --form-string <name=string>\n"
" (HTTP SMTP IMAP) Similar to -F, --form except that the value\n"
" string for the named parameter is used literally. Leading '@'\n"
-, stdout);
- fputs(
" and '<' characters, and the ';type=' string in the value have no\n"
" special meaning. Use this in preference to -F, --form if there's\n"
" any possibility that the string value may accidentally trigger\n"
" the '@' or '<' features of -F, --form.\n"
"\n"
+, stdout);
+ fputs(
" See also -F, --form.\n"
"\n"
" -F, --form <name=content>\n"
" (HTTP SMTP IMAP) For HTTP protocol family, this lets curl emu-\n"
-, stdout);
- fputs(
" late a filled-in form in which a user has pressed the submit\n"
" button. This causes curl to POST data using the Content-Type\n"
" multipart/form-data according to RFC 2388.\n"
@@ -1006,26 +1025,26 @@ void hugehelp(void)
" For SMTP and IMAP protocols, this is the mean to compose a mul-\n"
" tipart mail message to transmit.\n"
"\n"
-" This enables uploading of binary files etc. To force the 'con-\n"
, stdout);
fputs(
+" This enables uploading of binary files etc. To force the 'con-\n"
" tent' part to be a file, prefix the file name with an @ sign. To\n"
" just get the content part from a file, prefix the file name with\n"
" the symbol <. The difference between @ and < is then that @\n"
" makes a file get attached in the post as a file upload, while\n"
" the < makes a text field and just get the contents for that text\n"
-" field from a file.\n"
-"\n"
, stdout);
fputs(
+" field from a file.\n"
+"\n"
" Tell curl to read content from stdin instead of a file by using\n"
" - as filename. This goes for both @ and < constructs. When stdin\n"
" is used, the contents is buffered in memory first by curl to de-\n"
" termine its size and allow a possible resend. Defining a part's\n"
" data from a named non-regular file (such as a named pipe or sim-\n"
-" ilar) is unfortunately not subject to buffering and will be ef-\n"
, stdout);
fputs(
+" ilar) is unfortunately not subject to buffering and will be ef-\n"
" fectively read at transmission time; since the full size is un-\n"
" known before the transfer starts, such data is sent as chunks by\n"
" HTTP and rejected by IMAP.\n"
@@ -1034,10 +1053,10 @@ void hugehelp(void)
" name of the form-field to which the file portrait.jpg will be\n"
" the input:\n"
"\n"
-" curl -F profile=@portrait.jpg https://example.com/upload.cgi\n"
-"\n"
, stdout);
fputs(
+" curl -F profile=@portrait.jpg https://example.com/upload.cgi\n"
+"\n"
" Example: send a your name and shoe size in two text fields to\n"
" the server:\n"
"\n"
@@ -1047,10 +1066,10 @@ void hugehelp(void)
" it as a plain text field, but get the contents for it from a lo-\n"
" cal file:\n"
"\n"
-" curl -F \"story=<hugefile.txt\" https://example.com/\n"
-"\n"
, stdout);
fputs(
+" curl -F \"story=<hugefile.txt\" https://example.com/\n"
+"\n"
" You can also tell curl what Content-Type to use by using\n"
" 'type=', in a manner similar to:\n"
"\n"
@@ -1063,10 +1082,10 @@ void hugehelp(void)
" You can also explicitly change the name field of a file upload\n"
" part by setting filename=, like this:\n"
"\n"
-" curl -F \"file=@localfile;filename=nameinpost\" example.com\n"
-"\n"
, stdout);
fputs(
+" curl -F \"file=@localfile;filename=nameinpost\" example.com\n"
+"\n"
" If filename/path contains ',' or ';', it must be quoted by dou-\n"
" ble-quotes like:\n"
"\n"
@@ -1078,11 +1097,11 @@ void hugehelp(void)
" curl -F 'file=@\"localfile\";filename=\"nameinpost\"' example.com\n"
"\n"
" Note that if a filename/path is quoted by double-quotes, any\n"
+, stdout);
+ fputs(
" double-quote or backslash within the filename must be escaped by\n"
" backslash.\n"
"\n"
-, stdout);
- fputs(
" Quoting must also be applied to non-file data if it contains\n"
" semicolons, leading/trailing spaces or leading double quotes:\n"
"\n"
@@ -1092,21 +1111,21 @@ void hugehelp(void)
" You can add custom headers to the field by setting headers=,\n"
" like\n"
"\n"
+, stdout);
+ fputs(
" curl -F \"submit=OK;headers=\\\"X-submit-type: OK\\\"\" example.com\n"
"\n"
" or\n"
"\n"
-, stdout);
- fputs(
" curl -F \"submit=OK;headers=@headerfile\" example.com\n"
"\n"
" The headers= keyword may appear more that once and above notes\n"
" about quoting apply. When headers are read from a file, Empty\n"
" lines and lines starting with '#' are comments and ignored; each\n"
" header can be folded by splitting between two words and starting\n"
-" the continuation line with a space; embedded carriage-returns\n"
, stdout);
fputs(
+" the continuation line with a space; embedded carriage-returns\n"
" and trailing spaces are stripped. Here is an example of a\n"
" header file contents:\n"
"\n"
@@ -1118,9 +1137,9 @@ void hugehelp(void)
" another header\n"
"\n"
" To support sending multipart mail messages, the syntax is ex-\n"
-" tended as follows:\n"
, stdout);
fputs(
+" tended as follows:\n"
" - name can be omitted: the equal sign is the first character of\n"
" the argument,\n"
" - if data starts with '(', this signals to start a new multi-\n"
@@ -1128,9 +1147,9 @@ void hugehelp(void)
" - a multipart can be terminated with a '=)' argument.\n"
"\n"
" Example: the following command sends an SMTP mime e-mail con-\n"
-" sisting in an inline part in two alternative formats: plain text\n"
, stdout);
fputs(
+" sisting in an inline part in two alternative formats: plain text\n"
" and HTML. It attaches a text file:\n"
"\n"
" curl -F '=(;type=multipart/alternative' \\\n"
@@ -1139,20 +1158,20 @@ void hugehelp(void)
" -F '=)' -F '=@textfile.txt' ... smtp://example.com\n"
"\n"
" Data can be encoded for transfer using encoder=. Available en-\n"
-" codings are binary and 8bit that do nothing else than adding the\n"
, stdout);
fputs(
+" codings are binary and 8bit that do nothing else than adding the\n"
" corresponding Content-Transfer-Encoding header, 7bit that only\n"
" rejects 8-bit characters with a transfer error, quoted-printable\n"
" and base64 that encodes data according to the corresponding\n"
" schemes, limiting lines length to 76 characters.\n"
"\n"
" Example: send multipart mail with a quoted-printable text mes-\n"
+, stdout);
+ fputs(
" sage and a base64 attached file:\n"
"\n"
" curl -F '=text message;encoder=quoted-printable' \\\n"
-, stdout);
- fputs(
" -F '=@localfile;encoder=base64' ... smtp://example.com\n"
"\n"
" See further examples and details in the MANUAL.\n"
@@ -1163,10 +1182,10 @@ void hugehelp(void)
" load-file.\n"
"\n"
" --ftp-account <data>\n"
-" (FTP) When an FTP server asks for \"account data\" after user name\n"
-" and password has been provided, this data is sent off using the\n"
, stdout);
fputs(
+" (FTP) When an FTP server asks for \"account data\" after user name\n"
+" and password has been provided, this data is sent off using the\n"
" ACCT command.\n"
"\n"
" If this option is used several times, the last one will be used.\n"
@@ -1175,35 +1194,35 @@ void hugehelp(void)
"\n"
" --ftp-alternative-to-user <command>\n"
" (FTP) If authenticating with the USER and PASS commands fails,\n"
+, stdout);
+ fputs(
" send this command. When connecting to Tumbleweed's Secure\n"
" Transport server over FTPS using a client certificate, using\n"
" \"SITE AUTH\" will tell the server to retrieve the username from\n"
-, stdout);
- fputs(
" the certificate.\n"
" Added in 7.15.5.\n"
"\n"
" --ftp-create-dirs\n"
" (FTP SFTP) When an FTP or SFTP URL/operation uses a path that\n"
" doesn't currently exist on the server, the standard behavior of\n"
+, stdout);
+ fputs(
" curl is to fail. Using this option, curl will instead attempt to\n"
" create missing directories.\n"
"\n"
" See also --create-dirs.\n"
"\n"
" --ftp-method <method>\n"
-, stdout);
- fputs(
" (FTP) Control what method curl should use to reach a file on an\n"
" FTP(S) server. The method argument should be one of the follow-\n"
" ing alternatives:\n"
"\n"
" multicwd\n"
" curl does a single CWD operation for each path part in\n"
-" the given URL. For deep hierarchies this means very many\n"
-" commands. This is how RFC 1738 says it should be done.\n"
, stdout);
fputs(
+" the given URL. For deep hierarchies this means very many\n"
+" commands. This is how RFC 1738 says it should be done.\n"
" This is the default but the slowest behavior.\n"
"\n"
" nocwd curl does no CWD at all. curl will do SIZE, RETR, STOR\n"
@@ -1211,10 +1230,10 @@ void hugehelp(void)
" mands. This is the fastest behavior.\n"
"\n"
" singlecwd\n"
-" curl does one CWD with the full target directory and then\n"
-" operates on the file \"normally\" (like in the multicwd\n"
, stdout);
fputs(
+" curl does one CWD with the full target directory and then\n"
+" operates on the file \"normally\" (like in the multicwd\n"
" case). This is somewhat more standards compliant than\n"
" 'nocwd' but without the full penalty of 'multicwd'.\n"
"\n"
@@ -1222,26 +1241,28 @@ void hugehelp(void)
"\n"
" --ftp-pasv\n"
" (FTP) Use passive mode for the data connection. Passive is the\n"
+, stdout);
+ fputs(
" internal default behavior, but using this option can be used to\n"
" override a previous -P, --ftp-port option.\n"
"\n"
" If this option is used several times, only the first one is\n"
-, stdout);
- fputs(
" used. Undoing an enforced passive really isn't doable but you\n"
" must then instead enforce the correct -P, --ftp-port again.\n"
"\n"
" Passive mode means that curl will try the EPSV command first and\n"
+, stdout);
+ fputs(
" then PASV, unless --disable-epsv is used.\n"
" See also --disable-epsv. Added in 7.11.0.\n"
"\n"
" -P, --ftp-port <address>\n"
" (FTP) Reverses the default initiator/listener roles when con-\n"
-, stdout);
- fputs(
" necting with FTP. This option makes curl use active mode. curl\n"
" then tells the server to connect back to the client's specified\n"
" address and port, while passive mode asks the server to setup an\n"
+, stdout);
+ fputs(
" IP address and port for it to connect to. <address> should be\n"
" one of:\n"
"\n"
@@ -1249,25 +1270,25 @@ void hugehelp(void)
" e.g. \"eth0\" to specify which interface's IP address you\n"
" want to use (Unix only)\n"
"\n"
-, stdout);
- fputs(
" IP address\n"
" e.g. \"192.168.10.1\" to specify the exact IP address\n"
"\n"
" host name\n"
" e.g. \"my.host.domain\" to specify the machine\n"
"\n"
+, stdout);
+ fputs(
" - make curl pick the same IP address that is already used\n"
" for the control connection\n"
"\n"
" If this option is used several times, the last one will be used. Dis-\n"
" able the use of PORT with --ftp-pasv. Disable the attempt to use the\n"
-, stdout);
- fputs(
" EPRT command instead of PORT by using --disable-eprt. EPRT is really\n"
" PORT++.\n"
"\n"
" Since 7.19.5, you can append \":[start]-[end]\" to the right of the ad-\n"
+, stdout);
+ fputs(
" dress, to tell curl what TCP port range to use. That means you specify\n"
" a port range, from a lower to a higher number. A single number works as\n"
" well, but do note that it increases the risk of failure since the port\n"
@@ -1275,11 +1296,11 @@ void hugehelp(void)
"\n"
" See also --ftp-pasv and --disable-eprt.\n"
"\n"
-, stdout);
- fputs(
" --ftp-pret\n"
" (FTP) Tell curl to send a PRET command before PASV (and EPSV).\n"
" Certain FTP servers, mainly drftpd, require this non-standard\n"
+, stdout);
+ fputs(
" command for directory listings as well as up and downloads in\n"
" PASV mode.\n"
"\n"
@@ -1288,11 +1309,11 @@ void hugehelp(void)
" --ftp-skip-pasv-ip\n"
" (FTP) Tell curl to not use the IP address the server suggests in\n"
" its response to curl's PASV command when curl connects the data\n"
-, stdout);
- fputs(
" connection. Instead curl will re-use the same IP address it al-\n"
" ready uses for the control connection.\n"
"\n"
+, stdout);
+ fputs(
" This option has no effect if PORT, EPRT or EPSV is used instead\n"
" of PASV.\n"
"\n"
@@ -1301,9 +1322,9 @@ void hugehelp(void)
" --ftp-ssl-ccc-mode <active/passive>\n"
" (FTP) Sets the CCC mode. The passive mode will not initiate the\n"
" shutdown, but instead wait for the server to do it, and will not\n"
+" reply to the shutdown from the server. The active mode initiates\n"
, stdout);
fputs(
-" reply to the shutdown from the server. The active mode initiates\n"
" the shutdown and waits for a reply from the server.\n"
"\n"
" See also --ftp-ssl-ccc. Added in 7.16.2.\n"
@@ -1312,10 +1333,10 @@ void hugehelp(void)
" (FTP) Use CCC (Clear Command Channel) Shuts down the SSL/TLS\n"
" layer after authenticating. The rest of the control channel com-\n"
" munication will be unencrypted. This allows NAT routers to fol-\n"
-, stdout);
- fputs(
" low the FTP transaction. The default mode is passive.\n"
"\n"
+, stdout);
+ fputs(
" See also --ssl and --ftp-ssl-ccc-mode. Added in 7.16.1.\n"
"\n"
" --ftp-ssl-control\n"
@@ -1327,18 +1348,18 @@ void hugehelp(void)
" Added in 7.16.0.\n"
"\n"
" -G, --get\n"
+" When used, this option will make all data specified with -d,\n"
, stdout);
fputs(
-" When used, this option will make all data specified with -d,\n"
" --data, --data-binary or --data-urlencode to be used in an HTTP\n"
" GET request instead of the POST request that otherwise would be\n"
" used. The data will be appended to the URL with a '?' separator.\n"
" If used in combination with -I, --head, the POST data will in-\n"
" stead be appended to the URL with a HEAD request.\n"
"\n"
+" If this option is used several times, only the first one is\n"
, stdout);
fputs(
-" If this option is used several times, only the first one is\n"
" used. This is because undoing a GET doesn't make sense, but you\n"
" should then instead enforce the alternative method you prefer.\n"
"\n"
@@ -1346,29 +1367,29 @@ void hugehelp(void)
" This option switches off the \"URL globbing parser\". When you set\n"
" this option, you can specify URLs that contain the letters {}[]\n"
" without having them being interpreted by curl itself. Note that\n"
+" these letters are not normal legal URL contents but they should\n"
, stdout);
fputs(
-" these letters are not normal legal URL contents but they should\n"
" be encoded according to the URI standard.\n"
"\n"
" --happy-eyeballs-timeout-ms <milliseconds>\n"
" Happy eyeballs is an algorithm that attempts to connect to both\n"
" IPv4 and IPv6 addresses for dual-stack hosts, preferring IPv6\n"
" first for the number of milliseconds. If the IPv6 address cannot\n"
+" be connected to within that time then a connection attempt is\n"
, stdout);
fputs(
-" be connected to within that time then a connection attempt is\n"
" made to the IPv4 address in parallel. The first connection to be\n"
" established is the one that is used.\n"
"\n"
" The range of suggested useful values is limited. Happy Eyeballs\n"
" RFC 6555 says \"It is RECOMMENDED that connection attempts be\n"
" paced 150-250 ms apart to balance human factors against network\n"
-, stdout);
- fputs(
" load.\" libcurl currently defaults to 200 ms. Firefox and Chrome\n"
" currently default to 300 ms.\n"
"\n"
+, stdout);
+ fputs(
" If this option is used several times, the last one will be used.\n"
"\n"
" Added in 7.59.0.\n"
@@ -1377,9 +1398,9 @@ void hugehelp(void)
" (HTTP) Send a HAProxy PROXY protocol v1 header at the beginning\n"
" of the connection. This is used by some load balancers and re-\n"
" verse proxies to indicate the client's true IP address and port.\n"
+" This option is primarily useful when sending test requests to a\n"
, stdout);
fputs(
-" This option is primarily useful when sending test requests to a\n"
" service that expects this header.\n"
"\n"
" Added in 7.60.0.\n"
@@ -1390,35 +1411,35 @@ void hugehelp(void)
" document. When used on an FTP or FILE file, curl displays the\n"
" file size and last modification time only.\n"
"\n"
+" -H, --header <header/@file>\n"
, stdout);
fputs(
-" -H, --header <header/@file>\n"
" (HTTP) Extra header to include in the request when sending HTTP\n"
" to a server. You may specify any number of extra headers. Note\n"
" that if you should add a custom header that has the same name as\n"
" one of the internal ones curl would use, your externally set\n"
" header will be used instead of the internal one. This allows you\n"
+" to make even trickier stuff than curl would normally do. You\n"
, stdout);
fputs(
-" to make even trickier stuff than curl would normally do. You\n"
" should not replace internally set headers without knowing per-\n"
" fectly well what you're doing. Remove an internal header by giv-\n"
" ing a replacement without content on the right side of the\n"
" colon, as in: -H \"Host:\". If you send the custom header with no-\n"
" value then its header must be terminated with a semicolon, such\n"
-, stdout);
- fputs(
" as -H \"X-Custom-Header;\" to send \"X-Custom-Header:\".\n"
"\n"
+, stdout);
+ fputs(
" curl will make sure that each header you add/replace is sent\n"
" with the proper end-of-line marker, you should thus not add that\n"
" as a part of the header content: do not add newlines or carriage\n"
" returns, they will only mess things up for you.\n"
"\n"
" Starting in 7.55.0, this option can take an argument in @file-\n"
+" name style, which then adds a header for each line in the input\n"
, stdout);
fputs(
-" name style, which then adds a header for each line in the input\n"
" file. Using @- will make curl read the header file from stdin.\n"
"\n"
" See also the -A, --user-agent and -e, --referer options.\n"
@@ -1430,9 +1451,9 @@ void hugehelp(void)
"\n"
" curl -H \"X-First-Name: Joe\" http://example.com/\n"
"\n"
+" WARNING: headers set with this option will be set in all re-\n"
, stdout);
fputs(
-" WARNING: headers set with this option will be set in all 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"
@@ -1441,9 +1462,9 @@ void hugehelp(void)
" This option can be used multiple times to add/replace/remove\n"
" multiple headers.\n"
"\n"
+" -h, --help\n"
, stdout);
fputs(
-" -h, --help\n"
" Usage help. This lists all current command line options with a\n"
" short description.\n"
" --hostpubmd5 <md5>\n"
@@ -1830,20 +1851,20 @@ void hugehelp(void)
" --max-redirs <num>\n"
" (HTTP) Set maximum number of redirection-followings allowed.\n"
" When -L, --location is used, is used to prevent curl from fol-\n"
-" lowing redirections \"in absurdum\". By default, the limit is set\n"
+" lowing redirections too much. By default, the limit is set to 50\n"
+" redirections. Set this option to -1 to make it unlimited.\n"
+"\n"
, stdout);
fputs(
-" to 50 redirections. Set this option to -1 to make it unlimited.\n"
-"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
" -m, --max-time <seconds>\n"
" Maximum time in seconds that you allow the whole operation to\n"
" take. This is useful for preventing your batch jobs from hang-\n"
" ing for hours due to slow networks or links going down. Since\n"
+" 7.32.0, this option accepts decimal values, but the actual time-\n"
, stdout);
fputs(
-" 7.32.0, this option accepts decimal values, but the actual time-\n"
" out will decrease in accuracy as the specified timeout increases\n"
" in decimal precision.\n"
"\n"
@@ -1854,9 +1875,9 @@ void hugehelp(void)
" --metalink\n"
" This option can tell curl to parse and process a given URI as\n"
" Metalink file (both version 3 and 4 (RFC 5854) are supported)\n"
+" and make use of the mirrors listed within for failover if there\n"
, stdout);
fputs(
-" and make use of the mirrors listed within for failover if there\n"
" are errors (such as the file or server not being available). It\n"
" will also verify the hash of the file after the download com-\n"
" pletes. The Metalink file itself is downloaded and processed in\n"
@@ -1864,10 +1885,10 @@ void hugehelp(void)
"\n"
" Example to use a remote Metalink file:\n"
"\n"
-, stdout);
- fputs(
" curl --metalink http://www.example.com/example.metalink\n"
"\n"
+, stdout);
+ fputs(
" To use a Metalink file in the local file system, use FILE proto-\n"
" col (file://):\n"
"\n"
@@ -1876,9 +1897,9 @@ void hugehelp(void)
" Please note that if FILE protocol is disabled, there is no way\n"
" to use a local Metalink file at the time of this writing. Also\n"
" note that if --metalink and -i, --include are used together,\n"
+" --include will be ignored. This is because including headers in\n"
, stdout);
fputs(
-" --include will be ignored. This is because including headers in\n"
" the response will break Metalink parser and if the headers are\n"
" included in the file described in Metalink file, hash check will\n"
" fail.\n"
@@ -1889,9 +1910,9 @@ void hugehelp(void)
" --negotiate\n"
" (HTTP) Enables Negotiate (SPNEGO) authentication.\n"
"\n"
+" This option requires a library built with GSS-API or SSPI sup-\n"
, stdout);
fputs(
-" This option requires a library built with GSS-API or SSPI sup-\n"
" port. Use -V, --version to see if your curl supports GSS-\n"
" API/SSPI or SPNEGO.\n"
"\n"
@@ -1900,9 +1921,9 @@ void hugehelp(void)
" '-u :' is enough as the user name and password from the -u,\n"
" --user option aren't actually used.\n"
"\n"
+" If this option is used several times, only the first one is\n"
, stdout);
fputs(
-" If this option is used several times, only the first one is\n"
" used.\n"
"\n"
" See also --basic and --ntlm and --anyauth and --proxy-negotiate.\n"
@@ -1911,11 +1932,11 @@ void hugehelp(void)
" This option is similar to -n, --netrc, except that you provide\n"
" the path (absolute or relative) to the netrc file that curl\n"
" should use. You can only specify one netrc file per invocation.\n"
-, stdout);
- fputs(
" If several --netrc-file options are provided, the last one will\n"
" be used.\n"
"\n"
+, stdout);
+ fputs(
" It will abide by --netrc-optional if specified.\n"
"\n"
" This option overrides -n, --netrc. Added in 7.21.5.\n"
@@ -1926,20 +1947,20 @@ void hugehelp(void)
"\n"
" See also --netrc-file. This option overrides -n, --netrc.\n"
"\n"
-, stdout);
- fputs(
" -n, --netrc\n"
" Makes curl scan the .netrc (_netrc on Windows) file in the\n"
+, stdout);
+ fputs(
" user's home directory for login name and password. This is typi-\n"
" cally used for FTP on Unix. If used with HTTP, curl will enable\n"
" user authentication. See netrc(5) ftp(1) for details on the file\n"
" format. Curl will not complain if that file doesn't have the\n"
" right permissions (it should not be either world- or group-read-\n"
-, stdout);
- fputs(
" able). The environment variable \"HOME\" is used to find the home\n"
" directory.\n"
"\n"
+, stdout);
+ fputs(
" A quick and very simple example of how to setup a .netrc to al-\n"
" low curl to FTP to the machine host.domain.com with user name\n"
" 'myself' and password 'secret' should look similar to:\n"
@@ -1948,19 +1969,19 @@ void hugehelp(void)
"\n"
" -:, --next\n"
" Tells curl to use a separate operation for the following URL and\n"
+" associated options. This allows you to send several URL re-\n"
, stdout);
fputs(
-" associated options. This allows you to send several URL re-\n"
" quests, each with their own specific options, for example, such\n"
" as different user names or custom requests for each.\n"
"\n"
" -:, --next will reset all local options and only global ones\n"
" will have their values survive over to the operation following\n"
" the -:, --next instruction. Global options include -v, --ver-\n"
-, stdout);
- fputs(
" bose, --trace, --trace-ascii and --fail-early.\n"
"\n"
+, stdout);
+ fputs(
" For example, you can do both a GET and a POST in a single com-\n"
" mand line:\n"
"\n"
@@ -1971,9 +1992,9 @@ void hugehelp(void)
" --no-alpn\n"
" (HTTPS) Disable the ALPN TLS extension. ALPN is enabled by de-\n"
" fault if libcurl was built with an SSL library that supports\n"
+" ALPN. ALPN is used by a libcurl that supports HTTP/2 to negoti-\n"
, stdout);
fputs(
-" ALPN. ALPN is used by a libcurl that supports HTTP/2 to negoti-\n"
" ate HTTP/2 support with the server during https sessions.\n"
"\n"
" See also --no-npn and --http2. --no-alpn requires that the un-\n"
@@ -1982,9 +2003,9 @@ void hugehelp(void)
" -N, --no-buffer\n"
" Disables the buffering of the output stream. In normal work sit-\n"
" uations, curl will use a standard buffered output stream that\n"
+" will have the effect that it will output the data in chunks, not\n"
, stdout);
fputs(
-" will have the effect that it will output the data in chunks, not\n"
" necessarily exactly when the data arrives. Using this option\n"
" will disable that buffering.\n"
"\n"
@@ -1995,9 +2016,9 @@ void hugehelp(void)
" Disables the use of keepalive messages on the TCP connection.\n"
" curl otherwise enables them by default.\n"
"\n"
+" Note that this is the negated option name documented. You can\n"
, stdout);
fputs(
-" Note that this is the negated option name documented. You can\n"
" thus use --keepalive to enforce keepalive.\n"
"\n"
" --no-npn\n"
@@ -2006,9 +2027,9 @@ void hugehelp(void)
" is used by a libcurl that supports HTTP/2 to negotiate HTTP/2\n"
" support with the server during https sessions.\n"
"\n"
+" See also --no-alpn and --http2. --no-npn requires that the un-\n"
, stdout);
fputs(
-" See also --no-alpn and --http2. --no-npn requires that the un-\n"
" derlying libcurl was built to support TLS. Added in 7.36.0.\n"
"\n"
" --no-sessionid\n"
@@ -2016,10 +2037,10 @@ void hugehelp(void)
" all transfers are done using the cache. Note that while nothing\n"
" should ever get hurt by attempting to reuse SSL session-IDs,\n"
" there seem to be broken SSL implementations in the wild that may\n"
-, stdout);
- fputs(
" require you to disable this in order for you to succeed.\n"
"\n"
+, stdout);
+ fputs(
" Note that this is the negated option name documented. You can\n"
" thus use --sessionid to enforce session-ID caching.\n"
"\n"
@@ -2028,18 +2049,18 @@ void hugehelp(void)
" --noproxy <no-proxy-list>\n"
" Comma-separated list of hosts which do not use a proxy, if one\n"
" is specified. The only wildcard is a single * character, which\n"
+" matches all hosts, and effectively disables the proxy. Each name\n"
, stdout);
fputs(
-" matches all hosts, and effectively disables the proxy. Each name\n"
" in this list is matched as either a domain which contains the\n"
" hostname, or the hostname itself. For example, local.com would\n"
" match local.com, local.com:80, and www.local.com, but not\n"
" www.notlocal.com.\n"
"\n"
" Since 7.53.0, This option overrides the environment variables\n"
+" that disable the proxy. If there's an environment variable dis-\n"
, stdout);
fputs(
-" that disable the proxy. If there's an environment variable dis-\n"
" abling a proxy, you can set noproxy list to \"\" to override it.\n"
"\n"
" Added in 7.19.4.\n"
@@ -2051,18 +2072,18 @@ void hugehelp(void)
"\n"
" See also --ntlm and --proxy-ntlm.\n"
"\n"
+" --ntlm (HTTP) Enables NTLM authentication. The NTLM authentication\n"
, stdout);
fputs(
-" --ntlm (HTTP) Enables NTLM authentication. The NTLM authentication\n"
" method was designed by Microsoft and is used by IIS web servers.\n"
" It is a proprietary protocol, reverse-engineered by clever peo-\n"
" ple and implemented in curl based on their efforts. This kind of\n"
" behavior should not be endorsed, you should encourage everyone\n"
" who uses NTLM to switch to a public and documented authentica-\n"
-, stdout);
- fputs(
" tion method instead, such as Digest.\n"
"\n"
+, stdout);
+ fputs(
" If you want to enable NTLM for your proxy authentication, then\n"
" use --proxy-ntlm.\n"
"\n"
@@ -2073,9 +2094,9 @@ void hugehelp(void)
" libcurl was built to support TLS. This option overrides --basic\n"
" and --negotiate and --digest and --anyauth.\n"
"\n"
+" --oauth2-bearer <token>\n"
, stdout);
fputs(
-" --oauth2-bearer <token>\n"
" (IMAP POP3 SMTP) Specify the Bearer Token for OAUTH 2.0 server\n"
" authentication. The Bearer Token is used in conjunction with the\n"
" user name which can be specified as part of the --url or -u,\n"
@@ -2086,9 +2107,9 @@ void hugehelp(void)
"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
+" -o, --output <file>\n"
, stdout);
fputs(
-" -o, --output <file>\n"
" Write output to <file> instead of stdout. If you are using {} or\n"
" [] to fetch multiple documents, you can use '#' followed by a\n"
" number in the <file> specifier. That variable will be replaced\n"
@@ -2098,10 +2119,10 @@ void hugehelp(void)
"\n"
" or use several variables like:\n"
"\n"
-, stdout);
- fputs(
" curl http://{site,host}.host[1-5].com -o \"#1_#2\"\n"
"\n"
+, stdout);
+ fputs(
" You may use this option as many times as the number of URLs you\n"
" have. For example, if you specify two URLs on the same command\n"
" line, you can use it like this:\n"
@@ -2110,10 +2131,10 @@ void hugehelp(void)
"\n"
" and the order of the -o options and the URLs doesn't matter,\n"
" just that the first -o is for the first URL and so on, so the\n"
-, stdout);
- fputs(
" above command line can also be written as\n"
"\n"
+, stdout);
+ fputs(
" curl example.com example.net -o aa -o bb\n"
"\n"
" See also the --create-dirs option to create the local directo-\n"
@@ -2124,10 +2145,10 @@ void hugehelp(void)
" mote-header-name.\n"
"\n"
" --pass <phrase>\n"
-, stdout);
- fputs(
" (SSH TLS) Passphrase for the private key\n"
"\n"
+, stdout);
+ fputs(
" If this option is used several times, the last one will be used.\n"
"\n"
" --path-as-is\n"
@@ -2138,18 +2159,18 @@ void hugehelp(void)
" Added in 7.42.0.\n"
"\n"
" --pinnedpubkey <hashes>\n"
+" (TLS) Tells curl to use the specified public key file (or\n"
, stdout);
fputs(
-" (TLS) Tells curl to use the specified public key file (or\n"
" hashes) to verify the peer. This can be a path to a file which\n"
" contains a single public key in PEM or DER format, or any number\n"
" of base64 encoded sha256 hashes preceded by 'sha256//' and sepa-\n"
" rated by ';'\n"
"\n"
" When negotiating a TLS or SSL connection, the server sends a\n"
+" certificate indicating its identity. A public key is extracted\n"
, stdout);
fputs(
-" certificate indicating its identity. A public key is extracted\n"
" from this certificate and if it does not exactly match the pub-\n"
" lic key provided to this option, curl will abort the connection\n"
" before sending or receiving any data.\n"
@@ -2159,9 +2180,9 @@ void hugehelp(void)
" 7.43.0: NSS and wolfSSL/CyaSSL\n"
" 7.47.0: mbedtls\n"
" 7.49.0: PolarSSL sha256 support:\n"
+" 7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL/CyaSSL.\n"
, stdout);
fputs(
-" 7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL/CyaSSL.\n"
" 7.47.0: mbedtls\n"
" 7.49.0: PolarSSL Other SSL backends not supported.\n"
"\n"
@@ -2534,12 +2555,20 @@ void hugehelp(void)
" the user name and password from your environment by specifying a\n"
" single colon with this option: \"-U :\".\n"
"\n"
+" On systems where it works, curl will hide the given option argu-\n"
+" ment from process listings. This is not enough to protect cre-\n"
+" dentials from possibly getting seen by other users on the same\n"
+, stdout);
+ fputs(
+" system as they will still be visible for a brief moment before\n"
+" cleared. Such sensitive data should be retrieved from a file in-\n"
+" stead or similar and never used in clear text in a command line.\n"
" If this option is used several times, the last one will be used.\n"
"\n"
" -x, --proxy [protocol://]host[:port]\n"
" Use the specified proxy.\n"
"\n"
-" The proxy string can be specified with a protocol:// prefix. No\n"
+" The proxy string can be specified with a protocol:// prefix. No\n"
, stdout);
fputs(
" protocol specified or http:// will be treated as HTTP proxy. Use\n"
@@ -2547,26 +2576,26 @@ void hugehelp(void)
" cific SOCKS version to be used. (The protocol support was added\n"
" in curl 7.21.7)\n"
"\n"
-" HTTPS proxy support via https:// protocol prefix was added in\n"
+" HTTPS proxy support via https:// protocol prefix was added in\n"
" 7.52.0 for OpenSSL, GnuTLS and NSS.\n"
"\n"
-" Unrecognized and unsupported proxy protocols cause an error\n"
+" Unrecognized and unsupported proxy protocols cause an error\n"
, stdout);
fputs(
-" since 7.52.0. Prior versions may ignore the protocol and use\n"
+" since 7.52.0. Prior versions may ignore the protocol and use\n"
" http:// instead.\n"
"\n"
-" If the port number is not specified in the proxy string, it is\n"
+" If the port number is not specified in the proxy string, it is\n"
" assumed to be 1080.\n"
"\n"
-" This option overrides existing environment variables that set\n"
-" the proxy to use. If there's an environment variable setting a\n"
+" This option overrides existing environment variables that set\n"
+" the proxy to use. If there's an environment variable setting a\n"
" proxy, you can set proxy to \"\" to override it.\n"
"\n"
, stdout);
fputs(
" All operations that are performed over an HTTP proxy will trans-\n"
-" parently be converted to HTTP. It means that certain protocol\n"
+" parently be converted to HTTP. It means that certain protocol\n"
" specific operations might not be available. This is not the case\n"
" if you can tunnel through the proxy, as one with the -p, --prox-\n"
" ytunnel option.\n"
@@ -2574,11 +2603,11 @@ void hugehelp(void)
" User and password that might be provided in the proxy string are\n"
, stdout);
fputs(
-" URL decoded by curl. This allows you to pass in special charac-\n"
+" URL decoded by curl. This allows you to pass in special charac-\n"
" ters such as @ by using %40 or pass in a colon with %3a.\n"
"\n"
-" The proxy host can be specified the exact same way as the proxy\n"
-" environment variables, including the protocol prefix (http://)\n"
+" The proxy host can be specified the exact same way as the proxy\n"
+" environment variables, including the protocol prefix (http://)\n"
" and the embedded user + password.\n"
"\n"
" If this option is used several times, the last one will be used.\n"
@@ -2586,40 +2615,39 @@ void hugehelp(void)
" --proxy1.0 <host[:port]>\n"
, stdout);
fputs(
-" Use the specified HTTP 1.0 proxy. If the port number is not\n"
+" Use the specified HTTP 1.0 proxy. If the port number is not\n"
" specified, it is assumed at port 1080.\n"
"\n"
-" The only difference between this and the HTTP proxy option -x,\n"
-" --proxy, is that attempts to use CONNECT through the proxy will\n"
+" The only difference between this and the HTTP proxy option -x,\n"
+" --proxy, is that attempts to use CONNECT through the proxy will\n"
" specify an HTTP 1.0 protocol instead of the default HTTP 1.1.\n"
"\n"
" -p, --proxytunnel\n"
-" When an HTTP proxy is used -x, --proxy, this option will cause\n"
+" When an HTTP proxy is used -x, --proxy, this option will make\n"
, stdout);
fputs(
-" non-HTTP protocols to attempt to tunnel through the proxy in-\n"
-" stead of merely using it to do HTTP-like operations. The tunnel\n"
-" approach is made with the HTTP proxy CONNECT request and re-\n"
-" quires that the proxy allows direct connect to the remote port\n"
-" number curl wants to tunnel through to.\n"
+" curl tunnel through the proxy. The tunnel approach is made with\n"
+" the HTTP proxy CONNECT request and requires that the proxy al-\n"
+" lows direct connect to the remote port number curl wants to tun-\n"
+" nel through to.\n"
"\n"
" To suppress proxy CONNECT response headers when curl is set to\n"
-, stdout);
- fputs(
" output headers use --suppress-connect-headers.\n"
"\n"
" See also -x, --proxy.\n"
"\n"
" --pubkey <key>\n"
+, stdout);
+ fputs(
" (SFTP SCP) Public key file name. Allows you to provide your pub-\n"
" lic key in this separate file.\n"
"\n"
" If this option is used several times, the last one will be used.\n"
" (As of 7.39.0, curl attempts to automatically extract the public\n"
" key from the private key file, so passing this option is gener-\n"
+" ally not required. Note that this public key extraction requires\n"
, stdout);
fputs(
-" ally not required. Note that this public key extraction requires\n"
" libcurl to be linked against a copy of libssh2 1.2.8 or higher\n"
" that is itself linked against OpenSSL.)\n"
"\n"
@@ -2627,18 +2655,18 @@ void hugehelp(void)
" (FTP SFTP) Send an arbitrary command to the remote FTP or SFTP\n"
" server. Quote commands are sent BEFORE the transfer takes place\n"
" (just after the initial PWD command in an FTP transfer, to be\n"
+" exact). To make commands take place after a successful transfer,\n"
, stdout);
fputs(
-" exact). To make commands take place after a successful transfer,\n"
" prefix them with a dash '-'. To make commands be sent after\n"
" curl has changed the working directory, just before the transfer\n"
" command(s), prefix the command with a '+' (this is only sup-\n"
" ported for FTP). You may specify any number of commands.\n"
"\n"
" If the server returns failure for one of the commands, the en-\n"
+" tire operation will be aborted. You must send syntactically cor-\n"
, stdout);
fputs(
-" tire operation will be aborted. You must send syntactically cor-\n"
" rect FTP commands as RFC 959 defines to FTP servers, or one of\n"
" the commands listed below to SFTP servers.\n"
"\n"
@@ -2647,9 +2675,9 @@ void hugehelp(void)
" continue even if the command fails as by default curl will stop\n"
" at first failure.\n"
"\n"
+" SFTP is a binary protocol. Unlike for FTP, curl interprets SFTP\n"
, stdout);
fputs(
-" SFTP is a binary protocol. Unlike for FTP, curl interprets SFTP\n"
" quote commands itself before sending them to the server. File\n"
" names may be quoted shell-style to embed spaces or special char-\n"
" acters. Following is the list of all supported SFTP quote com-\n"
@@ -2657,9 +2685,9 @@ void hugehelp(void)
"\n"
" chgrp group file\n"
" The chgrp command sets the group ID of the file named by\n"
+" the file operand to the group ID specified by the group\n"
, stdout);
fputs(
-" the file operand to the group ID specified by the group\n"
" operand. The group operand is a decimal integer group ID.\n"
"\n"
" chmod mode file\n"
@@ -2669,9 +2697,9 @@ void hugehelp(void)
"\n"
" chown user file\n"
" The chown command sets the owner of the file named by the\n"
+" file operand to the user ID specified by the user oper-\n"
, stdout);
fputs(
-" file operand to the user ID specified by the user oper-\n"
" and. The user operand is a decimal integer user ID.\n"
"\n"
" ln source_file target_file\n"
@@ -2681,10 +2709,10 @@ void hugehelp(void)
"\n"
" mkdir directory_name\n"
" The mkdir command creates the directory named by the di-\n"
-, stdout);
- fputs(
" rectory_name operand.\n"
"\n"
+, stdout);
+ fputs(
" pwd The pwd command returns the absolute pathname of the cur-\n"
" rent working directory.\n"
"\n"
@@ -2694,11 +2722,11 @@ void hugehelp(void)
" target operand.\n"
"\n"
" rm file\n"
-, stdout);
- fputs(
" The rm command removes the file specified by the file op-\n"
" erand.\n"
"\n"
+, stdout);
+ fputs(
" rmdir directory\n"
" The rmdir command removes the directory entry specified\n"
" by the directory operand, provided it is empty.\n"
@@ -2708,9 +2736,9 @@ void hugehelp(void)
"\n"
" --random-file <file>\n"
" Specify the path name to file containing what will be considered\n"
+" as random data. The data may be used to seed the random engine\n"
, stdout);
fputs(
-" as random data. The data may be used to seed the random engine\n"
" for SSL connections. See also the --egd-file option.\n"
"\n"
" -r, --range <range>\n"
@@ -2720,12 +2748,12 @@ void hugehelp(void)
"\n"
" 0-499 specifies the first 500 bytes\n"
"\n"
-, stdout);
- fputs(
" 500-999 specifies the second 500 bytes\n"
"\n"
" -500 specifies the last 500 bytes\n"
"\n"
+, stdout);
+ fputs(
" 9500- specifies the bytes from offset 9500 and forward\n"
"\n"
" 0-0,-1 specifies the first and last byte only(*)(HTTP)\n"
@@ -2736,19 +2764,19 @@ void hugehelp(void)
" (*) = NOTE that this will cause the server to reply with a mul-\n"
" tipart response!\n"
"\n"
+" Only digit characters (0-9) are valid in the 'start' and 'stop'\n"
, stdout);
fputs(
-" Only digit characters (0-9) are valid in the 'start' and 'stop'\n"
" fields of the 'start-stop' range syntax. If a non-digit charac-\n"
" ter is given in the range, the server's response will be unspec-\n"
" ified, depending on the server's configuration.\n"
"\n"
" You should also be aware that many HTTP/1.1 servers do not have\n"
" this feature enabled, so that when you attempt to get a range,\n"
-, stdout);
- fputs(
" you'll instead get the whole document.\n"
"\n"
+, stdout);
+ fputs(
" FTP and SFTP range downloads only support the simple 'start-\n"
" stop' syntax (optionally with one of the numbers omitted). FTP\n"
" use depends on the extended FTP command SIZE.\n"
@@ -2756,11 +2784,11 @@ void hugehelp(void)
" If this option is used several times, the last one will be used.\n"
"\n"
" --raw (HTTP) When used, it disables all internal HTTP decoding of con-\n"
-, stdout);
- fputs(
" tent or transfer encodings and instead makes them passed on un-\n"
" altered, raw.\n"
"\n"
+, stdout);
+ fputs(
" Added in 7.16.2.\n"
"\n"
" -e, --referer <URL>\n"
@@ -2768,9 +2796,9 @@ void hugehelp(void)
" This can also be set with the -H, --header flag of course. When\n"
" used with -L, --location you can append \";auto\" to the -e,\n"
" --referer URL to make curl automatically set the previous URL\n"
+" when it follows a Location: header. The \";auto\" string can be\n"
, stdout);
fputs(
-" when it follows a Location: header. The \";auto\" string can be\n"
" used alone, even if you don't set an initial -e, --referer.\n"
"\n"
" If this option is used several times, the last one will be used.\n"
@@ -2780,21 +2808,21 @@ void hugehelp(void)
" -J, --remote-header-name\n"
" (HTTP) This option tells the -O, --remote-name option to use the\n"
" server-specified Content-Disposition filename instead of ex-\n"
-, stdout);
- fputs(
" tracting a filename from the URL.\n"
"\n"
+, stdout);
+ fputs(
" If the server specifies a file name and a file with that name\n"
" already exists in the current working directory it will not be\n"
" overwritten and an error will occur. If the server doesn't spec-\n"
" ify a file name then this option has no effect.\n"
"\n"
" There's no attempt to decode %-sequences (yet) in the provided\n"
-, stdout);
- fputs(
" file name, so this option may provide you with rather unexpected\n"
" file names.\n"
"\n"
+, stdout);
+ fputs(
" WARNING: Exercise judicious use of this option, especially on\n"
" Windows. A rogue server could send you the name of a DLL or\n"
" other file that could possibly be loaded automatically by Win-\n"
@@ -2802,9 +2830,9 @@ void hugehelp(void)
"\n"
" --remote-name-all\n"
" This option changes the default action for all given URLs to be\n"
+" dealt with as if -O, --remote-name were used for each one. So if\n"
, stdout);
fputs(
-" dealt with as if -O, --remote-name were used for each one. So if\n"
" you want to disable that for a specific URL after --remote-name-\n"
" all has been used, you must use \"-o -\" or --no-remote-name.\n"
"\n"
@@ -2815,18 +2843,18 @@ void hugehelp(void)
" (Only the file part of the remote file is used, the path is cut\n"
" off.)\n"
"\n"
+" The file will be saved in the current working directory. If you\n"
, stdout);
fputs(
-" The file will be saved in the current working directory. If you\n"
" want the file saved in a different directory, make sure you\n"
" change the current working directory before invoking curl with\n"
" this option.\n"
"\n"
" The remote file name to use for saving is extracted from the\n"
" given URL, nothing else, and if it already exists it will be\n"
+" overwritten. If you want the server to be able to choose the\n"
, stdout);
fputs(
-" overwritten. If you want the server to be able to choose the\n"
" file name refer to -J, --remote-header-name which can be used in\n"
" addition to this option. If the server chooses a file name and\n"
" that name already exists it will not be overwritten.\n"
@@ -2835,9 +2863,9 @@ void hugehelp(void)
" other URL encoded parts of the name, they will end up as-is as\n"
" file name.\n"
"\n"
+" You may use this option as many times as the number of URLs you\n"
, stdout);
fputs(
-" You may use this option as many times as the number of URLs you\n"
" have.\n"
"\n"
" -R, --remote-time\n"
@@ -2847,9 +2875,9 @@ void hugehelp(void)
"\n"
" --request-target\n"
" (HTTP) Tells curl to use an alternative \"target\" (path) instead\n"
+" of using the path as provided in the URL. Particularly useful\n"
, stdout);
fputs(
-" of using the path as provided in the URL. Particularly useful\n"
" when wanting to issue HTTP requests without leading slash or\n"
" other data that doesn't follow the regular URL pattern, like\n"
" \"OPTIONS *\".\n"
@@ -2859,9 +2887,9 @@ void hugehelp(void)
" -X, --request <command>\n"
" (HTTP) Specifies a custom request method to use when communicat-\n"
" ing with the HTTP server. The specified request method will be\n"
+" used instead of the method otherwise used (which defaults to\n"
, stdout);
fputs(
-" used instead of the method otherwise used (which defaults to\n"
" GET). Read the HTTP 1.1 specification for details and explana-\n"
" tions. Common additional HTTP requests include PUT and DELETE,\n"
" but related technologies like WebDAV offers PROPFIND, COPY, MOVE\n"
@@ -2869,10 +2897,10 @@ void hugehelp(void)
"\n"
" Normally you don't need this option. All sorts of GET, HEAD,\n"
" POST and PUT requests are rather invoked by using dedicated com-\n"
-, stdout);
- fputs(
" mand line options.\n"
"\n"
+, stdout);
+ fputs(
" This option only changes the actual word used in the HTTP re-\n"
" quest, it does not alter the way curl behaves. So for example if\n"
" you want to make a proper HEAD request, using -X HEAD will not\n"
@@ -3590,60 +3618,68 @@ void hugehelp(void)
" which makes it impossible to use a colon in the user name with\n"
" this option. The password can, still.\n"
"\n"
-" When using Kerberos V5 with a Windows based server you should\n"
-" include the Windows domain name in the user name, in order for\n"
-" the server to successfully obtain a Kerberos Ticket. If you\n"
+" On systems where it works, curl will hide the given option argu-\n"
+" ment from process listings. This is not enough to protect cre-\n"
+" dentials from possibly getting seen by other users on the same\n"
+" system as they will still be visible for a brief moment before\n"
+, stdout);
+ fputs(
+" cleared. Such sensitive data should be retrieved from a file in-\n"
+" stead or similar and never used in clear text in a command line.\n"
+" When using Kerberos V5 with a Windows based server you should\n"
+" include the Windows domain name in the user name, in order for\n"
+" the server to successfully obtain a Kerberos Ticket. If you\n"
" don't then the initial authentication handshake may fail.\n"
"\n"
, stdout);
fputs(
-" When using NTLM, the user name can be specified simply as the\n"
-" user name, without the domain, if there is a single domain and\n"
+" When using NTLM, the user name can be specified simply as the\n"
+" user name, without the domain, if there is a single domain and\n"
" forest in your setup for example.\n"
"\n"
-" To specify the domain name use either Down-Level Logon Name or\n"
+" To specify the domain name use either Down-Level Logon Name or\n"
" UPN (User Principal Name) formats. For example, EXAMPLE\\user and\n"
" user@example.com respectively.\n"
"\n"
-" If you use a Windows SSPI-enabled curl binary and perform Ker-\n"
+" If you use a Windows SSPI-enabled curl binary and perform Ker-\n"
, stdout);
fputs(
-" beros V5, Negotiate, NTLM or Digest authentication then you can\n"
-" tell curl to select the user name and password from your envi-\n"
+" beros V5, Negotiate, NTLM or Digest authentication then you can\n"
+" tell curl to select the user name and password from your envi-\n"
" ronment by specifying a single colon with this option: \"-u :\".\n"
"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
" -v, --verbose\n"
-" Makes curl verbose during the operation. Useful for debugging\n"
-" and seeing what's going on \"under the hood\". A line starting\n"
+" Makes curl verbose during the operation. Useful for debugging\n"
+" and seeing what's going on \"under the hood\". A line starting\n"
, stdout);
fputs(
-" with '>' means \"header data\" sent by curl, '<' means \"header\n"
-" data\" received by curl that is hidden in normal cases, and a\n"
+" with '>' means \"header data\" sent by curl, '<' means \"header\n"
+" data\" received by curl that is hidden in normal cases, and a\n"
" line starting with '*' means additional info provided by curl.\n"
"\n"
" If you only want HTTP headers in the output, -i, --include might\n"
" be the option you're looking for.\n"
"\n"
-" If you think this option still doesn't give you enough details,\n"
+" If you think this option still doesn't give you enough details,\n"
, stdout);
fputs(
" consider using --trace or --trace-ascii instead.\n"
"\n"
" Use -s, --silent to make curl really quiet.\n"
"\n"
-" See also -i, --include. This option overrides --trace and\n"
+" See also -i, --include. This option overrides --trace and\n"
" --trace-ascii.\n"
"\n"
" -V, --version\n"
" Displays information about curl and the libcurl version it uses.\n"
-" The first line includes the full version of curl, libcurl and\n"
+" The first line includes the full version of curl, libcurl and\n"
" other 3rd party libraries linked with the executable.\n"
"\n"
, stdout);
fputs(
-" The second line (starts with \"Protocols:\") shows all protocols\n"
+" The second line (starts with \"Protocols:\") shows all protocols\n"
" that libcurl reports to support.\n"
"\n"
" The third line (starts with \"Features:\") shows specific features\n"
@@ -3653,25 +3689,25 @@ void hugehelp(void)
"\n"
" krb4 Krb4 for FTP is supported.\n"
"\n"
-" SSL SSL versions of various protocols are supported, such as\n"
+" SSL SSL versions of various protocols are supported, such as\n"
, stdout);
fputs(
" HTTPS, FTPS, POP3S and so on.\n"
"\n"
-" libz Automatic decompression of compressed files over HTTP is\n"
+" libz Automatic decompression of compressed files over HTTP is\n"
" supported.\n"
"\n"
" NTLM NTLM authentication is supported.\n"
"\n"
-" Debug This curl uses a libcurl built with Debug. This enables\n"
-" more error-tracking and memory debugging etc. For curl-\n"
+" Debug This curl uses a libcurl built with Debug. This enables\n"
+" more error-tracking and memory debugging etc. For curl-\n"
" developers only!\n"
"\n"
" AsynchDNS\n"
, stdout);
fputs(
-" This curl uses asynchronous name resolves. Asynchronous\n"
-" name resolves can be done using either the c-ares or the\n"
+" This curl uses asynchronous name resolves. Asynchronous\n"
+" name resolves can be done using either the c-ares or the\n"
" threaded resolver backends.\n"
"\n"
" SPNEGO SPNEGO authentication is supported.\n"
@@ -3690,7 +3726,7 @@ void hugehelp(void)
" SSPI SSPI is supported.\n"
"\n"
" TLS-SRP\n"
-" SRP (Secure Remote Password) authentication is supported\n"
+" SRP (Secure Remote Password) authentication is supported\n"
" for TLS.\n"
"\n"
" HTTP2 HTTP/2 support has been built-in.\n"
@@ -3704,13 +3740,13 @@ void hugehelp(void)
" Metalink\n"
, stdout);
fputs(
-" This curl supports Metalink (both version 3 and 4 (RFC\n"
-" 5854)), which describes mirrors and hashes. curl will\n"
+" This curl supports Metalink (both version 3 and 4 (RFC\n"
+" 5854)), which describes mirrors and hashes. curl will\n"
" use mirrors for failover if there are errors (such as the\n"
" file or server not being available).\n"
"\n"
-" PSL PSL is short for Public Suffix List and means that this\n"
-" curl has been built with knowledge about \"public suf-\n"
+" PSL PSL is short for Public Suffix List and means that this\n"
+" curl has been built with knowledge about \"public suf-\n"
" fixes\".\n"
"\n"
, stdout);
@@ -3720,58 +3756,58 @@ void hugehelp(void)
"\n"
" -w, --write-out <format>\n"
" Make curl display information on stdout after a completed trans-\n"
-" fer. The format is a string that may contain plain text mixed\n"
-" with any number of variables. The format can be specified as a\n"
-" literal \"string\", or you can have curl read the format from a\n"
+" fer. The format is a string that may contain plain text mixed\n"
+" with any number of variables. The format can be specified as a\n"
+" literal \"string\", or you can have curl read the format from a\n"
, stdout);
fputs(
-" file with \"@filename\" and to tell curl to read the format from\n"
+" file with \"@filename\" and to tell curl to read the format from\n"
" stdin you write \"@-\".\n"
"\n"
-" The variables present in the output format will be substituted\n"
-" by the value or text that curl thinks fit, as described below.\n"
-" All variables are specified as %{variable_name} and to output a\n"
-" normal % you just write them as %%. You can output a newline by\n"
+" The variables present in the output format will be substituted\n"
+" by the value or text that curl thinks fit, as described below.\n"
+" All variables are specified as %{variable_name} and to output a\n"
+" normal % you just write them as %%. You can output a newline by\n"
, stdout);
fputs(
" using \\n, a carriage return with \\r and a tab space with \\t.\n"
"\n"
-" The output will be written to standard output, but this can be\n"
+" The output will be written to standard output, but this can be\n"
" switched to standard error by using %{stderr}.\n"
"\n"
" NOTE: The %-symbol is a special symbol in the win32-environment,\n"
-" where all occurrences of % must be doubled when using this op-\n"
+" where all occurrences of % must be doubled when using this op-\n"
" tion.\n"
"\n"
" The variables available are:\n"
"\n"
, stdout);
fputs(
-" content_type The Content-Type of the requested document, if\n"
+" content_type The Content-Type of the requested document, if\n"
" there was any.\n"
"\n"
" filename_effective\n"
-" The ultimate filename that curl writes out to.\n"
-" This is only meaningful if curl is told to write\n"
-" to a file with the -O, --remote-name or -o,\n"
-" --output option. It's most useful in combination\n"
+" The ultimate filename that curl writes out to.\n"
+" This is only meaningful if curl is told to write\n"
+" to a file with the -O, --remote-name or -o,\n"
+" --output option. It's most useful in combination\n"
, stdout);
fputs(
-" with the -J, --remote-header-name option. (Added\n"
+" with the -J, --remote-header-name option. (Added\n"
" in 7.26.0)\n"
"\n"
" ftp_entry_path The initial path curl ended up in when logging on\n"
" to the remote FTP server. (Added in 7.15.4)\n"
"\n"
" http_code The numerical response code that was found in the\n"
-" last retrieved HTTP(S) or FTP(s) transfer. In\n"
+" last retrieved HTTP(S) or FTP(s) transfer. In\n"
, stdout);
fputs(
-" 7.18.2 the alias response_code was added to show\n"
+" 7.18.2 the alias response_code was added to show\n"
" the same info.\n"
"\n"
" http_connect The numerical code that was found in the last re-\n"
-" sponse (from a proxy) to a curl CONNECT request.\n"
+" sponse (from a proxy) to a curl CONNECT request.\n"
" (Added in 7.12.4)\n"
"\n"
" http_version The http version that was effectively used.\n"
@@ -3779,14 +3815,14 @@ void hugehelp(void)
"\n"
, stdout);
fputs(
-" local_ip The IP address of the local end of the most re-\n"
-" cently done connection - can be either IPv4 or\n"
+" local_ip The IP address of the local end of the most re-\n"
+" cently done connection - can be either IPv4 or\n"
" IPv6 (Added in 7.29.0)\n"
"\n"
-" local_port The local port number of the most recently done\n"
+" local_port The local port number of the most recently done\n"
" connection (Added in 7.29.0)\n"
"\n"
-" num_connects Number of new connects made in the recent trans-\n"
+" num_connects Number of new connects made in the recent trans-\n"
" fer. (Added in 7.12.3)\n"
"\n"
, stdout);
@@ -3802,20 +3838,20 @@ void hugehelp(void)
" redirect_url When an HTTP request was made without -L, --loca-\n"
, stdout);
fputs(
-" tion to follow redirects (or when --max-redir is\n"
-" met), this variable will show the actual URL a\n"
+" tion to follow redirects (or when --max-redir is\n"
+" met), this variable will show the actual URL a\n"
" redirect would have gone to. (Added in 7.18.2)\n"
"\n"
-" remote_ip The remote IP address of the most recently done\n"
+" remote_ip The remote IP address of the most recently done\n"
" connection - can be either IPv4 or IPv6 (Added in\n"
" 7.29.0)\n"
"\n"
, stdout);
fputs(
-" remote_port The remote port number of the most recently done\n"
+" remote_port The remote port number of the most recently done\n"
" connection (Added in 7.29.0)\n"
"\n"
-" scheme The URL scheme (sometimes called protocol) that\n"
+" scheme The URL scheme (sometimes called protocol) that\n"
" was effectively used (Added in 7.52.0)\n"
"\n"
" size_download The total amount of bytes that were downloaded.\n"
@@ -3825,7 +3861,7 @@ void hugehelp(void)
"\n"
, stdout);
fputs(
-" size_request The total amount of bytes that were sent in the\n"
+" size_request The total amount of bytes that were sent in the\n"
" HTTP request.\n"
"\n"
" size_upload The total amount of bytes that were uploaded.\n"
@@ -3833,47 +3869,47 @@ void hugehelp(void)
" speed_download The average download speed that curl measured for\n"
" the complete download. Bytes per second.\n"
"\n"
-" speed_upload The average upload speed that curl measured for\n"
+" speed_upload The average upload speed that curl measured for\n"
" the complete upload. Bytes per second.\n"
"\n"
, stdout);
fputs(
" ssl_verify_result\n"
-" The result of the SSL peer certificate verifica-\n"
+" The result of the SSL peer certificate verifica-\n"
" tion that was requested. 0 means the verification\n"
" was successful. (Added in 7.19.0)\n"
"\n"
-" stderr From this point on, the -w, --write-out output\n"
-" will be written to standard error. (Added in\n"
+" stderr From this point on, the -w, --write-out output\n"
+" will be written to standard error. (Added in\n"
" 7.63.0)\n"
"\n"
, stdout);
fputs(
-" stdout From this point on, the -w, --write-out output\n"
-" will be written to standard output. This is the\n"
-" default, but can be used to switch back after\n"
+" stdout From this point on, the -w, --write-out output\n"
+" will be written to standard output. This is the\n"
+" default, but can be used to switch back after\n"
" switching to stderr. (Added in 7.63.0)\n"
"\n"
" time_appconnect\n"
-" The time, in seconds, it took from the start un-\n"
-" til the SSL/SSH/etc connect/handshake to the re-\n"
+" 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. (Added in 7.19.0)\n"
"\n"
-" time_connect The time, in seconds, it took from the start un-\n"
+" time_connect The time, in seconds, it took from the start un-\n"
" til the TCP connect to the remote host (or proxy)\n"
" 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"
@@ -3882,39 +3918,39 @@ 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"
-" tion time for multiple redirections. (Added in\n"
+" and transfer before the final transaction was\n"
+" started. time_redirect shows the complete execu-\n"
+" tion time for multiple redirections. (Added in\n"
" 7.12.3)\n"
"\n"
" time_starttransfer\n"
-" The time, in seconds, it took from the start un-\n"
+" The time, in seconds, it took from the start un-\n"
, stdout);
fputs(
-" til the first byte was just about to be trans-\n"
-" ferred. This includes time_pretransfer and also\n"
-" the time the server needed to calculate the re-\n"
+" til the first byte was just about to be trans-\n"
+" ferred. This includes time_pretransfer and also\n"
+" the time the server needed to calculate the re-\n"
" sult.\n"
"\n"
-" time_total The total time, in seconds, that the full opera-\n"
+" time_total The total time, in seconds, that the full opera-\n"
" tion lasted.\n"
"\n"
" url_effective The URL that was fetched last. This is most mean-\n"
, stdout);
fputs(
-" ingful if you've told curl to follow location:\n"
+" ingful if you've told curl to follow location:\n"
" headers.\n"
"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
" --xattr\n"
-" When saving output to a file, this option tells curl to store\n"
-" certain file metadata in extended file attributes. Currently,\n"
+" When saving output to a file, this option tells curl to store\n"
+" certain file metadata in extended file attributes. Currently,\n"
" the URL is stored in the xdg.origin.url attribute and, for HTTP,\n"
, stdout);
fputs(
-" the content type is stored in the mime_type attribute. If the\n"
-" file system does not support extended attributes, a warning is\n"
+" the content type is stored in the mime_type attribute. If the\n"
+" file system does not support extended attributes, a warning is\n"
" issued.\n"
"\n"
"FILES\n"
@@ -3928,7 +3964,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://]<host>[:port]\n"
@@ -3937,52 +3973,52 @@ void hugehelp(void)
" Sets the proxy server to use for HTTPS.\n"
"\n"
" [url-protocol]_PROXY [protocol://]<host>[:port]\n"
-" Sets the proxy server to use for [url-protocol], where the pro-\n"
+" 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://]<host>[:port]\n"
-" Sets the proxy server to use if no protocol-specific proxy is\n"
+" Sets the proxy server to use if no protocol-specific proxy is\n"
" set.\n"
"\n"
" NO_PROXY <comma-separated list of hosts/domains>\n"
-" list of host names that shouldn't go through any proxy. If set\n"
+" list of host names that shouldn't go through any proxy. If set\n"
" to an asterisk '*' only, it matches all hosts. Each name in this\n"
, stdout);
fputs(
" list is matched as either a domain name which contains the host-\n"
" name, or the hostname itself.\n"
"\n"
-" This environment variable disables use of the proxy even when\n"
-" specified with the -x, --proxy option. That is NO_PROXY=di-\n"
+" 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"
"PROXY PROTOCOL PREFIXES\n"
-" Since curl version 7.21.7, the proxy string may be specified with a\n"
+" Since curl version 7.21.7, the proxy string may be specified with a\n"
, stdout);
fputs(
" protocol:// prefix to specify alternative proxy protocols.\n"
"\n"
-" If no protocol is specified in the proxy string or if the string\n"
-" doesn't match a supported one, the proxy will be treated as an HTTP\n"
+" If no protocol is specified in the proxy string or if the string\n"
+" doesn't match a supported one, the proxy will be treated as an HTTP\n"
" proxy.\n"
"\n"
" 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"
@@ -4003,7 +4039,7 @@ 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"
" ror messages that may appear during bad conditions. At the time of this\n"
" writing, the exit codes are:\n"
"\n"
@@ -4016,14 +4052,14 @@ void hugehelp(void)
"\n"
" 3 URL malformed. The syntax was not correct.\n"
"\n"
-" 4 A feature or option that was needed to perform the desired re-\n"
-" quest was not enabled or was explicitly disabled at build-time.\n"
+" 4 A feature or option that was needed to perform the desired re-\n"
+" quest was not enabled or was explicitly disabled at build-time.\n"
" To make curl able to do this, you probably need another build of\n"
" libcurl!\n"
"\n"
, stdout);
fputs(
-" 5 Couldn't resolve proxy. The given proxy host could not be re-\n"
+" 5 Couldn't resolve proxy. The given proxy host could not be re-\n"
" solved.\n"
"\n"
" 6 Couldn't resolve host. The given remote host was not resolved.\n"
@@ -4032,32 +4068,32 @@ void hugehelp(void)
"\n"
" 8 Weird server reply. The server sent data curl couldn't parse.\n"
"\n"
-" 9 FTP access denied. The server denied login or denied access to\n"
-" the particular resource or directory you wanted to reach. Most\n"
+" 9 FTP access denied. The server denied login or denied access to\n"
+" the particular resource or directory you wanted to reach. Most\n"
, stdout);
fputs(
-" often you tried to change to a directory that doesn't exist on\n"
+" often you tried to change to a directory that doesn't exist on\n"
" the server.\n"
"\n"
-" 10 FTP accept failed. While waiting for the server to connect back\n"
-" when an active FTP session is used, an error code was sent over\n"
+" 10 FTP accept failed. While waiting for the server to connect back\n"
+" when an active FTP session is used, an error code was sent over\n"
" the control connection or similar.\n"
"\n"
-" 11 FTP weird PASS reply. Curl couldn't parse the reply sent to the\n"
+" 11 FTP weird PASS reply. Curl couldn't parse the reply sent to the\n"
" PASS request.\n"
"\n"
, stdout);
fputs(
-" 12 During an active FTP session while waiting for the server to\n"
+" 12 During an active FTP session while waiting for the server to\n"
" connect back to curl, the timeout expired.\n"
"\n"
-" 13 FTP weird PASV reply, Curl couldn't parse the reply sent to the\n"
+" 13 FTP weird PASV reply, Curl couldn't parse the reply sent to the\n"
" PASV request.\n"
"\n"
-" 14 FTP weird 227 format. Curl couldn't parse the 227-line the\n"
+" 14 FTP weird 227 format. Curl couldn't parse the 227-line the\n"
" server sent.\n"
"\n"
-" 15 FTP can't get host. Couldn't resolve the host IP we got in the\n"
+" 15 FTP can't get host. Couldn't resolve the host IP we got in the\n"
" 227-line.\n"
"\n"
, stdout);
@@ -4066,25 +4102,25 @@ 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 couldn't set binary. Couldn't change transfer method to bi-\n"
+" 17 FTP couldn't set binary. Couldn't change transfer method to bi-\n"
" nary.\n"
"\n"
" 18 Partial file. Only a part of the file was transferred.\n"
"\n"
-" 19 FTP couldn't download/access the given file, the RETR (or simi-\n"
+" 19 FTP couldn't download/access the given file, the RETR (or simi-\n"
" lar) command failed.\n"
"\n"
, stdout);
fputs(
" 21 FTP quote error. A quote command returned error from the server.\n"
-" 22 HTTP page not retrieved. The requested url was not found or re-\n"
-" turned another error with the HTTP error code being 400 or\n"
+" 22 HTTP page not retrieved. The requested url was not found or re-\n"
+" turned another error with the HTTP error code being 400 or\n"
" above. This return code only appears if -f, --fail is used.\n"
"\n"
-" 23 Write error. Curl couldn't write data to a local filesystem or\n"
+" 23 Write error. Curl couldn't write data to a local filesystem or\n"
" similar.\n"
"\n"
-" 25 FTP couldn't STOR file. The server denied the STOR operation,\n"
+" 25 FTP couldn't STOR file. The server denied the STOR operation,\n"
, stdout);
fputs(
" used for FTP uploading.\n"
@@ -4096,13 +4132,13 @@ void hugehelp(void)
" 28 Operation timeout. The specified time-out period was reached ac-\n"
" cording to the conditions.\n"
"\n"
-" 30 FTP PORT failed. The PORT command failed. Not all FTP servers\n"
-" support the PORT command, try doing a transfer using PASV in-\n"
+" 30 FTP PORT failed. The PORT command failed. Not all FTP servers\n"
+" support the PORT command, try doing a transfer using PASV in-\n"
" stead!\n"
"\n"
, stdout);
fputs(
-" 31 FTP couldn't use REST. The REST command failed. This command is\n"
+" 31 FTP couldn't use REST. The REST command failed. This command is\n"
" used for resumed FTP transfers.\n"
"\n"
" 33 HTTP range error. The range \"command\" didn't work.\n"
@@ -4111,7 +4147,7 @@ void hugehelp(void)
"\n"
" 35 SSL connect error. The SSL handshaking failed.\n"
"\n"
-" 36 Bad download resume. Couldn't continue an earlier aborted down-\n"
+" 36 Bad download resume. Couldn't continue an earlier aborted down-\n"
" load.\n"
"\n"
, stdout);
@@ -4131,14 +4167,14 @@ void hugehelp(void)
"\n"
, stdout);
fputs(
-" 45 Interface error. A specified outgoing interface could not be\n"
+" 45 Interface error. A specified outgoing interface could not be\n"
" used.\n"
"\n"
" 47 Too many redirects. When following redirects, curl hit the maxi-\n"
" mum amount.\n"
"\n"
-" 48 Unknown option specified to libcurl. This indicates that you\n"
-" passed a weird option to curl that was passed on to libcurl and\n"
+" 48 Unknown option specified to libcurl. This indicates that you\n"
+" passed a weird option to curl that was passed on to libcurl and\n"
" rejected. Read up in the manual!\n"
"\n"
" 49 Malformed telnet option.\n"
@@ -4147,7 +4183,7 @@ void hugehelp(void)
fputs(
" 51 The peer's SSL certificate or SSH MD5 fingerprint was not OK.\n"
"\n"
-" 52 The server didn't reply anything, which here is considered an\n"
+" 52 The server didn't reply anything, which here is considered an\n"
" error.\n"
"\n"
" 53 SSL crypto engine not found.\n"
@@ -4164,7 +4200,7 @@ void hugehelp(void)
"\n"
, stdout);
fputs(
-" 60 Peer certificate cannot be authenticated with known CA certifi-\n"
+" 60 Peer certificate cannot be authenticated with known CA certifi-\n"
" cates.\n"
"\n"
" 61 Unrecognized transfer encoding.\n"
@@ -4179,7 +4215,7 @@ void hugehelp(void)
"\n"
" 66 Failed to initialise SSL Engine.\n"
"\n"
-" 67 The user name, password, or similar was not accepted and curl\n"
+" 67 The user name, password, or similar was not accepted and curl\n"
" failed to log in.\n"
"\n"
, stdout);
@@ -4212,7 +4248,7 @@ void hugehelp(void)
"\n"
" 80 Failed to shut down the SSL connection.\n"
"\n"
-" 82 Could not load CRL file, missing or wrong format (added in\n"
+" 82 Could not load CRL file, missing or wrong format (added in\n"
" 7.19.0).\n"
"\n"
" 83 Issuer check failed (added in 7.19.0).\n"
@@ -4243,7 +4279,7 @@ void hugehelp(void)
"AUTHORS / CONTRIBUTORS\n"
, stdout);
fputs(
-" Daniel Stenberg is the main author, but the whole list of contributors\n"
+" Daniel Stenberg is the main author, but the whole list of contributors\n"
" is found in the separate THANKS file.\n"
"\n"
"WWW\n"
@@ -4252,1236 +4288,6 @@ void hugehelp(void)
"SEE ALSO\n"
" ftp(1), wget(1)\n"
"\n"
-"LATEST VERSION\n"
-"\n"
-" You always find news about what's going on as well as the latest versions\n"
-" from the curl web pages, located at:\n"
-"\n"
-" https://curl.haxx.se\n"
-"\n"
-"SIMPLE USAGE\n"
-"\n"
-" Get the main page from Netscape's web-server:\n"
-"\n"
-" curl http://www.netscape.com/\n"
-"\n"
-, stdout);
- fputs(
-" Get the README file the user's home directory at funet's ftp-server:\n"
-"\n"
-" curl ftp://ftp.funet.fi/README\n"
-"\n"
-" Get a web page from a server using port 8000:\n"
-"\n"
-" curl http://www.weirdserver.com:8000/\n"
-"\n"
-" Get a directory listing of an FTP site:\n"
-"\n"
-" curl ftp://cool.haxx.se/\n"
-"\n"
-" Get the definition of curl from a dictionary:\n"
-"\n"
-" curl dict://dict.org/m:curl\n"
-"\n"
-" Fetch two documents at once:\n"
-"\n"
-" curl ftp://cool.haxx.se/ http://www.weirdserver.com:8000/\n"
-"\n"
-, stdout);
- fputs(
-" Get a file off an FTPS server:\n"
-"\n"
-" curl ftps://files.are.secure.com/secrets.txt\n"
-"\n"
-" or use the more appropriate FTPS way to get the same file:\n"
-"\n"
-" curl --ftp-ssl ftp://files.are.secure.com/secrets.txt\n"
-"\n"
-" Get a file from an SSH server using SFTP:\n"
-"\n"
-" curl -u username sftp://example.com/etc/issue\n"
-"\n"
-" Get a file from an SSH server using SCP using a private key\n"
-" (not password-protected) to authenticate:\n"
-"\n"
-" curl -u username: --key ~/.ssh/id_rsa \\\n"
-, stdout);
- fputs(
-" scp://example.com/~/file.txt\n"
-"\n"
-" Get a file from an SSH server using SCP using a private key\n"
-" (password-protected) to authenticate:\n"
-"\n"
-" curl -u username: --key ~/.ssh/id_rsa --pass private_key_password \\\n"
-" scp://example.com/~/file.txt\n"
-"\n"
-" Get the main page from an IPv6 web server:\n"
-"\n"
-" curl \"http://[2001:1890:1112:1::20]/\"\n"
-"\n"
-" Get a file from an SMB server:\n"
-"\n"
-" curl -u \"domain\\username:passwd\" smb://server.example.com/share/file.txt\n"
-"\n"
-"DOWNLOAD TO A FILE\n"
-"\n"
-, stdout);
- fputs(
-" Get a web page and store in a local file with a specific name:\n"
-"\n"
-" curl -o thatpage.html http://www.netscape.com/\n"
-"\n"
-" Get a web page and store in a local file, make the local file get the name\n"
-" of the remote document (if no file name part is specified in the URL, this\n"
-" will fail):\n"
-"\n"
-" curl -O http://www.netscape.com/index.html\n"
-"\n"
-" Fetch two files and store them with their remote names:\n"
-"\n"
-" curl -O www.haxx.se/index.html -O curl.haxx.se/download.html\n"
-"\n"
-"USING PASSWORDS\n"
-"\n"
-" FTP\n"
-"\n"
-, stdout);
- fputs(
-" To ftp files using name+passwd, include them in the URL like:\n"
-"\n"
-" curl ftp://name:passwd@machine.domain:port/full/path/to/file\n"
-"\n"
-" or specify them with the -u flag like\n"
-"\n"
-" curl -u name:passwd ftp://machine.domain:port/full/path/to/file\n"
-"\n"
-" FTPS\n"
-"\n"
-" It is just like for FTP, but you may also want to specify and use\n"
-" SSL-specific options for certificates etc.\n"
-"\n"
-" Note that using FTPS:// as prefix is the \"implicit\" way as described in the\n"
-, stdout);
- fputs(
-" standards while the recommended \"explicit\" way is done by using FTP:// and\n"
-" the --ftp-ssl option.\n"
-"\n"
-" SFTP / SCP\n"
-"\n"
-" This is similar to FTP, but you can use the --key option to specify a\n"
-" private key to use instead of a password. Note that the private key may\n"
-" itself be protected by a password that is unrelated to the login password\n"
-" of the remote system; this password is specified using the --pass option.\n"
-" Typically, curl will automatically extract the public key from the private\n"
-, stdout);
- fputs(
-" key file, but in cases where curl does not have the proper library support,\n"
-" a matching public key file must be specified using the --pubkey option.\n"
-"\n"
-" HTTP\n"
-"\n"
-" Curl also supports user and password in HTTP URLs, thus you can pick a file\n"
-" like:\n"
-"\n"
-" curl http://name:passwd@machine.domain/full/path/to/file\n"
-"\n"
-" or specify user and password separately like in\n"
-"\n"
-" curl -u name:passwd http://machine.domain/full/path/to/file\n"
-"\n"
-, stdout);
- fputs(
-" HTTP offers many different methods of authentication and curl supports\n"
-" several: Basic, Digest, NTLM and Negotiate (SPNEGO). Without telling which\n"
-" method to use, curl defaults to Basic. You can also ask curl to pick the\n"
-" most secure ones out of the ones that the server accepts for the given URL,\n"
-" by using --anyauth.\n"
-"\n"
-" NOTE! According to the URL specification, HTTP URLs can not contain a user\n"
-" and password, so that style will not work when using curl via a proxy, even\n"
-, stdout);
- fputs(
-" though curl allows it at other times. When using a proxy, you _must_ use\n"
-" the -u style for user and password.\n"
-"\n"
-" HTTPS\n"
-"\n"
-" Probably most commonly used with private certificates, as explained below.\n"
-"\n"
-"PROXY\n"
-"\n"
-" curl supports both HTTP and SOCKS proxy servers, with optional authentication.\n"
-" It does not have special support for FTP proxy servers since there are no\n"
-" standards for those, but it can still be made to work with many of them. You\n"
-, stdout);
- fputs(
-" can also use both HTTP and SOCKS proxies to transfer files to and from FTP\n"
-" servers.\n"
-"\n"
-" Get an ftp file using an HTTP proxy named my-proxy that uses port 888:\n"
-"\n"
-" curl -x my-proxy:888 ftp://ftp.leachsite.com/README\n"
-"\n"
-" Get a file from an HTTP server that requires user and password, using the\n"
-" same proxy as above:\n"
-"\n"
-" curl -u user:passwd -x my-proxy:888 http://www.get.this/\n"
-"\n"
-" Some proxies require special authentication. Specify by using -U as above:\n"
-"\n"
-, stdout);
- fputs(
-" curl -U user:passwd -x my-proxy:888 http://www.get.this/\n"
-"\n"
-" A comma-separated list of hosts and domains which do not use the proxy can\n"
-" be specified as:\n"
-"\n"
-" curl --noproxy localhost,get.this -x my-proxy:888 http://www.get.this/\n"
-"\n"
-" If the proxy is specified with --proxy1.0 instead of --proxy or -x, then\n"
-" curl will use HTTP/1.0 instead of HTTP/1.1 for any CONNECT attempts.\n"
-"\n"
-" curl also supports SOCKS4 and SOCKS5 proxies with --socks4 and --socks5.\n"
-"\n"
-, stdout);
- fputs(
-" See also the environment variables Curl supports that offer further proxy\n"
-" control.\n"
-"\n"
-" Most FTP proxy servers are set up to appear as a normal FTP server from the\n"
-" client's perspective, with special commands to select the remote FTP server.\n"
-" curl supports the -u, -Q and --ftp-account options that can be used to\n"
-" set up transfers through many FTP proxies. For example, a file can be\n"
-" uploaded to a remote FTP server using a Blue Coat FTP proxy with the\n"
-" options:\n"
-"\n"
-, stdout);
- fputs(
-" curl -u \"Remote-FTP-Username@remote.ftp.server Proxy-Username:Remote-Pass\" \\\n"
-" --ftp-account Proxy-Password --upload-file local-file \\\n"
-" ftp://my-ftp.proxy.server:21/remote/upload/path/\n"
-"\n"
-" See the manual for your FTP proxy to determine the form it expects to set up\n"
-" transfers, and curl's -v option to see exactly what curl is sending.\n"
-"\n"
-"RANGES\n"
-"\n"
-" HTTP 1.1 introduced byte-ranges. Using this, a client can request\n"
-, stdout);
- fputs(
-" to get only one or more subparts of a specified document. Curl supports\n"
-" this with the -r flag.\n"
-"\n"
-" Get the first 100 bytes of a document:\n"
-"\n"
-" curl -r 0-99 http://www.get.this/\n"
-"\n"
-" Get the last 500 bytes of a document:\n"
-"\n"
-" curl -r -500 http://www.get.this/\n"
-"\n"
-" Curl also supports simple ranges for FTP files as well. Then you can only\n"
-" specify start and stop position.\n"
-"\n"
-" Get the first 100 bytes of a document using FTP:\n"
-"\n"
-" curl -r 0-99 ftp://www.get.this/README\n"
-"\n"
-"UPLOADING\n"
-"\n"
-, stdout);
- fputs(
-" FTP / FTPS / SFTP / SCP\n"
-"\n"
-" Upload all data on stdin to a specified server:\n"
-"\n"
-" curl -T - ftp://ftp.upload.com/myfile\n"
-"\n"
-" Upload data from a specified file, login with user and password:\n"
-"\n"
-" curl -T uploadfile -u user:passwd ftp://ftp.upload.com/myfile\n"
-"\n"
-" Upload a local file to the remote site, and use the local file name at the remote\n"
-" site too:\n"
-"\n"
-" curl -T uploadfile -u user:passwd ftp://ftp.upload.com/\n"
-"\n"
-" Upload a local file to get appended to the remote file:\n"
-"\n"
-, stdout);
- fputs(
-" curl -T localfile -a ftp://ftp.upload.com/remotefile\n"
-"\n"
-" Curl also supports ftp upload through a proxy, but only if the proxy is\n"
-" configured to allow that kind of tunneling. If it does, you can run curl in\n"
-" a fashion similar to:\n"
-"\n"
-" curl --proxytunnel -x proxy:port -T localfile ftp.upload.com\n"
-"\n"
-"SMB / SMBS\n"
-"\n"
-" curl -T file.txt -u \"domain\\username:passwd\" \\\n"
-" smb://server.example.com/share/\n"
-"\n"
-" HTTP\n"
-"\n"
-" Upload all data on stdin to a specified HTTP site:\n"
-"\n"
-, stdout);
- fputs(
-" curl -T - http://www.upload.com/myfile\n"
-"\n"
-" Note that the HTTP server must have been configured to accept PUT before\n"
-" this can be done successfully.\n"
-"\n"
-" For other ways to do HTTP data upload, see the POST section below.\n"
-"\n"
-"VERBOSE / DEBUG\n"
-"\n"
-" If curl fails where it isn't supposed to, if the servers don't let you in,\n"
-" if you can't understand the responses: use the -v flag to get verbose\n"
-" fetching. Curl will output lots of info and what it sends and receives in\n"
-, stdout);
- fputs(
-" order to let the user see all client-server interaction (but it won't show\n"
-" you the actual data).\n"
-"\n"
-" curl -v ftp://ftp.upload.com/\n"
-"\n"
-" To get even more details and information on what curl does, try using the\n"
-" --trace or --trace-ascii options with a given file name to log to, like\n"
-" this:\n"
-"\n"
-" curl --trace trace.txt www.haxx.se\n"
-"\n"
-"\n"
-"DETAILED INFORMATION\n"
-"\n"
-" Different protocols provide different ways of getting detailed information\n"
-, stdout);
- fputs(
-" about specific files/documents. To get curl to show detailed information\n"
-" about a single file, you should use -I/--head option. It displays all\n"
-" available info on a single file for HTTP and FTP. The HTTP information is a\n"
-" lot more extensive.\n"
-"\n"
-" For HTTP, you can get the header information (the same as -I would show)\n"
-" shown before the data by using -i/--include. Curl understands the\n"
-" -D/--dump-header option when getting files from both FTP and HTTP, and it\n"
-, stdout);
- fputs(
-" will then store the headers in the specified file.\n"
-"\n"
-" Store the HTTP headers in a separate file (headers.txt in the example):\n"
-"\n"
-" curl --dump-header headers.txt curl.haxx.se\n"
-"\n"
-" Note that headers stored in a separate file can be very useful at a later\n"
-" time if you want curl to use cookies sent by the server. More about that in\n"
-" the cookies section.\n"
-"\n"
-"POST (HTTP)\n"
-"\n"
-" It's easy to post data using curl. This is done using the -d <data>\n"
-" option. The post data must be urlencoded.\n"
-"\n"
-, stdout);
- fputs(
-" Post a simple \"name\" and \"phone\" guestbook.\n"
-"\n"
-" curl -d \"name=Rafael%20Sagula&phone=3320780\" \\\n"
-" http://www.where.com/guest.cgi\n"
-"\n"
-" How to post a form with curl, lesson #1:\n"
-"\n"
-" Dig out all the <input> tags in the form that you want to fill in.\n"
-"\n"
-" If there's a \"normal\" post, you use -d to post. -d takes a full \"post\n"
-" string\", which is in the format\n"
-"\n"
-" <variable1>=<data1>&<variable2>=<data2>&...\n"
-"\n"
-, stdout);
- fputs(
-" The 'variable' names are the names set with \"name=\" in the <input> tags, and\n"
-" the data is the contents you want to fill in for the inputs. The data *must*\n"
-" be properly URL encoded. That means you replace space with + and that you\n"
-" replace weird letters with %XX where XX is the hexadecimal representation of\n"
-" the letter's ASCII code.\n"
-"\n"
-" Example:\n"
-"\n"
-" (page located at http://www.formpost.com/getthis/\n"
-"\n"
-" <form action=\"post.cgi\" method=\"post\">\n"
-" <input name=user size=10>\n"
-, stdout);
- fputs(
-" <input name=pass type=password size=10>\n"
-" <input name=id type=hidden value=\"blablabla\">\n"
-" <input name=ding value=\"submit\">\n"
-" </form>\n"
-"\n"
-" We want to enter user 'foobar' with password '12345'.\n"
-"\n"
-" To post to this, you enter a curl command line like:\n"
-"\n"
-" curl -d \"user=foobar&pass=12345&id=blablabla&ding=submit\" \\\n"
-" http://www.formpost.com/getthis/post.cgi\n"
-"\n"
-"\n"
-" While -d uses the application/x-www-form-urlencoded mime-type, generally\n"
-, stdout);
- fputs(
-" understood by CGI's and similar, curl also supports the more capable\n"
-" multipart/form-data type. This latter type supports things like file upload.\n"
-"\n"
-" -F accepts parameters like -F \"name=contents\". If you want the contents to\n"
-" be read from a file, use <@filename> as contents. When specifying a file,\n"
-" you can also specify the file content type by appending ';type=<mime type>'\n"
-" to the file name. You can also post the contents of several files in one\n"
-, stdout);
- fputs(
-" field. For example, the field name 'coolfiles' is used to send three files,\n"
-" with different content types using the following syntax:\n"
-"\n"
-" curl -F \"coolfiles=@fil1.gif;type=image/gif,fil2.txt,fil3.html\" \\\n"
-" http://www.post.com/postit.cgi\n"
-"\n"
-" If the content-type is not specified, curl will try to guess from the file\n"
-" extension (it only knows a few), or use the previously specified type (from\n"
-" an earlier file if several files are specified in a list) or else it will\n"
-, stdout);
- fputs(
-" use the default type 'application/octet-stream'.\n"
-"\n"
-" Emulate a fill-in form with -F. Let's say you fill in three fields in a\n"
-" form. One field is a file name which to post, one field is your name and one\n"
-" field is a file description. We want to post the file we have written named\n"
-" \"cooltext.txt\". To let curl do the posting of this data instead of your\n"
-" favourite browser, you have to read the HTML source of the form page and\n"
-, stdout);
- fputs(
-" find the names of the input fields. In our example, the input field names\n"
-" are 'file', 'yourname' and 'filedescription'.\n"
-"\n"
-" curl -F \"file=@cooltext.txt\" -F \"yourname=Daniel\" \\\n"
-" -F \"filedescription=Cool text file with cool text inside\" \\\n"
-" http://www.post.com/postit.cgi\n"
-"\n"
-" To send two files in one post you can do it in two ways:\n"
-"\n"
-" 1. Send multiple files in a single \"field\" with a single field name:\n"
-"\n"
-" curl -F \"pictures=@dog.gif,cat.gif\"\n"
-"\n"
-, stdout);
- fputs(
-" 2. Send two fields with two field names:\n"
-"\n"
-" curl -F \"docpicture=@dog.gif\" -F \"catpicture=@cat.gif\"\n"
-"\n"
-" To send a field value literally without interpreting a leading '@'\n"
-" or '<', or an embedded ';type=', use --form-string instead of\n"
-" -F. This is recommended when the value is obtained from a user or\n"
-" some other unpredictable source. Under these circumstances, using\n"
-" -F instead of --form-string would allow a user to trick curl into\n"
-" uploading a file.\n"
-"\n"
-"REFERRER\n"
-"\n"
-, stdout);
- fputs(
-" An HTTP request has the option to include information about which address\n"
-" referred it to the actual page. Curl allows you to specify the\n"
-" referrer to be used on the command line. It is especially useful to\n"
-" fool or trick stupid servers or CGI scripts that rely on that information\n"
-" being available or contain certain data.\n"
-"\n"
-" curl -e www.coolsite.com http://www.showme.com/\n"
-"\n"
-" NOTE: The Referer: [sic] field is defined in the HTTP spec to be a full URL.\n"
-"\n"
-"USER AGENT\n"
-"\n"
-, stdout);
- fputs(
-" An HTTP request has the option to include information about the browser\n"
-" that generated the request. Curl allows it to be specified on the command\n"
-" line. It is especially useful to fool or trick stupid servers or CGI\n"
-" scripts that only accept certain browsers.\n"
-"\n"
-" Example:\n"
-"\n"
-" curl -A 'Mozilla/3.0 (Win95; I)' http://www.nationsbank.com/\n"
-"\n"
-" Other common strings:\n"
-" 'Mozilla/3.0 (Win95; I)' Netscape Version 3 for Windows 95\n"
-, stdout);
- fputs(
-" 'Mozilla/3.04 (Win95; U)' Netscape Version 3 for Windows 95\n"
-" 'Mozilla/2.02 (OS/2; U)' Netscape Version 2 for OS/2\n"
-" 'Mozilla/4.04 [en] (X11; U; AIX 4.2; Nav)' NS for AIX\n"
-" 'Mozilla/4.05 [en] (X11; U; Linux 2.0.32 i586)' NS for Linux\n"
-"\n"
-" Note that Internet Explorer tries hard to be compatible in every way:\n"
-" 'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)' MSIE for W95\n"
-"\n"
-" Mozilla is not the only possible User-Agent name:\n"
-, stdout);
- fputs(
-" 'Konqueror/1.0' KDE File Manager desktop client\n"
-" 'Lynx/2.7.1 libwww-FM/2.14' Lynx command line browser\n"
-"\n"
-"COOKIES\n"
-"\n"
-" Cookies are generally used by web servers to keep state information at the\n"
-" client's side. The server sets cookies by sending a response line in the\n"
-" headers that looks like 'Set-Cookie: <data>' where the data part then\n"
-" typically contains a set of NAME=VALUE pairs (separated by semicolons ';'\n"
-, stdout);
- fputs(
-" like \"NAME1=VALUE1; NAME2=VALUE2;\"). The server can also specify for what\n"
-" path the \"cookie\" should be used for (by specifying \"path=value\"), when the\n"
-" cookie should expire (\"expire=DATE\"), for what domain to use it\n"
-" (\"domain=NAME\") and if it should be used on secure connections only\n"
-" (\"secure\").\n"
-"\n"
-" If you've received a page from a server that contains a header like:\n"
-" Set-Cookie: sessionid=boo123; path=\"/foo\";\n"
-"\n"
-, stdout);
- fputs(
-" it means the server wants that first pair passed on when we get anything in\n"
-" a path beginning with \"/foo\".\n"
-"\n"
-" Example, get a page that wants my name passed in a cookie:\n"
-"\n"
-" curl -b \"name=Daniel\" www.sillypage.com\n"
-"\n"
-" Curl also has the ability to use previously received cookies in following\n"
-" sessions. If you get cookies from a server and store them in a file in a\n"
-" manner similar to:\n"
-"\n"
-" curl --dump-header headers www.example.com\n"
-"\n"
-, stdout);
- fputs(
-" ... you can then in a second connect to that (or another) site, use the\n"
-" cookies from the 'headers' file like:\n"
-"\n"
-" curl -b headers www.example.com\n"
-"\n"
-" While saving headers to a file is a working way to store cookies, it is\n"
-" however error-prone and not the preferred way to do this. Instead, make curl\n"
-" save the incoming cookies using the well-known netscape cookie format like\n"
-" this:\n"
-"\n"
-" curl -c cookies.txt www.example.com\n"
-"\n"
-, stdout);
- fputs(
-" Note that by specifying -b you enable the \"cookie awareness\" and with -L\n"
-" you can make curl follow a location: (which often is used in combination\n"
-" with cookies). So that if a site sends cookies and a location, you can\n"
-" use a non-existing file to trigger the cookie awareness like:\n"
-"\n"
-" curl -L -b empty.txt www.example.com\n"
-"\n"
-" The file to read cookies from must be formatted using plain HTTP headers OR\n"
-" as netscape's cookie file. Curl will determine what kind it is based on the\n"
-, stdout);
- fputs(
-" file contents. In the above command, curl will parse the header and store\n"
-" the cookies received from www.example.com. curl will send to the server the\n"
-" stored cookies which match the request as it follows the location. The\n"
-" file \"empty.txt\" may be a nonexistent file.\n"
-"\n"
-" To read and write cookies from a netscape cookie file, you can set both -b\n"
-" and -c to use the same file:\n"
-"\n"
-" curl -b cookies.txt -c cookies.txt www.example.com\n"
-"\n"
-"PROGRESS METER\n"
-"\n"
-, stdout);
- fputs(
-" The progress meter exists to show a user that something actually is\n"
-" happening. The different fields in the output have the following meaning:\n"
-"\n"
-" % Total % Received % Xferd Average Speed Time Curr.\n"
-" Dload Upload Total Current Left Speed\n"
-" 0 151M 0 38608 0 0 9406 0 4:41:43 0:00:04 4:41:39 9287\n"
-"\n"
-" From left-to-right:\n"
-" % - percentage completed of the whole transfer\n"
-, stdout);
- fputs(
-" Total - total size of the whole expected transfer\n"
-" % - percentage completed of the download\n"
-" Received - currently downloaded amount of bytes\n"
-" % - percentage completed of the upload\n"
-" Xferd - currently uploaded amount of bytes\n"
-" Average Speed\n"
-" Dload - the average transfer speed of the download\n"
-" Average Speed\n"
-" Upload - the average transfer speed of the upload\n"
-" Time Total - expected time to complete the operation\n"
-, stdout);
- fputs(
-" Time Current - time passed since the invoke\n"
-" Time Left - expected time left to completion\n"
-" Curr.Speed - the average transfer speed the last 5 seconds (the first\n"
-" 5 seconds of a transfer is based on less time of course.)\n"
-"\n"
-" The -# option will display a totally different progress bar that doesn't\n"
-" need much explanation!\n"
-"\n"
-"SPEED LIMIT\n"
-"\n"
-" Curl allows the user to set the transfer speed conditions that must be met\n"
-, stdout);
- fputs(
-" to let the transfer keep going. By using the switch -y and -Y you\n"
-" can make curl abort transfers if the transfer speed is below the specified\n"
-" lowest limit for a specified time.\n"
-"\n"
-" To have curl abort the download if the speed is slower than 3000 bytes per\n"
-" second for 1 minute, run:\n"
-"\n"
-" curl -Y 3000 -y 60 www.far-away-site.com\n"
-"\n"
-" This can very well be used in combination with the overall time limit, so\n"
-" that the above operation must be completed in whole within 30 minutes:\n"
-"\n"
-, stdout);
- fputs(
-" curl -m 1800 -Y 3000 -y 60 www.far-away-site.com\n"
-"\n"
-" Forcing curl not to transfer data faster than a given rate is also possible,\n"
-" which might be useful if you're using a limited bandwidth connection and you\n"
-" don't want your transfer to use all of it (sometimes referred to as\n"
-" \"bandwidth throttle\").\n"
-"\n"
-" Make curl transfer data no faster than 10 kilobytes per second:\n"
-"\n"
-" curl --limit-rate 10K www.far-away-site.com\n"
-"\n"
-" or\n"
-"\n"
-" curl --limit-rate 10240 www.far-away-site.com\n"
-"\n"
-, stdout);
- fputs(
-" Or prevent curl from uploading data faster than 1 megabyte per second:\n"
-"\n"
-" curl -T upload --limit-rate 1M ftp://uploadshereplease.com\n"
-"\n"
-" When using the --limit-rate option, the transfer rate is regulated on a\n"
-" per-second basis, which will cause the total transfer speed to become lower\n"
-" than the given number. Sometimes of course substantially lower, if your\n"
-" transfer stalls during periods.\n"
-"\n"
-"CONFIG FILE\n"
-"\n"
-" Curl automatically tries to read the .curlrc file (or _curlrc file on win32\n"
-, stdout);
- fputs(
-" systems) from the user's home dir on startup.\n"
-"\n"
-" The config file could be made up with normal command line switches, but you\n"
-" can also specify the long options without the dashes to make it more\n"
-" readable. You can separate the options and the parameter with spaces, or\n"
-" with = or :. Comments can be used within the file. If the first letter on a\n"
-" line is a '#'-symbol the rest of the line is treated as a comment.\n"
-"\n"
-" If you want the parameter to contain spaces, you must enclose the entire\n"
-, stdout);
- fputs(
-" parameter within double quotes (\"). Within those quotes, you specify a\n"
-" quote as \\\".\n"
-"\n"
-" NOTE: You must specify options and their arguments on the same line.\n"
-"\n"
-" Example, set default time out and proxy in a config file:\n"
-"\n"
-" # We want a 30 minute timeout:\n"
-" -m 1800\n"
-" # ... and we use a proxy for all accesses:\n"
-" proxy = proxy.our.domain.com:8080\n"
-"\n"
-" White spaces ARE significant at the end of lines, but all white spaces\n"
-, stdout);
- fputs(
-" leading up to the first characters of each line are ignored.\n"
-"\n"
-" Prevent curl from reading the default file by using -q as the first command\n"
-" line parameter, like:\n"
-"\n"
-" curl -q www.thatsite.com\n"
-"\n"
-" Force curl to get and display a local help page in case it is invoked\n"
-" without URL by making a config file similar to:\n"
-"\n"
-" # default url to get\n"
-" url = \"http://help.with.curl.com/curlhelp.html\"\n"
-"\n"
-" You can specify another config file to be read by using the -K/--config\n"
-, stdout);
- fputs(
-" flag. If you set config file name to \"-\" it'll read the config from stdin,\n"
-" which can be handy if you want to hide options from being visible in process\n"
-" tables etc:\n"
-"\n"
-" echo \"user = user:passwd\" | curl -K - http://that.secret.site.com\n"
-"\n"
-"EXTRA HEADERS\n"
-"\n"
-" When using curl in your own very special programs, you may end up needing\n"
-" to pass on your own custom headers when getting a web page. You can do\n"
-" this by using the -H flag.\n"
-"\n"
-, stdout);
- fputs(
-" Example, send the header \"X-you-and-me: yes\" to the server when getting a\n"
-" page:\n"
-"\n"
-" curl -H \"X-you-and-me: yes\" www.love.com\n"
-"\n"
-" This can also be useful in case you want curl to send a different text in a\n"
-" header than it normally does. The -H header you specify then replaces the\n"
-" header curl would normally send. If you replace an internal header with an\n"
-" empty one, you prevent that header from being sent. To prevent the Host:\n"
-" header from being used:\n"
-"\n"
-, stdout);
- fputs(
-" curl -H \"Host:\" www.server.com\n"
-"\n"
-"FTP and PATH NAMES\n"
-"\n"
-" Do note that when getting files with the ftp:// URL, the given path is\n"
-" relative the directory you enter. To get the file 'README' from your home\n"
-" directory at your ftp site, do:\n"
-"\n"
-" curl ftp://user:passwd@my.site.com/README\n"
-"\n"
-" But if you want the README file from the root directory of that very same\n"
-" site, you need to specify the absolute file name:\n"
-"\n"
-" curl ftp://user:passwd@my.site.com//README\n"
-"\n"
-, stdout);
- fputs(
-" (I.e with an extra slash in front of the file name.)\n"
-"\n"
-"SFTP and SCP and PATH NAMES\n"
-"\n"
-" With sftp: and scp: URLs, the path name given is the absolute name on the\n"
-" server. To access a file relative to the remote user's home directory,\n"
-" prefix the file with /~/ , such as:\n"
-"\n"
-" curl -u $USER sftp://home.example.com/~/.bashrc\n"
-"\n"
-"FTP and firewalls\n"
-"\n"
-" The FTP protocol requires one of the involved parties to open a second\n"
-, stdout);
- fputs(
-" connection as soon as data is about to get transferred. There are two ways to\n"
-" do this.\n"
-"\n"
-" The default way for curl is to issue the PASV command which causes the\n"
-" server to open another port and await another connection performed by the\n"
-" client. This is good if the client is behind a firewall that doesn't allow\n"
-" incoming connections.\n"
-"\n"
-" curl ftp.download.com\n"
-"\n"
-" If the server, for example, is behind a firewall that doesn't allow connections\n"
-, stdout);
- fputs(
-" on ports other than 21 (or if it just doesn't support the PASV command), the\n"
-" other way to do it is to use the PORT command and instruct the server to\n"
-" connect to the client on the given IP number and port (as parameters to the\n"
-" PORT command).\n"
-"\n"
-" The -P flag to curl supports a few different options. Your machine may have\n"
-" several IP-addresses and/or network interfaces and curl allows you to select\n"
-" which of them to use. Default address can also be used:\n"
-"\n"
-, stdout);
- fputs(
-" curl -P - ftp.download.com\n"
-"\n"
-" Download with PORT but use the IP address of our 'le0' interface (this does\n"
-" not work on windows):\n"
-"\n"
-" curl -P le0 ftp.download.com\n"
-"\n"
-" Download with PORT but use 192.168.0.10 as our IP address to use:\n"
-"\n"
-" curl -P 192.168.0.10 ftp.download.com\n"
-"\n"
-"NETWORK INTERFACE\n"
-"\n"
-" Get a web page from a server using a specified port for the interface:\n"
-"\n"
-" curl --interface eth0:1 http://www.netscape.com/\n"
-"\n"
-" or\n"
-"\n"
-, stdout);
- fputs(
-" curl --interface 192.168.1.10 http://www.netscape.com/\n"
-"\n"
-"HTTPS\n"
-"\n"
-" Secure HTTP requires SSL libraries to be installed and used when curl is\n"
-" built. If that is done, curl is capable of retrieving and posting documents\n"
-" using the HTTPS protocol.\n"
-"\n"
-" Example:\n"
-"\n"
-" curl https://www.secure-site.com\n"
-"\n"
-" Curl is also capable of using your personal certificates to get/post files\n"
-" from sites that require valid certificates. The only drawback is that the\n"
-, stdout);
- fputs(
-" certificate needs to be in PEM-format. PEM is a standard and open format to\n"
-" store certificates with, but it is not used by the most commonly used\n"
-" browsers (Netscape and MSIE both use the so called PKCS#12 format). If you\n"
-" want curl to use the certificates you use with your (favourite) browser, you\n"
-" may need to download/compile a converter that can convert your browser's\n"
-" formatted certificates to PEM formatted ones. This kind of converter is\n"
-, stdout);
- fputs(
-" included in recent versions of OpenSSL, and for older versions Dr Stephen\n"
-" N. Henson has written a patch for SSLeay that adds this functionality. You\n"
-" can get his patch (that requires an SSLeay installation) from his site at:\n"
-" https://web.archive.org/web/20170715155512/www.drh-consultancy.demon.co.uk/\n"
-"\n"
-" Example on how to automatically retrieve a document using a certificate with\n"
-" a personal password:\n"
-"\n"
-" curl -E /path/to/cert.pem:password https://secure.site.com/\n"
-"\n"
-, stdout);
- fputs(
-" If you neglect to specify the password on the command line, you will be\n"
-" prompted for the correct password before any data can be received.\n"
-"\n"
-" Many older SSL-servers have problems with SSLv3 or TLS, which newer versions\n"
-" of OpenSSL etc use, therefore it is sometimes useful to specify what\n"
-" SSL-version curl should use. Use -3, -2 or -1 to specify that exact SSL\n"
-" version to use (for SSLv3, SSLv2 or TLSv1 respectively):\n"
-"\n"
-" curl -2 https://secure.site.com/\n"
-"\n"
-, stdout);
- fputs(
-" Otherwise, curl will first attempt to use v3 and then v2.\n"
-"\n"
-" To use OpenSSL to convert your favourite browser's certificate into a PEM\n"
-" formatted one that curl can use, do something like this:\n"
-"\n"
-" In Netscape, you start with hitting the 'Security' menu button.\n"
-"\n"
-" Select 'certificates->yours' and then pick a certificate in the list\n"
-"\n"
-" Press the 'Export' button\n"
-"\n"
-" enter your PIN code for the certs\n"
-"\n"
-" select a proper place to save it\n"
-"\n"
-, stdout);
- fputs(
-" Run the 'openssl' application to convert the certificate. If you cd to the\n"
-" openssl installation, you can do it like:\n"
-"\n"
-" # ./apps/openssl pkcs12 -in [file you saved] -clcerts -out [PEMfile]\n"
-"\n"
-" In Firefox, select Options, then Advanced, then the Encryption tab,\n"
-" View Certificates. This opens the Certificate Manager, where you can\n"
-" Export. Be sure to select PEM for the Save as type.\n"
-"\n"
-" In Internet Explorer, select Internet Options, then the Content tab, then\n"
-, stdout);
- fputs(
-" Certificates. Then you can Export, and depending on the format you may\n"
-" need to convert to PEM.\n"
-"\n"
-" In Chrome, select Settings, then Show Advanced Settings. Under HTTPS/SSL\n"
-" select Manage Certificates.\n"
-"\n"
-"RESUMING FILE TRANSFERS\n"
-"\n"
-" To continue a file transfer where it was previously aborted, curl supports\n"
-" resume on HTTP(S) downloads as well as FTP uploads and downloads.\n"
-"\n"
-" Continue downloading a document:\n"
-"\n"
-" curl -C - -o file ftp://ftp.server.com/path/file\n"
-"\n"
-, stdout);
- fputs(
-" Continue uploading a document(*1):\n"
-"\n"
-" curl -C - -T file ftp://ftp.server.com/path/file\n"
-"\n"
-" Continue downloading a document from a web server(*2):\n"
-"\n"
-" curl -C - -o file http://www.server.com/\n"
-"\n"
-" (*1) = This requires that the FTP server supports the non-standard command\n"
-" SIZE. If it doesn't, curl will say so.\n"
-"\n"
-" (*2) = This requires that the web server supports at least HTTP/1.1. If it\n"
-" doesn't, curl will say so.\n"
-"\n"
-"TIME CONDITIONS\n"
-"\n"
-, stdout);
- fputs(
-" HTTP allows a client to specify a time condition for the document it\n"
-" requests. It is If-Modified-Since or If-Unmodified-Since. Curl allows you to\n"
-" specify them with the -z/--time-cond flag.\n"
-"\n"
-" For example, you can easily make a download that only gets performed if the\n"
-" remote file is newer than a local copy. It would be made like:\n"
-"\n"
-" curl -z local.html http://remote.server.com/remote.html\n"
-"\n"
-" Or you can download a file only if the local file is newer than the remote\n"
-, stdout);
- fputs(
-" one. Do this by prepending the date string with a '-', as in:\n"
-"\n"
-" curl -z -local.html http://remote.server.com/remote.html\n"
-"\n"
-" You can specify a \"free text\" date as condition. Tell curl to only download\n"
-" the file if it was updated since January 12, 2012:\n"
-"\n"
-" curl -z \"Jan 12 2012\" http://remote.server.com/remote.html\n"
-"\n"
-" Curl will then accept a wide range of date formats. You always make the date\n"
-" check the other way around by prepending it with a dash '-'.\n"
-"\n"
-"DICT\n"
-"\n"
-" For fun try\n"
-"\n"
-, stdout);
- fputs(
-" curl dict://dict.org/m:curl\n"
-" curl dict://dict.org/d:heisenbug:jargon\n"
-" curl dict://dict.org/d:daniel:web1913\n"
-"\n"
-" Aliases for 'm' are 'match' and 'find', and aliases for 'd' are 'define'\n"
-" and 'lookup'. For example,\n"
-"\n"
-" curl dict://dict.org/find:curl\n"
-"\n"
-" Commands that break the URL description of the RFC (but not the DICT\n"
-" protocol) are\n"
-"\n"
-" curl dict://dict.org/show:db\n"
-" curl dict://dict.org/show:strat\n"
-"\n"
-, stdout);
- fputs(
-" Authentication is still missing (but this is not required by the RFC)\n"
-"\n"
-"LDAP\n"
-"\n"
-" If you have installed the OpenLDAP library, curl can take advantage of it\n"
-" and offer ldap:// support.\n"
-" On Windows, curl will use WinLDAP from Platform SDK by default.\n"
-"\n"
-" Default protocol version used by curl is LDAPv3. LDAPv2 will be used as\n"
-" fallback mechanism in case if LDAPv3 will fail to connect.\n"
-"\n"
-" LDAP is a complex thing and writing an LDAP query is not an easy task. I do\n"
-, stdout);
- fputs(
-" advise you to dig up the syntax description for that elsewhere. One such\n"
-" place might be:\n"
-"\n"
-" RFC 2255, \"The LDAP URL Format\" https://curl.haxx.se/rfc/rfc2255.txt\n"
-"\n"
-" To show you an example, this is how I can get all people from my local LDAP\n"
-" server that has a certain sub-domain in their email address:\n"
-"\n"
-" curl -B \"ldap://ldap.frontec.se/o=frontec??sub?mail=*sth.frontec.se\"\n"
-"\n"
-" If I want the same info in HTML format, I can get it by not using the -B\n"
-" (enforce ASCII) flag.\n"
-"\n"
-, stdout);
- fputs(
-" You also can use authentication when accessing LDAP catalog:\n"
-"\n"
-" curl -u user:passwd \"ldap://ldap.frontec.se/o=frontec??sub?mail=*\"\n"
-" curl \"ldap://user:passwd@ldap.frontec.se/o=frontec??sub?mail=*\"\n"
-"\n"
-" By default, if user and password provided, OpenLDAP/WinLDAP will use basic\n"
-" authentication. On Windows you can control this behavior by providing\n"
-" one of --basic, --ntlm or --digest option in curl command line\n"
-"\n"
-" curl --ntlm \"ldap://user:passwd@ldap.frontec.se/o=frontec??sub?mail=*\"\n"
-, stdout);
- fputs(
-"\n"
-" On Windows, if no user/password specified, auto-negotiation mechanism will\n"
-" be used with current logon credentials (SSPI/SPNEGO).\n"
-"\n"
-"ENVIRONMENT VARIABLES\n"
-"\n"
-" Curl reads and understands the following environment variables:\n"
-"\n"
-" http_proxy, HTTPS_PROXY, FTP_PROXY\n"
-"\n"
-" They should be set for protocol-specific proxies. General proxy should be\n"
-" set with\n"
-"\n"
-" ALL_PROXY\n"
-"\n"
-" A comma-separated list of host names that shouldn't go through any proxy is\n"
-, stdout);
- fputs(
-" set in (only an asterisk, '*' matches all hosts)\n"
-"\n"
-" NO_PROXY\n"
-"\n"
-" If the host name matches one of these strings, or the host is within the\n"
-" domain of one of these strings, transactions with that node will not be\n"
-" proxied. When a domain is used, it needs to start with a period. A user can\n"
-" specify that both www.example.com and foo.example.com should not use a\n"
-" proxy by setting NO_PROXY to \".example.com\". By including the full name you\n"
-, stdout);
- fputs(
-" can exclude specific host names, so to make www.example.com not use a proxy\n"
-" but still have foo.example.com do it, set NO_PROXY to \"www.example.com\"\n"
-"\n"
-" The usage of the -x/--proxy flag overrides the environment variables.\n"
-"\n"
-"NETRC\n"
-"\n"
-" Unix introduced the .netrc concept a long time ago. It is a way for a user\n"
-" to specify name and password for commonly visited FTP sites in a file so\n"
-" that you don't have to type them in each time you visit those sites. You\n"
-, stdout);
- fputs(
-" realize this is a big security risk if someone else gets hold of your\n"
-" passwords, so therefore most unix programs won't read this file unless it is\n"
-" only readable by yourself (curl doesn't care though).\n"
-"\n"
-" Curl supports .netrc files if told to (using the -n/--netrc and\n"
-" --netrc-optional options). This is not restricted to just FTP,\n"
-" so curl can use it for all protocols where authentication is used.\n"
-"\n"
-" A very simple .netrc file could look something like:\n"
-"\n"
-, stdout);
- fputs(
-" machine curl.haxx.se login iamdaniel password mysecret\n"
-"\n"
-"CUSTOM OUTPUT\n"
-"\n"
-" To better allow script programmers to get to know about the progress of\n"
-" curl, the -w/--write-out option was introduced. Using this, you can specify\n"
-" what information from the previous transfer you want to extract.\n"
-"\n"
-" To display the amount of bytes downloaded together with some text and an\n"
-" ending newline:\n"
-"\n"
-" curl -w 'We downloaded %{size_download} bytes\\n' www.download.com\n"
-"\n"
-"KERBEROS FTP TRANSFER\n"
-"\n"
-, stdout);
- fputs(
-" Curl supports kerberos4 and kerberos5/GSSAPI for FTP transfers. You need\n"
-" the kerberos package installed and used at curl build time for it to be\n"
-" available.\n"
-"\n"
-" First, get the krb-ticket the normal way, like with the kinit/kauth tool.\n"
-" Then use curl in way similar to:\n"
-"\n"
-" curl --krb private ftp://krb4site.com -u username:fakepwd\n"
-"\n"
-" There's no use for a password on the -u switch, but a blank one will make\n"
-" curl ask for one and you already entered the real password to kinit/kauth.\n"
-"\n"
-, stdout);
- fputs(
-"TELNET\n"
-"\n"
-" The curl telnet support is basic and very easy to use. Curl passes all data\n"
-" passed to it on stdin to the remote server. Connect to a remote telnet\n"
-" server using a command line similar to:\n"
-"\n"
-" curl telnet://remote.server.com\n"
-"\n"
-" And enter the data to pass to the server on stdin. The result will be sent\n"
-" to stdout or to the file you specify with -o.\n"
-"\n"
-" You might want the -N/--no-buffer option to switch off the buffered output\n"
-" for slow connections or similar.\n"
-"\n"
-, stdout);
- fputs(
-" Pass options to the telnet protocol negotiation, by using the -t option. To\n"
-" tell the server we use a vt100 terminal, try something like:\n"
-"\n"
-" curl -tTTYPE=vt100 telnet://remote.server.com\n"
-"\n"
-" Other interesting options for it -t include:\n"
-"\n"
-" - XDISPLOC=<X display> Sets the X display location.\n"
-"\n"
-" - NEW_ENV=<var,val> Sets an environment variable.\n"
-"\n"
-" NOTE: The telnet protocol does not specify any way to login with a specified\n"
-, stdout);
- fputs(
-" user and password so curl can't do that automatically. To do that, you need\n"
-" to track when the login prompt is received and send the username and\n"
-" password accordingly.\n"
-"\n"
-"PERSISTENT CONNECTIONS\n"
-"\n"
-" Specifying multiple files on a single command line will make curl transfer\n"
-" all of them, one after the other in the specified order.\n"
-"\n"
-" libcurl will attempt to use persistent connections for the transfers so that\n"
-" the second transfer to the same host can use the same connection that was\n"
-, stdout);
- fputs(
-" already initiated and was left open in the previous transfer. This greatly\n"
-" decreases connection time for all but the first transfer and it makes a far\n"
-" better use of the network.\n"
-"\n"
-" Note that curl cannot use persistent connections for transfers that are used\n"
-" in subsequence curl invokes. Try to stuff as many URLs as possible on the\n"
-" same command line if they are using the same host, as that'll make the\n"
-" transfers faster. If you use an HTTP proxy for file transfers, practically\n"
-, stdout);
- fputs(
-" all transfers will be persistent.\n"
-"\n"
-"MULTIPLE TRANSFERS WITH A SINGLE COMMAND LINE\n"
-"\n"
-" As is mentioned above, you can download multiple files with one command line\n"
-" by simply adding more URLs. If you want those to get saved to a local file\n"
-" instead of just printed to stdout, you need to add one save option for each\n"
-" URL you specify. Note that this also goes for the -O option (but not\n"
-" --remote-name-all).\n"
-"\n"
-" For example: get two files and use -O for the first and a custom file\n"
-, stdout);
- fputs(
-" name for the second:\n"
-"\n"
-" curl -O http://url.com/file.txt ftp://ftp.com/moo.exe -o moo.jpg\n"
-"\n"
-" You can also upload multiple files in a similar fashion:\n"
-"\n"
-" curl -T local1 ftp://ftp.com/moo.exe -T local2 ftp://ftp.com/moo2.txt\n"
-"\n"
-"IPv6\n"
-"\n"
-" curl will connect to a server with IPv6 when a host lookup returns an IPv6\n"
-" address and fall back to IPv4 if the connection fails. The --ipv4 and --ipv6\n"
-" options can specify which address to use when both are available. IPv6\n"
-, stdout);
- fputs(
-" addresses can also be specified directly in URLs using the syntax:\n"
-"\n"
-" http://[2001:1890:1112:1::20]/overview.html\n"
-"\n"
-" When this style is used, the -g option must be given to stop curl from\n"
-" interpreting the square brackets as special globbing characters. Link local\n"
-" and site local addresses including a scope identifier, such as fe80::1234%1,\n"
-" may also be used, but the scope portion must be numeric or match an existing\n"
-, stdout);
- fputs(
-" network interface on Linux and the percent character must be URL escaped. The\n"
-" previous example in an SFTP URL might look like:\n"
-"\n"
-" sftp://[fe80::1234%251]/\n"
-"\n"
-" IPv6 addresses provided other than in URLs (e.g. to the --proxy, --interface\n"
-" or --ftp-port options) should not be URL encoded.\n"
-"\n"
-"METALINK\n"
-"\n"
-" Curl supports Metalink (both version 3 and 4 (RFC 5854) are supported), a way\n"
-" to list multiple URIs and hashes for a file. Curl will make use of the mirrors\n"
-, stdout);
- fputs(
-" listed within for failover if there are errors (such as the file or server not\n"
-" being available). It will also verify the hash of the file after the download\n"
-" completes. The Metalink file itself is downloaded and processed in memory and\n"
-" not stored in the local file system.\n"
-"\n"
-" Example to use a remote Metalink file:\n"
-"\n"
-" curl --metalink http://www.example.com/example.metalink\n"
-"\n"
-" To use a Metalink file in the local file system, use FILE protocol (file://):\n"
-"\n"
-, stdout);
- fputs(
-" curl --metalink file://example.metalink\n"
-"\n"
-" Please note that if FILE protocol is disabled, there is no way to use a local\n"
-" Metalink file at the time of this writing. Also note that if --metalink and\n"
-" --include are used together, --include will be ignored. This is because including\n"
-" headers in the response will break Metalink parser and if the headers are included\n"
-" in the file described in Metalink file, hash check will fail.\n"
-"\n"
-"MAILING LISTS\n"
-"\n"
-, stdout);
- fputs(
-" For your convenience, we have several open mailing lists to discuss curl,\n"
-" its development and things relevant to this. Get all info at\n"
-" https://curl.haxx.se/mail/. Some of the lists available are:\n"
-"\n"
-" curl-users\n"
-"\n"
-" Users of the command line tool. How to use it, what doesn't work, new\n"
-" features, related tools, questions, news, installations, compilations,\n"
-" running, porting etc.\n"
-"\n"
-" curl-library\n"
-"\n"
-" Developers using or developing libcurl. Bugs, extensions, improvements.\n"
-"\n"
-, stdout);
- fputs(
-" curl-announce\n"
-"\n"
-" Low-traffic. Only receives announcements of new public versions. At worst,\n"
-" that makes something like one or two mails per month, but usually only one\n"
-" mail every second month.\n"
-"\n"
-" curl-and-php\n"
-"\n"
-" Using the curl functions in PHP. Everything curl with a PHP angle. Or PHP\n"
-" with a curl angle.\n"
-"\n"
-" curl-and-python\n"
-"\n"
-" Python hackers using curl with or without the python binding pycurl.\n"
-"\n"
-" Please direct curl questions, feature requests and trouble reports to one of\n"
-, stdout);
- fputs(
-" these mailing lists instead of mailing any individual.\n"
, stdout) ;
}
#else /* !USE_MANUAL */
@@ -5499,5013 +4305,3898 @@ 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 204333
- to 60047 bytes. You can disable the use of compressed help
+ Thanks to this operation, the size of this data shrank from 165911
+ to 46657 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, 0xfd,
- 0x6b, 0x7b, 0xdc, 0x46, 0x96, 0x25, 0x8c, 0x7e, 0xe7, 0xaf, 0x40, 0x67,
- 0x9d, 0x6a, 0x92, 0xdd, 0x99, 0xc9, 0x8b, 0x2e, 0xb6, 0x68, 0xc9, 0x6d,
- 0x9a, 0xa2, 0x6c, 0xb6, 0x29, 0x91, 0xc3, 0xa4, 0x6c, 0xd7, 0x6b, 0xfb,
- 0xd1, 0x83, 0xcc, 0x04, 0x49, 0x94, 0x32, 0x81, 0x2c, 0x00, 0x49, 0x8a,
- 0xd5, 0xd3, 0xf3, 0xdb, 0x4f, 0xec, 0xb5, 0xf7, 0x8e, 0x08, 0x20, 0x22,
- 0x93, 0xb4, 0xcb, 0xae, 0x99, 0xf3, 0xce, 0xe9, 0x99, 0xb2, 0x24, 0x12,
- 0x08, 0xc4, 0x75, 0xc7, 0xbe, 0xae, 0x95, 0x24, 0x0f, 0xfd, 0xdf, 0x07,
- 0xfc, 0xef, 0x83, 0xf9, 0x3f, 0xf3, 0xe7, 0x46, 0x92, 0x9c, 0x57, 0xe5,
- 0x5f, 0xb3, 0x49, 0x13, 0x7f, 0xf6, 0xc3, 0x87, 0xff, 0x99, 0xf0, 0xff,
- 0x33, 0xef, 0xfc, 0x6c, 0xfe, 0xdc, 0x58, 0xdb, 0xf6, 0x4e, 0xe2, 0x5e,
- 0xf8, 0x9f, 0x1f, 0xb6, 0x93, 0x87, 0x5e, 0xf8, 0x9f, 0xc9, 0x16, 0x5e,
- 0xf8, 0x20, 0x5f, 0x78, 0x49, 0x7f, 0xff, 0xf0, 0x61, 0xfd, 0x47, 0x7e,
- 0xa6, 0x5e, 0xd1, 0x7f, 0x76, 0xe8, 0xbd, 0x9f, 0x3f, 0xd0, 0x5f, 0xcd,
- 0x4f, 0x36, 0x36, 0xde, 0x1d, 0xbe, 0x3d, 0xd6, 0x57, 0x27, 0xcb, 0x6a,
- 0x96, 0x0c, 0x92, 0xa6, 0x4a, 0x8b, 0xfa, 0x2a, 0xab, 0x92, 0x34, 0x79,
- 0x7f, 0x71, 0xba, 0xb1, 0x31, 0xfa, 0xcb, 0xbb, 0xb3, 0xf3, 0xd1, 0xc9,
- 0xa8, 0xf5, 0xd8, 0x4f, 0xe5, 0xa2, 0xc9, 0xcb, 0xa2, 0x36, 0xdd, 0x37,
- 0x0f, 0xd5, 0xbf, 0x6c, 0x6c, 0xbc, 0x3e, 0x1e, 0x1d, 0x5d, 0x9c, 0x9c,
- 0x5f, 0x9e, 0x9c, 0xbd, 0x6b, 0x3d, 0x99, 0xe4, 0x75, 0x62, 0x9a, 0x6a,
- 0xca, 0x72, 0x66, 0xfe, 0xe3, 0x5a, 0x9f, 0xa6, 0x4d, 0x9a, 0x5c, 0x55,
- 0xe5, 0x3c, 0x29, 0x2b, 0xfa, 0x45, 0x9a, 0xd4, 0x59, 0x75, 0x9b, 0x55,
- 0xfd, 0x64, 0x59, 0xe7, 0xc5, 0x75, 0x52, 0x16, 0x59, 0x52, 0x5e, 0x25,
- 0xcd, 0x4d, 0xa6, 0xcd, 0xd5, 0xcb, 0xc5, 0xa2, 0xac, 0x9a, 0x6c, 0x9a,
- 0x2c, 0xaa, 0xb2, 0x29, 0x27, 0xe5, 0xac, 0x4e, 0xb6, 0x5e, 0x9f, 0x1c,
- 0x5d, 0xf6, 0x93, 0x37, 0x27, 0xa7, 0xc7, 0xe6, 0xbf, 0x97, 0xe7, 0xf8,
- 0xcf, 0xa8, 0x9f, 0x7c, 0x73, 0x76, 0xfe, 0xed, 0xf1, 0x45, 0x3f, 0xf9,
- 0xf6, 0x92, 0x7e, 0x46, 0xff, 0x35, 0x3f, 0x4c, 0x4e, 0xde, 0x1e, 0x9e,
- 0xf7, 0xb5, 0x39, 0xfa, 0x07, 0xfd, 0xf0, 0xf4, 0xb5, 0xf9, 0x21, 0xff,
- 0x41, 0xff, 0x3c, 0x3f, 0x3b, 0x7f, 0x22, 0x7f, 0xd0, 0x3f, 0x2f, 0x2e,
- 0xdf, 0x9a, 0xdf, 0x5e, 0x5c, 0x8e, 0xcc, 0x7f, 0x47, 0x47, 0xf4, 0x1f,
- 0x7c, 0x65, 0xf4, 0xf6, 0x6b, 0xfc, 0x67, 0x64, 0x9b, 0x1b, 0xbd, 0xe5,
- 0x9f, 0xe3, 0x4b, 0x97, 0xc7, 0xa7, 0xef, 0x8e, 0x2f, 0x93, 0xb4, 0x98,
- 0x26, 0x97, 0xe6, 0xf9, 0xed, 0x61, 0x72, 0x79, 0x93, 0x25, 0x93, 0x72,
- 0x3e, 0xa7, 0x1f, 0x99, 0x19, 0x99, 0x66, 0x75, 0x7e, 0x5d, 0x98, 0xa1,
- 0x98, 0x91, 0xdf, 0x95, 0xd5, 0xc7, 0x24, 0xb9, 0xcb, 0x9b, 0x9b, 0x72,
- 0xd9, 0x68, 0x73, 0x4b, 0x33, 0x1b, 0x49, 0x5e, 0x34, 0x59, 0x95, 0x4e,
- 0x68, 0xa6, 0x87, 0x1b, 0xad, 0x59, 0x2d, 0xaf, 0xcc, 0x1c, 0xd6, 0x66,
- 0xd2, 0xc6, 0xcb, 0x7a, 0x56, 0xa6, 0x53, 0x9a, 0x2a, 0xf3, 0xca, 0xd5,
- 0xd2, 0x4c, 0x72, 0x95, 0x4f, 0x3e, 0xd6, 0xc9, 0x2c, 0xff, 0x98, 0xd1,
- 0x44, 0x7d, 0xba, 0xd7, 0x89, 0xeb, 0x73, 0xa3, 0xe9, 0xd2, 0xcc, 0x69,
- 0x31, 0xd0, 0xe6, 0x9a, 0x7c, 0x92, 0xd2, 0x07, 0x30, 0x73, 0xc9, 0x72,
- 0x41, 0xad, 0xf1, 0x8c, 0x25, 0x8b, 0xb2, 0x36, 0x2f, 0x8d, 0x46, 0xa7,
- 0xa6, 0xe7, 0x45, 0x91, 0xa1, 0x1f, 0x75, 0xdf, 0xfc, 0xa3, 0xfc, 0x98,
- 0x67, 0xe6, 0x2f, 0x57, 0xf9, 0x2c, 0x4b, 0x78, 0x45, 0x6d, 0x73, 0xb4,
- 0xb4, 0x49, 0x95, 0xd5, 0xcb, 0x79, 0x66, 0x66, 0xef, 0x6d, 0xd6, 0xa4,
- 0xb3, 0xbc, 0xf8, 0x68, 0xfe, 0x4a, 0x03, 0x9f, 0x97, 0x55, 0x36, 0x4c,
- 0x0e, 0xeb, 0xe4, 0xbe, 0x5c, 0x9a, 0x01, 0xcf, 0x66, 0x66, 0xcd, 0xb3,
- 0x64, 0x9c, 0xcd, 0xca, 0xbb, 0x3e, 0xad, 0x74, 0x52, 0x2c, 0xe7, 0x63,
- 0xd3, 0x40, 0x79, 0xe5, 0x9a, 0x4b, 0x9b, 0xa5, 0x69, 0x8e, 0x9f, 0x9e,
- 0xa7, 0x66, 0x4c, 0xe6, 0xdd, 0x2a, 0xb9, 0xc9, 0xcc, 0x98, 0xeb, 0x45,
- 0x5e, 0xfc, 0x4b, 0x7b, 0x5e, 0xcc, 0xd4, 0x2e, 0xca, 0xbb, 0xac, 0x32,
- 0x33, 0x3b, 0xbe, 0x4f, 0xcc, 0x24, 0x8c, 0x79, 0x13, 0x5e, 0x99, 0x4d,
- 0x96, 0xa4, 0xa6, 0x09, 0xbb, 0x01, 0x07, 0x55, 0x36, 0x4b, 0x69, 0x33,
- 0xd9, 0x6f, 0x0c, 0xcd, 0x22, 0x66, 0x76, 0xb7, 0xc9, 0xab, 0x5b, 0x4f,
- 0xb6, 0xf1, 0xf2, 0xd4, 0x8c, 0x24, 0x9f, 0xd5, 0x66, 0x19, 0xe8, 0x50,
- 0xc8, 0x33, 0xb4, 0xa8, 0xb4, 0xff, 0xcd, 0xde, 0xbc, 0x2f, 0x9a, 0xf4,
- 0x13, 0x3e, 0x2f, 0x7b, 0x73, 0x30, 0xcd, 0x16, 0x59, 0x31, 0xcd, 0x8a,
- 0x66, 0x98, 0xfc, 0xa5, 0x5c, 0x6e, 0x9a, 0x6f, 0x5f, 0xe5, 0x66, 0x0e,
- 0x52, 0x69, 0xca, 0x7c, 0xd9, 0x6c, 0x82, 0x49, 0x95, 0x2f, 0xbc, 0xa5,
- 0x28, 0x0b, 0xb3, 0xe6, 0xc9, 0xc5, 0x9b, 0xa3, 0xe4, 0xc9, 0x8b, 0xcf,
- 0x9f, 0xbb, 0x35, 0x37, 0x0d, 0x24, 0x93, 0xb4, 0x30, 0x23, 0xce, 0x26,
- 0xf9, 0xd5, 0x7d, 0x32, 0x5f, 0xce, 0x9a, 0x7c, 0x61, 0x66, 0x9f, 0x0e,
- 0x1f, 0x1d, 0xa0, 0x45, 0x5a, 0x35, 0x35, 0x6d, 0x02, 0xfc, 0x00, 0x63,
- 0xbf, 0xab, 0xf2, 0x86, 0x0e, 0x12, 0x7e, 0x67, 0x7a, 0x98, 0x35, 0xb5,
- 0x36, 0x47, 0x7b, 0xcd, 0x7c, 0x67, 0x6c, 0xf6, 0x96, 0x99, 0xda, 0xb4,
- 0x36, 0x1f, 0x3d, 0xd8, 0x70, 0x12, 0xe4, 0xa6, 0x69, 0x16, 0x07, 0x3b,
- 0x3b, 0x75, 0xde, 0x64, 0xc3, 0xff, 0x32, 0xe7, 0xb0, 0xdf, 0xdc, 0x95,
- 0xfd, 0xe6, 0xa6, 0xca, 0xb2, 0xff, 0x1e, 0x9a, 0x3d, 0x6c, 0x9f, 0x34,
- 0xdf, 0xbd, 0x97, 0x8e, 0x5d, 0x67, 0x8d, 0xf9, 0xc2, 0xdf, 0x96, 0x59,
- 0x41, 0x2d, 0x9a, 0x7e, 0xa4, 0xb3, 0xc5, 0x4d, 0x6a, 0x96, 0x33, 0x33,
- 0xbb, 0x91, 0x4e, 0xb6, 0xd9, 0x30, 0xd4, 0x2b, 0x3e, 0xdb, 0x3f, 0xfd,
- 0x12, 0x7e, 0xf4, 0x0a, 0xdf, 0x34, 0xff, 0x1d, 0x66, 0x9f, 0xd2, 0xb9,
- 0x19, 0x1b, 0x7d, 0x6a, 0x87, 0xb6, 0xd8, 0x4f, 0x7b, 0x83, 0xbd, 0xdd,
- 0xdd, 0x5f, 0x86, 0xcd, 0xa7, 0xe6, 0x71, 0xcf, 0xef, 0xee, 0xba, 0x37,
- 0xe8, 0xd1, 0x2d, 0x1a, 0x6f, 0x32, 0x33, 0x5b, 0x86, 0x3e, 0xfe, 0xf7,
- 0xac, 0x2a, 0xeb, 0xed, 0xc7, 0xb5, 0x94, 0x0e, 0xfe, 0xde, 0xfe, 0xee,
- 0xbb, 0xac, 0xc6, 0x9e, 0x71, 0x63, 0x4d, 0xd2, 0xca, 0xec, 0xdb, 0xb2,
- 0x71, 0xe2, 0xa9, 0x6f, 0x0e, 0x65, 0x63, 0x67, 0xc6, 0x9c, 0x39, 0xf3,
- 0xb4, 0x11, 0x6c, 0xe9, 0x8c, 0x64, 0x5a, 0x9d, 0x14, 0xd9, 0x27, 0x7b,
- 0xca, 0xcd, 0xe9, 0xcf, 0xd2, 0xc9, 0x4d, 0x52, 0x9a, 0xcd, 0x5f, 0x45,
- 0x96, 0xc0, 0xef, 0x50, 0x5a, 0x4d, 0x6e, 0xf2, 0x5b, 0x33, 0x1b, 0x2f,
- 0x5e, 0x3c, 0x1f, 0x98, 0xff, 0xbc, 0xf8, 0x65, 0xe7, 0xb6, 0x9c, 0x99,
- 0xc9, 0x79, 0xfa, 0xcb, 0x0e, 0x2d, 0xf1, 0x7f, 0xa5, 0xfd, 0x71, 0x7f,
- 0xf2, 0xdf, 0xc3, 0x9b, 0x66, 0x3e, 0x5b, 0xb9, 0x71, 0xd2, 0xc2, 0xfc,
- 0x6f, 0x5e, 0x2e, 0x8b, 0xc6, 0x6e, 0x16, 0xb3, 0xe7, 0x1a, 0x4f, 0x38,
- 0x99, 0xe3, 0x6a, 0xce, 0x28, 0x6d, 0x6d, 0xda, 0x43, 0x74, 0xea, 0xcc,
- 0x01, 0x75, 0xc7, 0xb1, 0x99, 0xdc, 0xd0, 0xf8, 0xcd, 0xee, 0x49, 0x65,
- 0x12, 0x9a, 0x3c, 0xa5, 0x93, 0x69, 0x04, 0x04, 0x09, 0x2c, 0xb4, 0xc5,
- 0x5f, 0xcb, 0xcd, 0x83, 0x65, 0x35, 0xcd, 0xaa, 0x61, 0xb7, 0x1b, 0xf6,
- 0xc8, 0x7a, 0xdf, 0x4c, 0xf4, 0x46, 0xa1, 0x1f, 0xa0, 0x63, 0xf3, 0xfc,
- 0x93, 0x69, 0x01, 0x02, 0xb3, 0x40, 0xc7, 0xb9, 0xb5, 0x84, 0x7a, 0x8c,
- 0xcf, 0xe8, 0xfb, 0xee, 0xc8, 0x9a, 0xae, 0xb7, 0x86, 0x8e, 0x8f, 0xba,
- 0xc1, 0x27, 0x66, 0xf1, 0x16, 0xe6, 0xad, 0x25, 0xc9, 0x55, 0x1c, 0x6b,
- 0x6a, 0xc6, 0x08, 0x84, 0x6b, 0xb3, 0x2e, 0x66, 0x2d, 0x68, 0x17, 0xd3,
- 0x52, 0xdd, 0x27, 0xef, 0xcc, 0x86, 0x61, 0x61, 0xe4, 0x6d, 0xf6, 0x59,
- 0xd6, 0x34, 0x0f, 0x2e, 0x93, 0xdb, 0xb1, 0x07, 0x7b, 0xc1, 0xa6, 0x5d,
- 0xf5, 0xbc, 0xd9, 0x67, 0x07, 0xfb, 0xed, 0x87, 0x7f, 0x30, 0x42, 0xda,
- 0x1d, 0x17, 0xf3, 0xf5, 0xff, 0xfa, 0x6f, 0x6f, 0xd7, 0xdd, 0xd1, 0x6f,
- 0xf3, 0xe2, 0xb6, 0xfc, 0x68, 0xa6, 0x08, 0xb7, 0x68, 0xda, 0x9e, 0x4d,
- 0x92, 0x43, 0xf3, 0x45, 0x63, 0xaf, 0x27, 0xda, 0x8e, 0xe6, 0x47, 0xe3,
- 0x74, 0x3c, 0xbb, 0x4f, 0x6e, 0xd2, 0xdb, 0x8c, 0xc6, 0xbb, 0x30, 0xfb,
- 0x94, 0x66, 0xc0, 0x5c, 0x1b, 0x33, 0xc8, 0x31, 0x11, 0x0c, 0xd3, 0x72,
- 0x39, 0x36, 0xc2, 0xe5, 0x6f, 0xcb, 0xb2, 0xe1, 0x89, 0x49, 0x6f, 0xcb,
- 0x7c, 0xda, 0xba, 0x8b, 0x6f, 0x32, 0x12, 0x68, 0xf4, 0x61, 0x5c, 0x52,
- 0x46, 0xa0, 0x52, 0x4f, 0x71, 0xd0, 0xf2, 0x86, 0xae, 0x3b, 0x23, 0x0a,
- 0xd3, 0x59, 0x5d, 0x26, 0xc9, 0x75, 0x49, 0xa7, 0x04, 0x02, 0x18, 0xdb,
- 0xdc, 0x2c, 0xca, 0x4d, 0x4a, 0xb7, 0x9a, 0xb9, 0xc0, 0xec, 0x39, 0xa8,
- 0x32, 0xc8, 0x62, 0xac, 0x54, 0x3a, 0xeb, 0xf3, 0xed, 0x45, 0xef, 0xc8,
- 0x54, 0x25, 0x9b, 0xff, 0xba, 0xd9, 0x4f, 0x36, 0xff, 0x63, 0x13, 0xfb,
- 0x61, 0xf3, 0xdf, 0x36, 0xdd, 0x3a, 0x1b, 0x65, 0xec, 0x36, 0x9f, 0x66,
- 0xbc, 0x25, 0x4e, 0xce, 0x6f, 0x9f, 0x27, 0x7f, 0x27, 0xdd, 0xc1, 0xc8,
- 0xda, 0xec, 0x93, 0x6e, 0x48, 0x1d, 0x9b, 0x79, 0x3b, 0x31, 0x42, 0x37,
- 0x5d, 0x90, 0x12, 0x91, 0x55, 0x13, 0xb3, 0x7b, 0xd3, 0x6b, 0xb3, 0x5f,
- 0xcd, 0x5d, 0xac, 0xcd, 0x51, 0xfb, 0xf4, 0x0a, 0x0f, 0xcb, 0x08, 0xc8,
- 0xa4, 0x48, 0xe7, 0xe6, 0x44, 0x9c, 0x52, 0x8f, 0xf2, 0x22, 0x5c, 0xcc,
- 0x9f, 0xae, 0xb2, 0xcf, 0x77, 0x0f, 0x0e, 0x9e, 0xfc, 0x79, 0xff, 0x59,
- 0xd6, 0xdc, 0xec, 0xfe, 0xb2, 0x63, 0x1f, 0x39, 0xb9, 0xc2, 0xb4, 0xeb,
- 0xf6, 0xd3, 0x4e, 0x98, 0x5b, 0xde, 0xde, 0x12, 0xe6, 0x7d, 0xf3, 0xf7,
- 0xec, 0x2a, 0xff, 0xd4, 0x57, 0x7d, 0x89, 0xcf, 0x5c, 0x6a, 0xb6, 0x9a,
- 0x59, 0x3f, 0x12, 0x11, 0xda, 0xdc, 0xf5, 0x32, 0xab, 0xcd, 0x4c, 0xde,
- 0xdd, 0xa4, 0x4d, 0x62, 0x1b, 0xe0, 0x95, 0x9d, 0xe7, 0xd7, 0x37, 0x4d,
- 0x72, 0x97, 0xd2, 0x65, 0x73, 0xd2, 0x70, 0x13, 0x74, 0xcb, 0x9b, 0x2b,
- 0xe6, 0x2a, 0x35, 0x77, 0x05, 0xad, 0x21, 0xae, 0xf4, 0xb1, 0xd3, 0x30,
- 0x1a, 0xb3, 0xcd, 0x79, 0x41, 0x9c, 0x3a, 0x35, 0x4e, 0x6b, 0x3a, 0xb4,
- 0x85, 0x11, 0x0e, 0x8d, 0xd1, 0x11, 0x96, 0xf4, 0xaf, 0x1b, 0xa3, 0x05,
- 0x60, 0x0e, 0xa4, 0xa3, 0xb8, 0x28, 0xdf, 0xd0, 0x72, 0xd2, 0xda, 0xd8,
- 0xcb, 0xcb, 0x2c, 0x52, 0x5f, 0x96, 0xd9, 0xbe, 0x51, 0x9b, 0x03, 0x67,
- 0x24, 0x93, 0xdd, 0x19, 0x3d, 0x12, 0xb2, 0x3d, 0x1e, 0x27, 0xfa, 0x98,
- 0xd6, 0xa4, 0x28, 0xb0, 0x3a, 0x60, 0x3a, 0xef, 0x0d, 0xd6, 0x4c, 0x5a,
- 0xfa, 0x91, 0x54, 0x92, 0x8e, 0xe2, 0x83, 0xd7, 0xa6, 0xa5, 0xd9, 0x64,
- 0xa6, 0xb7, 0x46, 0x18, 0xd3, 0xc8, 0x48, 0xc4, 0x62, 0x56, 0xb0, 0xc9,
- 0x4d, 0x9b, 0xf4, 0xc3, 0xbc, 0xa1, 0x3b, 0x06, 0x3a, 0xac, 0xe9, 0xaf,
- 0x99, 0x14, 0x28, 0xa2, 0x46, 0x50, 0x7b, 0xe3, 0xc7, 0xf5, 0x68, 0x9e,
- 0x4d, 0x6e, 0x8d, 0x96, 0x62, 0x14, 0xd2, 0xcc, 0xbe, 0x85, 0xfb, 0x7c,
- 0x42, 0xba, 0xd1, 0xcc, 0x9c, 0x97, 0x49, 0x59, 0x55, 0xa4, 0xef, 0xd3,
- 0x0a, 0x8e, 0x59, 0x88, 0xce, 0x33, 0xa3, 0x46, 0xf8, 0xd3, 0x99, 0xd3,
- 0x85, 0x66, 0xe4, 0x8b, 0xd1, 0x4b, 0x20, 0x41, 0x8c, 0xfe, 0x00, 0x99,
- 0x8f, 0x81, 0xa3, 0x77, 0xd4, 0xf6, 0x64, 0x92, 0x2d, 0x9a, 0x3a, 0x36,
- 0x26, 0x5d, 0x70, 0xd3, 0x9d, 0x2a, 0xa3, 0x99, 0xf7, 0x95, 0x2e, 0xcc,
- 0xab, 0xbd, 0xf4, 0xa1, 0x77, 0xa9, 0x1e, 0x63, 0xf4, 0xb0, 0xda, 0xce,
- 0x5a, 0x83, 0xbd, 0x61, 0xc4, 0x18, 0xe6, 0x7c, 0x4e, 0x1d, 0xa5, 0x87,
- 0x6b, 0x3e, 0xa9, 0x10, 0xcd, 0xb4, 0x90, 0xac, 0x69, 0xf3, 0x77, 0xe9,
- 0xea, 0x32, 0xf3, 0x69, 0x1b, 0x37, 0x5f, 0xb5, 0x6b, 0x4a, 0x9f, 0x27,
- 0x15, 0xdf, 0xdc, 0xe4, 0xd3, 0xfa, 0xc6, 0x28, 0x5f, 0xb5, 0x9c, 0xec,
- 0x7c, 0x6e, 0xf6, 0xcc, 0x2d, 0xad, 0xef, 0x22, 0xcb, 0xa6, 0xc3, 0xe4,
- 0xec, 0x8a, 0xa4, 0x6a, 0x65, 0x3a, 0xdd, 0xe0, 0xd7, 0x74, 0xab, 0x98,
- 0x79, 0x9b, 0x42, 0x89, 0xb7, 0x47, 0x8b, 0xbb, 0xe2, 0xdd, 0x0e, 0x90,
- 0xe4, 0xa9, 0xf9, 0x89, 0xe9, 0xed, 0xac, 0x7d, 0x05, 0xe1, 0x1c, 0x1a,
- 0xe9, 0x4d, 0xdd, 0x1b, 0x67, 0x09, 0x76, 0xe2, 0x38, 0x6b, 0xee, 0xb2,
- 0xcc, 0x36, 0x57, 0x67, 0xe6, 0xda, 0xa3, 0x45, 0x63, 0xcd, 0x0f, 0xc2,
- 0x90, 0xa6, 0xf6, 0xfc, 0xe2, 0xec, 0x9b, 0x8b, 0xe3, 0xd1, 0x28, 0x79,
- 0x7b, 0x7c, 0x79, 0x7c, 0xd1, 0x9a, 0xe9, 0xa2, 0xac, 0xe6, 0x58, 0xd1,
- 0x69, 0x5e, 0x2f, 0x66, 0xe9, 0x3d, 0x2d, 0xb5, 0x19, 0xc9, 0x75, 0x45,
- 0x27, 0x6b, 0x9e, 0xd1, 0xad, 0x30, 0x5d, 0x42, 0x92, 0x99, 0xeb, 0xc8,
- 0x2c, 0x9f, 0x68, 0xbc, 0x24, 0x4c, 0xa0, 0x26, 0x17, 0xd7, 0x6e, 0xa6,
- 0x8d, 0xc4, 0x91, 0x9b, 0x94, 0xae, 0x52, 0xbb, 0x1e, 0xa4, 0x7a, 0xc2,
- 0xb8, 0xe9, 0xbb, 0x9f, 0xf1, 0x34, 0xf1, 0xd5, 0x66, 0xf6, 0x6c, 0x3e,
- 0x87, 0xb0, 0x33, 0x7f, 0x3a, 0x6d, 0x33, 0xbb, 0x32, 0xaa, 0xb6, 0xb9,
- 0x5d, 0xd9, 0x52, 0xe8, 0xf6, 0x49, 0x7b, 0x6b, 0xf5, 0x63, 0xb3, 0x0d,
- 0x49, 0x34, 0x53, 0x83, 0xdc, 0x15, 0xfe, 0x82, 0x15, 0x62, 0x46, 0x27,
- 0x21, 0xd9, 0x27, 0x8f, 0x2d, 0xa8, 0x0b, 0x99, 0x59, 0xd9, 0x29, 0x37,
- 0x5f, 0x2f, 0xaf, 0x70, 0x90, 0x93, 0x2d, 0xa3, 0x99, 0xbf, 0x35, 0xd6,
- 0x92, 0xb1, 0x58, 0xfa, 0xc9, 0xf9, 0x36, 0xde, 0xdb, 0xdb, 0xdd, 0x7f,
- 0xca, 0x82, 0x60, 0xa8, 0xcd, 0xbd, 0xf1, 0x04, 0xf1, 0xde, 0x47, 0x5a,
- 0x5e, 0x7e, 0x88, 0x1a, 0x1f, 0x26, 0x7b, 0x6f, 0xf9, 0x27, 0x4f, 0x3f,
- 0x7f, 0xf6, 0xd9, 0x73, 0xf9, 0x61, 0x7b, 0x83, 0xdb, 0xfe, 0x63, 0x77,
- 0xc0, 0xf2, 0x23, 0x53, 0xd0, 0xf4, 0xc4, 0x8c, 0x6e, 0x9e, 0x17, 0xe6,
- 0x98, 0x98, 0x63, 0x25, 0xb2, 0x8a, 0xf6, 0xb3, 0xe9, 0xfc, 0x15, 0x4b,
- 0x36, 0x59, 0xd7, 0xb6, 0x49, 0x69, 0x5e, 0x36, 0x5b, 0xd6, 0xc8, 0x72,
- 0xbb, 0x48, 0xac, 0x26, 0x34, 0xd4, 0x91, 0x74, 0x4c, 0x02, 0x96, 0xec,
- 0x2a, 0xa3, 0x00, 0x67, 0xd1, 0xaf, 0xd9, 0x5b, 0xd1, 0xbc, 0x61, 0xfa,
- 0x66, 0xee, 0x44, 0xba, 0xe6, 0xc2, 0x79, 0x37, 0xa2, 0x00, 0x12, 0xf2,
- 0x2e, 0xaf, 0x21, 0x1a, 0xee, 0xca, 0xe5, 0xcc, 0x58, 0x31, 0xf4, 0xc0,
- 0x72, 0x81, 0x17, 0xcc, 0xa7, 0x16, 0x4e, 0x06, 0x18, 0x8d, 0x85, 0xf6,
- 0x4e, 0xb7, 0x15, 0xd3, 0x35, 0xf3, 0xcf, 0x85, 0xd9, 0x4a, 0xdc, 0x9d,
- 0x61, 0xf7, 0x86, 0x80, 0xec, 0x0b, 0x76, 0x22, 0x9d, 0x79, 0x08, 0xed,
- 0xf3, 0xb3, 0xd1, 0x25, 0x69, 0x00, 0xe7, 0xef, 0x2f, 0x4d, 0x43, 0x46,
- 0x05, 0xa8, 0x1b, 0xb3, 0x29, 0xe9, 0xc5, 0x22, 0x83, 0x09, 0xa9, 0xcd,
- 0x99, 0xbd, 0x97, 0x43, 0x50, 0x41, 0xad, 0xd1, 0x4f, 0x72, 0x1f, 0xd9,
- 0xc6, 0xa6, 0x23, 0xa8, 0x16, 0x36, 0xdf, 0xe1, 0xf6, 0x9d, 0x64, 0xeb,
- 0xcb, 0x6d, 0xb3, 0x67, 0x07, 0xa5, 0x9d, 0x9d, 0xc1, 0x40, 0x5e, 0x35,
- 0xdf, 0xae, 0xf3, 0x79, 0x3e, 0x4b, 0x2b, 0xaf, 0xeb, 0x2c, 0x51, 0xe9,
- 0x7c, 0x5a, 0xb9, 0x32, 0x31, 0xbb, 0x06, 0xdd, 0x76, 0xa6, 0x24, 0xcd,
- 0x21, 0xa4, 0x92, 0x5b, 0xaa, 0x29, 0x29, 0x04, 0xd0, 0x98, 0x17, 0xb9,
- 0x9d, 0x3a, 0x5a, 0x33, 0x12, 0x57, 0xad, 0x89, 0xea, 0xae, 0x5b, 0x30,
- 0x71, 0x74, 0x23, 0xc1, 0x53, 0x61, 0xa7, 0x2e, 0xe9, 0x8d, 0xd3, 0xaa,
- 0x97, 0x58, 0x59, 0xcc, 0x67, 0x93, 0x4e, 0x48, 0x95, 0x5d, 0x2f, 0xcd,
- 0x08, 0x12, 0x9e, 0x5d, 0x1a, 0xe9, 0x9f, 0xbc, 0x91, 0x6a, 0x03, 0x83,
- 0x31, 0x3d, 0x92, 0xd7, 0x6c, 0x66, 0x5e, 0x19, 0xbb, 0x85, 0x0e, 0x8d,
- 0xea, 0xaf, 0xd0, 0x68, 0x64, 0xc7, 0x44, 0x36, 0x8c, 0xa7, 0xd7, 0x9a,
- 0xa3, 0xd2, 0x64, 0x46, 0xd0, 0x40, 0xfc, 0xd3, 0x93, 0x03, 0xb3, 0x64,
- 0x83, 0x41, 0x6d, 0xe6, 0x9f, 0x74, 0xef, 0x85, 0xd8, 0xf4, 0x67, 0x70,
- 0x98, 0x58, 0xdf, 0xca, 0x99, 0xe8, 0xc0, 0xb8, 0x36, 0xf9, 0x5d, 0x88,
- 0x50, 0xa3, 0xa8, 0xde, 0x99, 0x0f, 0xa7, 0x66, 0xc9, 0xcc, 0x81, 0x7b,
- 0x4b, 0x13, 0xc5, 0xbe, 0x91, 0xc4, 0xaa, 0xcd, 0xd8, 0x19, 0x39, 0x9d,
- 0xfb, 0xd4, 0xe9, 0x32, 0xd3, 0x69, 0x4e, 0xbf, 0x35, 0xe7, 0xcb, 0xdc,
- 0x70, 0xcb, 0x0c, 0xb6, 0x87, 0x4c, 0xea, 0xdc, 0x4d, 0x26, 0xcc, 0xd8,
- 0xfa, 0xa6, 0x24, 0x33, 0xb1, 0xc7, 0xb2, 0x78, 0x40, 0xdf, 0xea, 0xe1,
- 0x3e, 0x9f, 0x27, 0xfa, 0x2d, 0xf9, 0x94, 0x19, 0xc7, 0xd4, 0xd7, 0xcd,
- 0xfa, 0xe6, 0xa2, 0xb9, 0xf7, 0x8c, 0x04, 0xc8, 0x6a, 0xee, 0x7b, 0x65,
- 0x15, 0x1e, 0x73, 0xa5, 0x2e, 0x48, 0x99, 0x12, 0x19, 0x8e, 0xcb, 0x10,
- 0x47, 0xb6, 0xe6, 0xae, 0xf5, 0xcd, 0xdc, 0xd2, 0x93, 0xd7, 0x37, 0xfa,
- 0xa8, 0x77, 0xb1, 0xa6, 0x66, 0x70, 0x74, 0x39, 0x90, 0x3d, 0x3d, 0x55,
- 0xb9, 0x5f, 0x56, 0x2c, 0xcc, 0x66, 0xa5, 0xd9, 0xcb, 0x3d, 0x56, 0x59,
- 0xa5, 0xdb, 0xd4, 0x6b, 0xea, 0x25, 0xcd, 0x38, 0xfb, 0x99, 0x4a, 0xbb,
- 0x36, 0xb6, 0xd3, 0x32, 0x5f, 0xf5, 0x83, 0x5d, 0x73, 0x13, 0x35, 0xc2,
- 0x1c, 0x99, 0xab, 0xb3, 0xa6, 0x7d, 0xac, 0x33, 0x8f, 0xed, 0x6d, 0xae,
- 0xba, 0xcd, 0x86, 0xcf, 0x23, 0x6c, 0xac, 0xce, 0xcc, 0xd7, 0xd8, 0x3e,
- 0x72, 0x91, 0xd9, 0x91, 0x99, 0x11, 0x4d, 0xf3, 0x14, 0xfb, 0x84, 0x97,
- 0x06, 0xca, 0x88, 0xb3, 0x08, 0x23, 0x7a, 0xf0, 0x7d, 0xd7, 0xa0, 0x9b,
- 0xcd, 0xfc, 0x2b, 0x49, 0xfb, 0x34, 0x38, 0x33, 0x63, 0x3f, 0xc5, 0x38,
- 0x06, 0xb7, 0x09, 0x1d, 0x3f, 0x63, 0x36, 0xd0, 0x59, 0x1c, 0x9c, 0x9d,
- 0xde, 0x7a, 0xc7, 0x88, 0x2c, 0xf7, 0x82, 0xf4, 0x94, 0x3e, 0xbc, 0x23,
- 0xe3, 0xb2, 0x34, 0x66, 0xb2, 0x1b, 0x1a, 0xdd, 0x07, 0x59, 0x41, 0xbb,
- 0x5d, 0x56, 0xd4, 0x88, 0x84, 0x85, 0x95, 0xb7, 0xf7, 0xc6, 0x5c, 0x4a,
- 0xaf, 0xd3, 0xdc, 0xee, 0x37, 0x39, 0x19, 0xd3, 0x44, 0x1f, 0x2e, 0x4a,
- 0x79, 0x9e, 0x96, 0x8a, 0x54, 0x20, 0x91, 0x5b, 0xcb, 0x9a, 0x8f, 0x8f,
- 0x19, 0x95, 0x91, 0x3c, 0x90, 0x1d, 0xd2, 0x2e, 0xa9, 0x8d, 0xda, 0xdc,
- 0x18, 0x8a, 0x32, 0xe9, 0x9c, 0x10, 0xbe, 0xd0, 0x20, 0x4d, 0x8b, 0xbd,
- 0x61, 0xf2, 0x6d, 0x79, 0x97, 0xc1, 0x57, 0x08, 0xfd, 0x3e, 0x27, 0x6f,
- 0x97, 0x51, 0x05, 0xef, 0xb2, 0x64, 0x6e, 0x54, 0x4f, 0x33, 0x9b, 0xd0,
- 0x3e, 0xf0, 0x33, 0xcf, 0x3c, 0x34, 0x3b, 0xfc, 0x8e, 0x67, 0xc9, 0x8e,
- 0xc2, 0x2e, 0xe5, 0x15, 0x1f, 0x89, 0x64, 0x0b, 0xea, 0xcd, 0x84, 0x66,
- 0x6b, 0xd1, 0xb8, 0x51, 0xd8, 0x09, 0xb9, 0x4b, 0x6b, 0xef, 0x70, 0x65,
- 0x30, 0x4d, 0x3f, 0x1b, 0xee, 0xbd, 0x18, 0xee, 0x0e, 0x8d, 0x21, 0x92,
- 0xdd, 0xe6, 0xe5, 0xb2, 0x36, 0x9f, 0xa6, 0x6e, 0xb8, 0x77, 0x32, 0x3a,
- 0x95, 0x4d, 0x79, 0x7d, 0x3d, 0x63, 0x9d, 0x67, 0xa7, 0xbc, 0xba, 0x62,
- 0xdd, 0xc7, 0x68, 0x7a, 0x56, 0x7f, 0x66, 0x0b, 0x88, 0x66, 0x46, 0x8e,
- 0x1b, 0x8b, 0xd4, 0xd0, 0x44, 0x1e, 0x3a, 0xe7, 0xc5, 0x60, 0x90, 0x8e,
- 0xeb, 0x86, 0x8c, 0xa9, 0xc1, 0xb2, 0xc8, 0x3f, 0x0d, 0xea, 0x72, 0xf2,
- 0xd1, 0x2c, 0xca, 0xcb, 0x45, 0xda, 0xdc, 0x7c, 0xd9, 0x71, 0x09, 0x6f,
- 0xd1, 0x5d, 0xb2, 0x9d, 0x24, 0x47, 0xac, 0x56, 0xd2, 0x4c, 0x54, 0x7c,
- 0xde, 0xcc, 0x6a, 0x4a, 0x2b, 0xc9, 0x7b, 0xd3, 0x8a, 0xd9, 0xcb, 0x73,
- 0xb3, 0xa8, 0x09, 0x37, 0xd6, 0x57, 0x51, 0xda, 0x69, 0x0e, 0x0e, 0x47,
- 0xba, 0x46, 0xe0, 0xb7, 0x33, 0x47, 0xa7, 0xac, 0x3e, 0x1a, 0x45, 0xfb,
- 0x9d, 0x31, 0x19, 0x0f, 0xe8, 0xdf, 0x46, 0x84, 0x35, 0x98, 0x72, 0xb9,
- 0x59, 0x4d, 0x8f, 0x58, 0x18, 0x93, 0x45, 0x9e, 0x8e, 0x07, 0x9d, 0xe6,
- 0xe4, 0xfb, 0xf2, 0xd1, 0x44, 0x6d, 0x0d, 0xdd, 0x4a, 0xc9, 0xe6, 0x57,
- 0xc6, 0xfe, 0xbb, 0xe1, 0x65, 0x47, 0x83, 0x3c, 0x46, 0xb3, 0x43, 0xaf,
- 0x8d, 0x05, 0x51, 0x34, 0xdd, 0xe6, 0x6e, 0x70, 0x55, 0xd3, 0x2d, 0xc3,
- 0xc6, 0x2e, 0x36, 0x89, 0x78, 0x80, 0xac, 0xfd, 0x39, 0xdc, 0xe8, 0xbc,
- 0x76, 0xe8, 0xd6, 0xf4, 0xd9, 0x13, 0xb3, 0xa6, 0xfe, 0x44, 0x17, 0xf7,
- 0xe4, 0x39, 0x8d, 0x4f, 0xea, 0xa5, 0xb9, 0x49, 0x6b, 0x56, 0x4e, 0xcc,
- 0x09, 0xbe, 0xca, 0xaf, 0x97, 0x55, 0xc6, 0x57, 0x1a, 0x9c, 0xad, 0xea,
- 0x63, 0xa5, 0x5b, 0xe2, 0xa6, 0x84, 0x6b, 0xd2, 0x48, 0x97, 0x6c, 0x76,
- 0xd5, 0xef, 0x34, 0x07, 0x7d, 0x8e, 0xb6, 0x00, 0x86, 0x88, 0x5d, 0x64,
- 0xf4, 0x36, 0x34, 0x56, 0x64, 0x72, 0xab, 0xcf, 0xcd, 0x0c, 0x27, 0xe4,
- 0x9b, 0x4b, 0x26, 0xb3, 0x34, 0x9f, 0xc3, 0xd8, 0x11, 0xdf, 0xd3, 0xb0,
- 0xd3, 0xdc, 0xa5, 0x28, 0xe3, 0xd0, 0xc3, 0xc7, 0x64, 0x0b, 0x54, 0x35,
- 0x89, 0x2a, 0x9a, 0x84, 0x54, 0x55, 0x09, 0xd6, 0xb4, 0x6f, 0xb2, 0xc9,
- 0x47, 0x5d, 0x4d, 0xbd, 0x83, 0xbb, 0x6b, 0x44, 0x4e, 0x57, 0x18, 0x1c,
- 0xe6, 0xa9, 0xa5, 0xb9, 0x71, 0x16, 0x65, 0x5d, 0xe7, 0xe4, 0x4f, 0x20,
- 0xfd, 0x78, 0x39, 0x81, 0xda, 0x4c, 0x06, 0xf6, 0x27, 0xb3, 0x96, 0xba,
- 0x25, 0x12, 0xb3, 0xc7, 0x8a, 0xe9, 0xa0, 0xa9, 0xf2, 0xc5, 0xaa, 0xde,
- 0xf1, 0x85, 0xd1, 0xbe, 0xb1, 0x6b, 0x31, 0x61, 0x60, 0x1d, 0xb0, 0xbd,
- 0x30, 0x49, 0x3a, 0xb3, 0xd9, 0x69, 0x8e, 0xe7, 0xb6, 0x4f, 0x06, 0x72,
- 0x6e, 0x04, 0x28, 0x6b, 0x8f, 0xf0, 0xff, 0x18, 0x5d, 0x51, 0x4e, 0xb2,
- 0x51, 0x6b, 0xf3, 0x09, 0x6e, 0x85, 0xfc, 0x3a, 0x23, 0xe7, 0xb6, 0x39,
- 0xdc, 0xcd, 0xcc, 0xdc, 0x15, 0x9e, 0x98, 0xb0, 0x2b, 0x5e, 0x64, 0xd7,
- 0x65, 0x43, 0xe2, 0x39, 0xd8, 0x26, 0xef, 0xb1, 0xf1, 0xed, 0x9e, 0x50,
- 0x3d, 0xc8, 0xbf, 0xa4, 0x72, 0x56, 0x50, 0xcc, 0xa7, 0x59, 0x0f, 0x12,
- 0x13, 0xac, 0x6e, 0xcc, 0x0e, 0xec, 0xae, 0xba, 0x69, 0x6d, 0x92, 0x41,
- 0x19, 0xc5, 0x4d, 0xaa, 0x17, 0xb9, 0x6a, 0x40, 0x63, 0x32, 0xd8, 0xc8,
- 0x38, 0xbe, 0xcb, 0x27, 0x99, 0xfa, 0x27, 0xc4, 0x69, 0x37, 0xcb, 0xc3,
- 0xbd, 0x3f, 0x5f, 0xd6, 0xb0, 0x99, 0x58, 0x49, 0x21, 0x73, 0xf2, 0x2e,
- 0x27, 0x25, 0xe6, 0xe4, 0x4a, 0xce, 0x2a, 0xdd, 0xa1, 0x7c, 0x3e, 0xd2,
- 0x2a, 0x87, 0xed, 0x6c, 0x9a, 0x93, 0x7e, 0x7a, 0x26, 0x8e, 0x5a, 0x6d,
- 0xae, 0xdf, 0x78, 0x5f, 0xf4, 0x3a, 0xa7, 0xcf, 0xc1, 0x8c, 0xbc, 0x4a,
- 0xf3, 0x59, 0x64, 0x9e, 0xa0, 0x9e, 0x1a, 0x7b, 0xf4, 0x26, 0xab, 0x64,
- 0x0d, 0x96, 0x34, 0xe9, 0x14, 0x88, 0x08, 0x9e, 0x1e, 0x65, 0x19, 0x2b,
- 0x58, 0xd0, 0xc6, 0x3e, 0xdd, 0xdb, 0xe9, 0xc5, 0x2d, 0xc6, 0x6b, 0x27,
- 0x7f, 0xe7, 0xe5, 0xf3, 0x8e, 0x67, 0x4a, 0xad, 0xa6, 0x0b, 0xf2, 0xb8,
- 0x77, 0x4f, 0x28, 0xe9, 0xa2, 0x14, 0xb4, 0xd9, 0x56, 0x97, 0x5a, 0x26,
- 0x0e, 0x45, 0x1b, 0xec, 0x80, 0x70, 0xa0, 0xd8, 0x82, 0x1c, 0x61, 0x6e,
- 0x47, 0xf4, 0xa4, 0x4e, 0x73, 0x46, 0x31, 0x23, 0x2f, 0x21, 0x4c, 0xf0,
- 0xd6, 0x8e, 0x35, 0xe6, 0x70, 0x65, 0x5d, 0xee, 0xe4, 0x02, 0xa3, 0xf9,
- 0x56, 0xcd, 0x13, 0x67, 0x16, 0x2f, 0x75, 0x9a, 0x23, 0x5d, 0x98, 0x14,
- 0x07, 0x73, 0x68, 0x72, 0xda, 0x8f, 0x7c, 0xd1, 0xd1, 0x4d, 0x6c, 0x16,
- 0x97, 0x9d, 0x62, 0x22, 0x54, 0x59, 0xcd, 0x40, 0x57, 0xaf, 0x66, 0xe9,
- 0x35, 0xfc, 0x0d, 0xd7, 0xdd, 0x13, 0x6a, 0xec, 0x5b, 0x8e, 0x7c, 0xd4,
- 0xa5, 0xb9, 0x3b, 0x68, 0xd4, 0x62, 0xeb, 0x1b, 0x53, 0xcf, 0x6c, 0xb2,
- 0xd9, 0x12, 0xf2, 0xef, 0xcc, 0x0c, 0x6f, 0x34, 0xfa, 0x76, 0xdb, 0x17,
- 0x6f, 0x98, 0xdd, 0xc7, 0x08, 0x37, 0x92, 0x4e, 0xb0, 0x4a, 0xbe, 0xe6,
- 0xf5, 0x68, 0x0b, 0x38, 0xab, 0xee, 0xfa, 0x57, 0x9b, 0xee, 0x4b, 0x1a,
- 0x05, 0xf9, 0x86, 0x86, 0xf6, 0xe8, 0xd3, 0x93, 0xea, 0xa2, 0xe2, 0x8d,
- 0x4d, 0xae, 0x03, 0xbe, 0x9b, 0xcd, 0xdf, 0x96, 0xf5, 0x12, 0xd6, 0xfa,
- 0xc2, 0x48, 0xac, 0xa6, 0xdb, 0x9c, 0xb1, 0xd9, 0x8c, 0x28, 0x5a, 0x16,
- 0xf4, 0xa7, 0x55, 0x2a, 0x72, 0xa8, 0xb7, 0xb4, 0x16, 0x15, 0xf9, 0x04,
- 0xc9, 0x30, 0xb0, 0x97, 0xb2, 0x91, 0x29, 0xda, 0x36, 0xcd, 0x65, 0xf7,
- 0x10, 0x9a, 0x2b, 0x0b, 0xe2, 0x66, 0x9a, 0x53, 0x6c, 0x8d, 0x0e, 0xdc,
- 0x0a, 0xe9, 0xbd, 0x55, 0x2f, 0x8d, 0x7c, 0x21, 0x5d, 0x4a, 0x84, 0x07,
- 0xed, 0xc7, 0x6e, 0xef, 0x58, 0xbc, 0x18, 0xc5, 0xcd, 0x93, 0x23, 0xdb,
- 0xbf, 0xf7, 0x01, 0xc1, 0xa2, 0xf9, 0xab, 0x38, 0x31, 0x7a, 0xac, 0xd1,
- 0x50, 0x5f, 0xd2, 0x4e, 0x0b, 0xee, 0xff, 0xcb, 0xd3, 0x51, 0x6c, 0x31,
- 0xdb, 0x0e, 0x7b, 0x7a, 0x9f, 0x84, 0x2d, 0xf9, 0x55, 0xd8, 0xcf, 0x54,
- 0x92, 0x96, 0xe4, 0x39, 0xed, 0x7d, 0x07, 0xc8, 0x22, 0x23, 0xef, 0x3e,
- 0x1b, 0x10, 0x1c, 0x0d, 0x24, 0x01, 0x66, 0xd4, 0xa7, 0x86, 0x14, 0x08,
- 0xeb, 0x53, 0x3a, 0x3a, 0xf4, 0xdb, 0x85, 0x13, 0xa9, 0x7b, 0x10, 0xbc,
- 0xdf, 0x6f, 0xd5, 0xdb, 0x56, 0x86, 0x99, 0x56, 0xce, 0x8f, 0xdf, 0x42,
- 0xa1, 0x4f, 0xcd, 0xbe, 0x79, 0xa7, 0xfe, 0x1b, 0x0d, 0xf6, 0x8d, 0x97,
- 0xf9, 0xac, 0xe5, 0x24, 0x75, 0x36, 0x08, 0x22, 0x6d, 0xbc, 0xb5, 0xd0,
- 0x35, 0x76, 0xf7, 0xe7, 0xf0, 0x97, 0x75, 0x37, 0x5a, 0x73, 0xbf, 0x10,
- 0x57, 0xdf, 0xb2, 0x6e, 0x59, 0xd4, 0x7a, 0x2f, 0xcf, 0x1a, 0xa8, 0x1d,
- 0xa4, 0xe8, 0x7b, 0x6d, 0x06, 0x2b, 0x84, 0x6e, 0xd1, 0x35, 0x70, 0x5d,
- 0xe4, 0x7f, 0x17, 0x9f, 0x42, 0x56, 0xdc, 0xe6, 0x55, 0x59, 0x90, 0x92,
- 0x62, 0x6c, 0x81, 0x2a, 0x87, 0x58, 0x26, 0x35, 0xd7, 0x08, 0x8e, 0xcd,
- 0xa3, 0xf7, 0x17, 0xa7, 0x1f, 0x8e, 0x0e, 0x3f, 0x7c, 0xfd, 0xfe, 0xdd,
- 0xeb, 0xd3, 0xe3, 0xcd, 0x4e, 0x73, 0xe4, 0x04, 0xc9, 0xc5, 0x73, 0x59,
- 0x93, 0x2a, 0x86, 0x43, 0x62, 0xba, 0xc8, 0x2d, 0x5f, 0xe7, 0xb7, 0x46,
- 0xa0, 0x41, 0xb3, 0x82, 0xd3, 0x12, 0x7f, 0x83, 0x99, 0x2f, 0x13, 0xde,
- 0x69, 0x6e, 0x6c, 0x6e, 0x62, 0xd3, 0x69, 0x3e, 0x7d, 0x32, 0x78, 0x3d,
- 0x2a, 0x62, 0xc6, 0x68, 0x07, 0x83, 0x91, 0xd1, 0x12, 0xd3, 0x35, 0x42,
- 0xfa, 0x9c, 0xa7, 0x35, 0x7b, 0xfe, 0xcb, 0x65, 0x63, 0xd4, 0x46, 0xf5,
- 0x98, 0x1a, 0xab, 0xac, 0xfc, 0xa8, 0x61, 0x57, 0xa3, 0x73, 0x1e, 0x46,
- 0x96, 0xbb, 0xe6, 0x75, 0xe1, 0xa9, 0xd8, 0xa4, 0x96, 0xcc, 0xfe, 0x1d,
- 0x48, 0x27, 0x27, 0x55, 0x63, 0x14, 0xbe, 0x2c, 0xc7, 0xc1, 0xd0, 0xb0,
- 0x12, 0x29, 0xc4, 0xf0, 0x56, 0x74, 0x4f, 0x9b, 0x31, 0x06, 0xef, 0x69,
- 0x0e, 0xa8, 0x91, 0x61, 0xf6, 0x29, 0xc3, 0xc9, 0x93, 0xb7, 0x8e, 0x96,
- 0x15, 0x4e, 0xf3, 0x0f, 0x46, 0x1b, 0x21, 0xe9, 0xf7, 0x1a, 0xee, 0x0e,
- 0xf3, 0x82, 0x3e, 0x64, 0xae, 0x99, 0xee, 0x95, 0x57, 0xce, 0x28, 0xd0,
- 0x94, 0xc2, 0xb4, 0x84, 0x23, 0xe0, 0xfc, 0xf0, 0xf2, 0xdb, 0x60, 0x4e,
- 0x48, 0xc0, 0xbb, 0x1c, 0x07, 0xd9, 0x8a, 0x30, 0x88, 0xea, 0x46, 0x0e,
- 0xc8, 0xbb, 0xd1, 0x28, 0x41, 0x04, 0x7d, 0x96, 0x8f, 0xab, 0x94, 0xbe,
- 0x49, 0x3f, 0xa6, 0x9f, 0x9a, 0x6d, 0xdd, 0x69, 0xee, 0xfc, 0xbb, 0xa3,
- 0xd1, 0x9f, 0xf6, 0xf6, 0x8c, 0x9c, 0x9c, 0x2e, 0xcd, 0xbc, 0x6c, 0x99,
- 0x57, 0x8a, 0xda, 0x9c, 0xcc, 0xf9, 0xb0, 0x2e, 0xb7, 0x71, 0x6d, 0xd7,
- 0xa2, 0x0e, 0xa4, 0xb7, 0xe6, 0xb6, 0xc5, 0x3e, 0xd2, 0x4d, 0x6d, 0x96,
- 0x33, 0x98, 0x13, 0x08, 0x3a, 0x49, 0x2f, 0x30, 0xf2, 0xc2, 0xdc, 0xd7,
- 0xb3, 0xfb, 0x60, 0x0c, 0x5b, 0xf9, 0xd9, 0x48, 0x82, 0xf3, 0xe9, 0xc4,
- 0xfc, 0x95, 0x2c, 0xa7, 0x6d, 0x1a, 0x59, 0xfb, 0x84, 0xe9, 0xa8, 0x46,
- 0xac, 0x8d, 0x5e, 0x92, 0x63, 0x13, 0x39, 0x05, 0xa1, 0x54, 0x28, 0xba,
- 0x87, 0xcb, 0xe5, 0x6d, 0x60, 0x3b, 0x8c, 0xd3, 0xc9, 0xc7, 0xbb, 0xb4,
- 0x9a, 0xb2, 0x9b, 0xc4, 0xec, 0x98, 0x71, 0x3e, 0xcb, 0x9b, 0x7b, 0x56,
- 0xf4, 0xbb, 0x46, 0x06, 0x07, 0x8c, 0x68, 0x02, 0xcd, 0x39, 0xba, 0x36,
- 0x36, 0x10, 0x69, 0x9f, 0x64, 0x17, 0xe6, 0x8d, 0xaf, 0xe3, 0x43, 0x45,
- 0x6a, 0xac, 0x8a, 0x63, 0xbf, 0x1d, 0x5c, 0x8f, 0x0d, 0x9f, 0x23, 0x74,
- 0xd3, 0xed, 0x5d, 0x15, 0x83, 0xbe, 0x90, 0xd2, 0xed, 0x93, 0xd4, 0xf7,
- 0xe6, 0x96, 0x9f, 0x27, 0x11, 0x15, 0x11, 0xe9, 0x14, 0xc9, 0x77, 0xd9,
- 0xbd, 0x31, 0x28, 0xf2, 0xc2, 0x49, 0x4a, 0x36, 0x78, 0x32, 0xb2, 0x4f,
- 0x59, 0x17, 0xcd, 0xd5, 0xbb, 0x98, 0x89, 0x83, 0x98, 0x6f, 0x92, 0xd0,
- 0xa2, 0xe2, 0xf7, 0x55, 0x0f, 0xa7, 0x26, 0x36, 0xeb, 0x96, 0x48, 0xc6,
- 0x97, 0xc2, 0x45, 0x1c, 0x99, 0x9f, 0x1b, 0xab, 0x6e, 0x26, 0xcb, 0x77,
- 0xb9, 0x6e, 0x01, 0xec, 0xb3, 0xa6, 0xcb, 0x3f, 0xf0, 0x89, 0xee, 0x34,
- 0xf7, 0x19, 0x47, 0x3b, 0xd3, 0x46, 0xef, 0x24, 0x4d, 0xa3, 0xf8, 0x6c,
- 0xf8, 0x7c, 0xd7, 0xfe, 0x6a, 0xb8, 0xf2, 0x33, 0xc1, 0x69, 0xaa, 0xdc,
- 0xa2, 0xb7, 0xd7, 0x9c, 0xbd, 0x44, 0x58, 0x64, 0x5a, 0x63, 0x59, 0xe2,
- 0x2f, 0xac, 0x66, 0x05, 0x8f, 0x6e, 0xa7, 0x39, 0x5f, 0xcb, 0xd6, 0x3b,
- 0x4c, 0xc6, 0xb1, 0x69, 0xf4, 0xd4, 0xb2, 0x82, 0x01, 0x5d, 0x95, 0x66,
- 0xad, 0x5b, 0xeb, 0xb9, 0xc5, 0xca, 0x46, 0xf7, 0x98, 0x88, 0x34, 0xf7,
- 0x26, 0x66, 0x3b, 0x76, 0xd0, 0x03, 0xcd, 0x04, 0x8e, 0x28, 0x0e, 0xeb,
- 0x93, 0x23, 0xbf, 0xe6, 0x93, 0x3d, 0x4b, 0xc9, 0xf0, 0x2f, 0x32, 0xab,
- 0xc4, 0x2d, 0xe1, 0x47, 0xf7, 0x6f, 0x68, 0x48, 0xe9, 0x97, 0x46, 0x8c,
- 0xfd, 0xe3, 0x17, 0x34, 0x0b, 0x43, 0x08, 0xbf, 0xf0, 0xce, 0x92, 0xbd,
- 0xd8, 0xba, 0xa8, 0xdf, 0xea, 0x8d, 0x4c, 0x9d, 0xb0, 0x3e, 0xa9, 0x05,
- 0x47, 0x50, 0x59, 0x71, 0x64, 0xe7, 0x5a, 0x68, 0x06, 0x90, 0x7f, 0x44,
- 0x7c, 0x30, 0x07, 0xbd, 0x64, 0x2b, 0x1b, 0x5e, 0x9b, 0xf6, 0x7a, 0xd4,
- 0xce, 0xde, 0x01, 0xfd, 0x77, 0x1f, 0xff, 0x7d, 0xd2, 0xd3, 0x5c, 0x27,
- 0x7f, 0xea, 0xe9, 0x36, 0xef, 0xde, 0x45, 0x1c, 0xa0, 0x70, 0x97, 0x7b,
- 0x9f, 0x9d, 0x6e, 0xab, 0x04, 0x0f, 0xeb, 0xac, 0xa7, 0x3c, 0xcb, 0xa1,
- 0xba, 0xa5, 0xd3, 0x00, 0xbd, 0x01, 0x16, 0xff, 0x98, 0x5c, 0x79, 0x66,
- 0x64, 0x13, 0xa3, 0x1e, 0xc2, 0xaf, 0xa2, 0xa7, 0x6a, 0xf2, 0xa1, 0xca,
- 0x6e, 0xd2, 0xfa, 0x26, 0x59, 0x36, 0xbc, 0x09, 0xcd, 0xbe, 0xed, 0x36,
- 0xb7, 0x98, 0xe5, 0xce, 0xf5, 0x20, 0x9f, 0x1e, 0xaa, 0xdd, 0xe7, 0x56,
- 0x91, 0x5d, 0xc2, 0xb3, 0xf2, 0x4e, 0x9f, 0x19, 0x48, 0xf2, 0x51, 0x4c,
- 0x2d, 0x30, 0xab, 0x89, 0xfc, 0x25, 0x7a, 0xcc, 0x0f, 0xed, 0xcd, 0x49,
- 0x9b, 0xa4, 0xcc, 0x28, 0x23, 0xe2, 0xae, 0xcc, 0x8c, 0x91, 0x45, 0x37,
- 0xc3, 0xba, 0x91, 0xed, 0x8a, 0x7e, 0x07, 0xa6, 0xa9, 0xe8, 0x79, 0xf9,
- 0x95, 0xb8, 0xb3, 0xe4, 0xdf, 0xb8, 0x4f, 0x45, 0xfb, 0xaa, 0x39, 0xfc,
- 0xd7, 0x55, 0xbd, 0x1e, 0xde, 0xda, 0x2a, 0x20, 0xad, 0xa6, 0x23, 0x83,
- 0x65, 0x0f, 0xb2, 0xee, 0xeb, 0xfc, 0x1a, 0xb6, 0x46, 0xcc, 0x81, 0x61,
- 0x7a, 0xc5, 0x91, 0x98, 0xdf, 0x7e, 0x48, 0x4c, 0x8f, 0x07, 0xe4, 0x40,
- 0x5a, 0xd6, 0x8f, 0x38, 0x23, 0x9e, 0xd0, 0xe5, 0x77, 0xac, 0x03, 0x8d,
- 0xc3, 0x9c, 0xfe, 0x04, 0x74, 0x77, 0xe1, 0xbd, 0xb7, 0x31, 0x8e, 0xbc,
- 0x93, 0x35, 0xe2, 0x86, 0x2e, 0xc4, 0x45, 0xb2, 0x95, 0x7e, 0x4c, 0x87,
- 0xc9, 0xd9, 0xd1, 0xe8, 0x9c, 0x3e, 0x61, 0x76, 0x47, 0x71, 0x6d, 0x7a,
- 0x71, 0x3a, 0xea, 0x34, 0x97, 0x7d, 0x6a, 0xb2, 0xa2, 0x6e, 0x65, 0xeb,
- 0xad, 0x9c, 0x66, 0x75, 0xab, 0x6a, 0xbe, 0x81, 0x74, 0xd6, 0x58, 0xfa,
- 0x08, 0x14, 0x52, 0xdc, 0x8b, 0x82, 0xd2, 0x09, 0x1f, 0xb5, 0xe0, 0x43,
- 0x0b, 0x73, 0xf2, 0xa7, 0xdb, 0xd6, 0x55, 0xd3, 0xd7, 0xbd, 0x60, 0xe3,
- 0x27, 0xf5, 0xf2, 0x9a, 0x6c, 0x90, 0x5a, 0xed, 0x46, 0xfb, 0x05, 0x33,
- 0x1b, 0xa1, 0xaa, 0x20, 0xc3, 0x36, 0xe7, 0x82, 0x0f, 0x8e, 0xb1, 0x9a,
- 0x28, 0xb5, 0x04, 0x2a, 0x52, 0x51, 0xba, 0x56, 0x29, 0xbc, 0x8c, 0x34,
- 0xba, 0x1c, 0x11, 0x87, 0x49, 0x66, 0x54, 0xd0, 0x69, 0x44, 0x09, 0xe0,
- 0x45, 0x51, 0xc3, 0xe9, 0x4a, 0x52, 0xe7, 0x22, 0xfe, 0x1f, 0x34, 0x34,
- 0x61, 0x15, 0x8d, 0x76, 0x3d, 0x3c, 0xb7, 0x39, 0xb9, 0xba, 0x49, 0x61,
- 0x66, 0x53, 0x9d, 0xda, 0xb3, 0xe7, 0xff, 0x9b, 0x62, 0x69, 0x26, 0x3e,
- 0x72, 0x1b, 0x93, 0x52, 0x45, 0xd7, 0x0c, 0x4d, 0xe0, 0x3a, 0xc7, 0xde,
- 0xd3, 0xbd, 0xb6, 0x63, 0x0f, 0x9b, 0xcd, 0x18, 0x00, 0x59, 0xf2, 0x92,
- 0xfe, 0xfb, 0xa0, 0x54, 0x46, 0x2c, 0x1f, 0xcf, 0x4b, 0x00, 0x88, 0x65,
- 0xa7, 0xf8, 0x62, 0x92, 0xb6, 0x80, 0x0e, 0x6e, 0x2f, 0x6c, 0xb7, 0x21,
- 0xc9, 0xbd, 0x7e, 0xf2, 0x9a, 0x32, 0x54, 0x8f, 0xdf, 0x7d, 0x83, 0x3d,
- 0x70, 0xbe, 0xb7, 0x0f, 0x77, 0xbb, 0xb5, 0x1e, 0xa6, 0xf8, 0x48, 0xcd,
- 0x8e, 0x04, 0x0e, 0x97, 0x85, 0x8a, 0x2f, 0xee, 0x84, 0x3e, 0xc4, 0x28,
- 0xc5, 0x49, 0x90, 0x4e, 0x31, 0xfd, 0xe3, 0xee, 0xaf, 0xc0, 0x10, 0x3d,
- 0xee, 0xcb, 0x0c, 0x8a, 0x63, 0xe6, 0x63, 0x76, 0xef, 0xfe, 0x86, 0x59,
- 0xf5, 0xa6, 0xda, 0x3d, 0xfc, 0xd2, 0x9b, 0xa4, 0x9f, 0x0e, 0x28, 0x65,
- 0xc3, 0x68, 0xa9, 0xd3, 0x5f, 0x7e, 0xdb, 0x8d, 0x18, 0x9f, 0xf9, 0x88,
- 0xb3, 0x05, 0x7e, 0x2e, 0x4d, 0x8e, 0xe0, 0x58, 0x28, 0x8b, 0x78, 0xc9,
- 0x0f, 0xa6, 0xd4, 0x61, 0xda, 0xf0, 0x69, 0x61, 0x55, 0x92, 0x01, 0x67,
- 0xc4, 0x20, 0x43, 0xa6, 0x3b, 0xf7, 0x93, 0x72, 0x16, 0xdc, 0x75, 0x2d,
- 0xc3, 0x15, 0xfa, 0xfc, 0xbe, 0xdc, 0x6f, 0x30, 0xe6, 0x58, 0xd8, 0x88,
- 0x16, 0xdd, 0x3d, 0x0e, 0x56, 0xa7, 0x86, 0xfa, 0xe5, 0x6e, 0x46, 0x7a,
- 0x93, 0x5f, 0x44, 0xdc, 0x0f, 0x5d, 0x63, 0x4d, 0x69, 0x98, 0x38, 0x8d,
- 0x37, 0xa6, 0xfe, 0x9b, 0xb5, 0xd5, 0xb9, 0x35, 0x8b, 0x4e, 0x7e, 0x26,
- 0x3b, 0x6b, 0x7d, 0xdf, 0xd3, 0x64, 0x84, 0x5c, 0x95, 0xab, 0x7e, 0x2e,
- 0xd9, 0x75, 0xdd, 0xe6, 0x34, 0x04, 0x2b, 0xde, 0x28, 0x49, 0x35, 0xc1,
- 0xb6, 0xd2, 0x7d, 0xc5, 0xdb, 0x8f, 0x2c, 0xd1, 0x9e, 0x37, 0x25, 0xbd,
- 0xd8, 0x52, 0x34, 0x1c, 0x0d, 0x92, 0x23, 0x94, 0xdf, 0xd2, 0xd4, 0xe9,
- 0xde, 0x71, 0x8e, 0xcd, 0xb6, 0xea, 0x5b, 0x16, 0xf4, 0x67, 0x41, 0x3e,
- 0xb1, 0x7f, 0x89, 0x6c, 0xc8, 0xe8, 0x5e, 0x24, 0xdf, 0xb8, 0x44, 0xca,
- 0xa0, 0xc0, 0x50, 0x56, 0x98, 0xa4, 0xe5, 0x46, 0x8c, 0xa1, 0x98, 0x41,
- 0xa7, 0x0a, 0x88, 0xda, 0x6d, 0x9e, 0x31, 0x17, 0x58, 0x3b, 0xdd, 0x0d,
- 0x62, 0xc4, 0x78, 0x43, 0x31, 0x76, 0xde, 0xbb, 0xe4, 0x7b, 0xcd, 0x27,
- 0x1f, 0x91, 0x4a, 0x25, 0x37, 0x94, 0x3f, 0x3e, 0x4d, 0x64, 0xe2, 0x14,
- 0xbc, 0xc8, 0x12, 0xc0, 0x96, 0x24, 0xa7, 0x30, 0xed, 0x49, 0xba, 0x9d,
- 0xf3, 0x82, 0x75, 0xb6, 0x95, 0x5e, 0x06, 0xd3, 0xd7, 0x0f, 0xaf, 0x4f,
- 0x2e, 0x92, 0x2d, 0xd2, 0xc0, 0xbb, 0x46, 0xae, 0x5e, 0xef, 0x3b, 0x59,
- 0x33, 0xd9, 0x59, 0x7c, 0xcc, 0x77, 0x8c, 0xb1, 0x39, 0x1d, 0x6f, 0x5b,
- 0x23, 0x0a, 0x9f, 0xa3, 0x5d, 0x68, 0x0d, 0x53, 0xb5, 0x4c, 0x61, 0x9a,
- 0x06, 0xae, 0x47, 0x67, 0xaa, 0x72, 0xca, 0xbf, 0xb5, 0x51, 0x79, 0x9a,
- 0x78, 0x43, 0x23, 0x03, 0x88, 0xc3, 0xc5, 0x09, 0x39, 0x5f, 0x33, 0xf6,
- 0x4b, 0x1b, 0x1b, 0xbb, 0x7b, 0x56, 0x39, 0x1d, 0x4c, 0x1c, 0x39, 0xec,
- 0xc0, 0xd1, 0x1c, 0x26, 0xb9, 0x2e, 0x9c, 0xf6, 0xdb, 0xa7, 0xec, 0x33,
- 0x9a, 0x94, 0x05, 0x5d, 0x49, 0x53, 0x72, 0x03, 0x76, 0x9b, 0x83, 0x26,
- 0xd7, 0x1b, 0xee, 0xf4, 0x12, 0x9b, 0x6f, 0x67, 0x66, 0x99, 0x13, 0x4a,
- 0x6d, 0x82, 0xa3, 0xd9, 0x62, 0x57, 0xcb, 0xda, 0xfa, 0x31, 0x53, 0xbb,
- 0x5e, 0xc3, 0x98, 0x40, 0xf5, 0x96, 0xd3, 0xea, 0x5c, 0x46, 0x37, 0xc6,
- 0xc9, 0xf2, 0xad, 0x75, 0xe9, 0x14, 0x96, 0xaa, 0xf7, 0x73, 0x2f, 0xf1,
- 0xf2, 0xb5, 0x5a, 0x69, 0x5b, 0xb9, 0xcb, 0xa8, 0xf0, 0x2e, 0x01, 0x73,
- 0x23, 0xdb, 0x33, 0x3c, 0xcd, 0x66, 0xf9, 0x3c, 0x87, 0xed, 0xe5, 0x77,
- 0x21, 0x58, 0x8a, 0x76, 0x97, 0x7e, 0x0e, 0xbb, 0xa4, 0x39, 0x90, 0x29,
- 0xfd, 0xda, 0x74, 0x09, 0x1e, 0x31, 0x4e, 0x51, 0x8b, 0x5b, 0xcd, 0xed,
- 0x0e, 0xd9, 0x2c, 0xca, 0x35, 0xa1, 0x34, 0x7b, 0x96, 0x56, 0xa9, 0xf2,
- 0xce, 0x25, 0xa2, 0x87, 0x9e, 0x85, 0x5a, 0xb2, 0xf8, 0x38, 0xa9, 0xf7,
- 0xf6, 0xba, 0x17, 0x5d, 0xed, 0x76, 0x94, 0xd8, 0xef, 0xa9, 0xdd, 0x98,
- 0xef, 0x2f, 0x4e, 0x92, 0x2d, 0xca, 0x9a, 0xff, 0xec, 0xd9, 0xde, 0xfe,
- 0xb6, 0x1f, 0x6a, 0x57, 0x01, 0x10, 0xde, 0x9b, 0xf7, 0x70, 0x4c, 0xf9,
- 0x07, 0x70, 0x56, 0x4e, 0x52, 0xd1, 0x38, 0x5c, 0xd3, 0xd3, 0xec, 0x36,
- 0x9f, 0x50, 0xd1, 0x02, 0x45, 0x28, 0x49, 0x06, 0x8f, 0x33, 0xd3, 0xc9,
- 0x60, 0xc6, 0x5d, 0x8a, 0x23, 0xf7, 0xde, 0x98, 0x48, 0x56, 0x53, 0xa6,
- 0x44, 0x52, 0xb3, 0x07, 0x1a, 0x99, 0x3b, 0xbf, 0xd7, 0x12, 0x25, 0x48,
- 0x57, 0x78, 0x82, 0x68, 0x5c, 0x5c, 0x52, 0x00, 0x1d, 0xa3, 0xef, 0x02,
- 0x3f, 0x83, 0x81, 0x4c, 0x96, 0x88, 0x5e, 0xfd, 0x18, 0xf9, 0xb8, 0xd3,
- 0xee, 0x02, 0x4a, 0x9f, 0x7a, 0x74, 0x91, 0x14, 0xb8, 0xdc, 0x53, 0xd7,
- 0xa8, 0x9d, 0x7d, 0x5f, 0x13, 0x6a, 0xb7, 0x1a, 0x7a, 0xca, 0xb1, 0x71,
- 0x8c, 0xe6, 0x12, 0x6f, 0xf2, 0x9f, 0xe4, 0x64, 0x6a, 0x8b, 0x4f, 0x59,
- 0x1e, 0x5a, 0x7b, 0xf1, 0x1a, 0x8e, 0x59, 0x51, 0x50, 0x79, 0x9b, 0xea,
- 0xe3, 0xc1, 0x3d, 0x6e, 0x5e, 0xdf, 0xd1, 0x4b, 0x08, 0xb7, 0x90, 0xfa,
- 0x1b, 0xd9, 0xf3, 0x63, 0x84, 0x27, 0x3c, 0x3d, 0x1f, 0xc5, 0xd1, 0x03,
- 0xa5, 0xd8, 0xc6, 0xb4, 0x43, 0x5f, 0xb1, 0x5e, 0xfc, 0x66, 0x89, 0x26,
- 0xe5, 0xb4, 0x63, 0xb2, 0xd3, 0x24, 0x78, 0x17, 0x1e, 0xa4, 0x1f, 0x87,
- 0x2a, 0x21, 0xf1, 0xe2, 0x9e, 0x6c, 0xda, 0xa9, 0xec, 0x5e, 0xff, 0x55,
- 0x32, 0x30, 0xe6, 0x51, 0x83, 0x08, 0xfc, 0x4d, 0x12, 0xf0, 0x01, 0x9f,
- 0xd3, 0x51, 0x70, 0x63, 0xd7, 0x56, 0x19, 0x72, 0xba, 0x1a, 0x65, 0xcf,
- 0x26, 0x98, 0xb8, 0xd0, 0xa2, 0xa1, 0x3c, 0xaa, 0x1c, 0xda, 0x47, 0x19,
- 0x9c, 0x4d, 0x76, 0xec, 0x98, 0xe3, 0xb2, 0x75, 0xca, 0x41, 0xca, 0xe4,
- 0xfc, 0xcd, 0x8f, 0x2a, 0x2d, 0x63, 0x06, 0x3c, 0x1c, 0x51, 0x5f, 0xd8,
- 0x74, 0x19, 0x63, 0x51, 0x50, 0xea, 0x4e, 0x2e, 0x69, 0x70, 0xec, 0x26,
- 0x42, 0x38, 0x7c, 0xdb, 0x65, 0x77, 0xd1, 0x54, 0xf7, 0x5e, 0xe2, 0x77,
- 0xdd, 0x58, 0x53, 0xc9, 0x96, 0xcc, 0x97, 0x3f, 0xf3, 0xaf, 0x59, 0xc6,
- 0x9a, 0x7f, 0x35, 0x37, 0xcb, 0xf9, 0xd8, 0xac, 0x67, 0xd1, 0x7c, 0xd9,
- 0x4b, 0x38, 0xd8, 0x7a, 0x25, 0xf3, 0xb9, 0xc6, 0xec, 0xcc, 0xb5, 0x80,
- 0x41, 0x7d, 0x8b, 0xad, 0x59, 0xe3, 0xde, 0x69, 0x32, 0xb5, 0x4b, 0x58,
- 0x32, 0x8b, 0xc7, 0xbe, 0xec, 0x40, 0xd5, 0x7b, 0x6f, 0xb6, 0xe7, 0xcf,
- 0x6f, 0xff, 0xf2, 0xf3, 0x8b, 0x27, 0x4f, 0xd3, 0xcf, 0xd2, 0xc9, 0xf3,
- 0xab, 0xcf, 0xd3, 0x67, 0xd3, 0x67, 0x9f, 0xbd, 0xd8, 0xff, 0xfc, 0x59,
- 0xfa, 0xd9, 0xd3, 0xab, 0xf4, 0xf9, 0x5e, 0xb6, 0xf7, 0xe2, 0x6a, 0xff,
- 0xc9, 0x74, 0x7a, 0x95, 0x7d, 0x3e, 0xfd, 0x2c, 0xed, 0x0d, 0x61, 0x7e,
- 0x69, 0xd7, 0x43, 0x51, 0xab, 0x81, 0xb7, 0x34, 0x19, 0x7d, 0x7b, 0x38,
- 0xd8, 0x4b, 0x6e, 0xb2, 0x4f, 0x7a, 0xc0, 0xd8, 0xa3, 0x69, 0xd3, 0x90,
- 0x32, 0x49, 0x34, 0x5d, 0x3d, 0x58, 0xad, 0x9c, 0xa2, 0x34, 0x52, 0xf2,
- 0x95, 0x40, 0x03, 0xe6, 0x59, 0xd4, 0x69, 0xe5, 0x44, 0x23, 0xeb, 0x3f,
- 0x3c, 0x50, 0x9f, 0x3d, 0x8d, 0xab, 0x7b, 0xf8, 0x4f, 0xcd, 0x3b, 0xb3,
- 0xb7, 0xe9, 0xc4, 0x28, 0x49, 0x66, 0x4e, 0xe4, 0xc1, 0x91, 0x31, 0x6d,
- 0x8d, 0x98, 0xee, 0x27, 0xf2, 0x17, 0xf2, 0x12, 0x7b, 0x6d, 0x7c, 0x53,
- 0x95, 0xcb, 0xc5, 0x79, 0x39, 0xcb, 0x27, 0xf7, 0xeb, 0x9a, 0xf3, 0x1f,
- 0x6b, 0xfd, 0xe2, 0x98, 0x45, 0x78, 0x5e, 0x67, 0xff, 0x44, 0xd3, 0xca,
- 0x13, 0xc7, 0x8f, 0xb0, 0xad, 0x06, 0x93, 0x7c, 0x71, 0x43, 0x71, 0xde,
- 0x97, 0x48, 0x7b, 0xa2, 0xd0, 0x0c, 0xff, 0x20, 0x6e, 0x53, 0x8d, 0xe4,
- 0x44, 0xd6, 0xb2, 0x9e, 0xfa, 0xb6, 0x68, 0x5c, 0xb9, 0xd6, 0x04, 0xa9,
- 0x9b, 0x4a, 0x52, 0xed, 0xf2, 0xc0, 0x8f, 0xe7, 0x3e, 0xc4, 0xa7, 0x5d,
- 0xb5, 0x6d, 0x76, 0x5e, 0xc8, 0xaf, 0x86, 0xc9, 0x05, 0xe2, 0xe4, 0xcb,
- 0x05, 0x9b, 0x17, 0xf0, 0xe7, 0xf3, 0xef, 0xba, 0x07, 0x8d, 0x3a, 0x2f,
- 0x3b, 0x86, 0x2b, 0x93, 0xcc, 0x8c, 0xbe, 0xbf, 0x38, 0x3d, 0xe8, 0xce,
- 0x13, 0xaa, 0x2f, 0xea, 0x83, 0x9d, 0x1d, 0x84, 0x7c, 0x6e, 0xd2, 0x4f,
- 0x9f, 0x86, 0x75, 0xb6, 0x33, 0x2d, 0x27, 0xf5, 0x4e, 0x5d, 0xcf, 0x74,
- 0x36, 0xda, 0xc5, 0x50, 0x7f, 0x80, 0x37, 0xb7, 0x9c, 0x43, 0x6c, 0x65,
- 0xd3, 0x41, 0x5d, 0x07, 0xb9, 0x41, 0xa3, 0x23, 0xcd, 0x3c, 0x38, 0x2e,
- 0x38, 0xc7, 0x18, 0xf7, 0xdc, 0xc0, 0xcc, 0xee, 0x68, 0xf4, 0x6d, 0xa2,
- 0x2f, 0x63, 0x7a, 0x6d, 0x48, 0xdc, 0xe6, 0xe5, 0xf4, 0x23, 0x6a, 0x58,
- 0x2a, 0x02, 0xfb, 0x0b, 0xdf, 0xa1, 0x43, 0xea, 0x74, 0xc9, 0x7f, 0x48,
- 0x32, 0x7f, 0xde, 0xac, 0xcd, 0x6c, 0x7a, 0xde, 0x71, 0x80, 0xd8, 0x41,
- 0xc4, 0xe3, 0xff, 0xea, 0x04, 0x4b, 0x13, 0xf7, 0xa4, 0xf3, 0x08, 0x75,
- 0xab, 0x75, 0xcd, 0xee, 0xbd, 0x2e, 0x2b, 0x73, 0x79, 0xcc, 0xeb, 0x98,
- 0x17, 0x54, 0x4f, 0x79, 0xcd, 0x6a, 0x5f, 0xcd, 0xc9, 0x59, 0xa6, 0x99,
- 0xc2, 0x6b, 0xdc, 0x2c, 0x23, 0x92, 0xba, 0x86, 0xfe, 0x62, 0x45, 0xe3,
- 0x5b, 0xba, 0x78, 0xab, 0xbc, 0x68, 0xcb, 0xc2, 0x05, 0x3f, 0x70, 0x1d,
- 0x9b, 0xce, 0x4a, 0xa5, 0x4d, 0x60, 0x21, 0x20, 0x19, 0x1a, 0xd7, 0x04,
- 0xe9, 0x10, 0x55, 0x55, 0x7a, 0x4a, 0xed, 0xe0, 0x3b, 0x18, 0x97, 0xe6,
- 0x76, 0xcc, 0xaf, 0x35, 0xbc, 0xde, 0x3d, 0xb9, 0xb2, 0xf3, 0xe9, 0xea,
- 0x6a, 0x90, 0xcc, 0x29, 0xf5, 0xb1, 0x74, 0x29, 0x98, 0xdd, 0xcf, 0xa9,
- 0x25, 0x92, 0xae, 0xc6, 0xe9, 0x40, 0xad, 0xb2, 0xe0, 0xe0, 0x24, 0x50,
- 0x11, 0x84, 0x7b, 0x9c, 0xd2, 0xa8, 0xf4, 0x5c, 0xa2, 0x79, 0x71, 0x5f,
- 0xb8, 0x8d, 0x99, 0x90, 0x56, 0x06, 0x37, 0x83, 0x79, 0xa6, 0x6b, 0xed,
- 0x21, 0x09, 0xd1, 0xea, 0x7c, 0xb1, 0x9a, 0xbf, 0xee, 0x78, 0x34, 0x17,
- 0x59, 0xe7, 0x36, 0x47, 0x95, 0x69, 0x8a, 0x44, 0xe7, 0xd8, 0xd5, 0x5e,
- 0x7a, 0x41, 0x5a, 0x6a, 0x30, 0xbc, 0xf3, 0x50, 0x6a, 0x86, 0x04, 0x74,
- 0x2d, 0xdd, 0x80, 0x42, 0x60, 0x24, 0x90, 0xb9, 0xf6, 0x28, 0x05, 0x97,
- 0x6a, 0x8b, 0x67, 0xa5, 0x53, 0xb0, 0xcc, 0xc6, 0x33, 0xb2, 0x10, 0xe5,
- 0x59, 0xc3, 0x40, 0x6e, 0x73, 0x91, 0x06, 0x76, 0x81, 0x14, 0x1b, 0x71,
- 0xb6, 0x17, 0xff, 0x0c, 0xd7, 0xd7, 0x58, 0x63, 0xe4, 0x4e, 0x9e, 0xd1,
- 0xfa, 0xc5, 0x5c, 0x43, 0x92, 0xa6, 0xcc, 0x95, 0x5f, 0x39, 0x6a, 0x1a,
- 0xa5, 0x0a, 0x8e, 0xb3, 0xae, 0xd5, 0xb3, 0x5d, 0x97, 0x7d, 0x69, 0x6a,
- 0x46, 0x11, 0xf0, 0x4a, 0xfa, 0xd8, 0xdd, 0xea, 0xb6, 0xc2, 0xad, 0x65,
- 0x8c, 0xa4, 0xb5, 0x4b, 0x5e, 0xae, 0xc3, 0x68, 0xa5, 0x9b, 0xcc, 0x98,
- 0xf5, 0x1a, 0x24, 0x82, 0xa3, 0x23, 0x55, 0xa6, 0x5f, 0x28, 0xca, 0x6e,
- 0xa7, 0xb4, 0x1f, 0x83, 0xd0, 0x97, 0x63, 0x93, 0x9d, 0xbd, 0x0e, 0x68,
- 0xd2, 0xb3, 0x5d, 0xe5, 0xf8, 0x65, 0x97, 0xb9, 0x07, 0xe0, 0xc1, 0x29,
- 0x6d, 0xbe, 0x87, 0xbf, 0x90, 0xed, 0xe7, 0x64, 0xb7, 0x74, 0x75, 0xbe,
- 0x62, 0x32, 0x2b, 0x35, 0x59, 0xdc, 0xbc, 0xcf, 0xf5, 0x86, 0xc3, 0xe4,
- 0x87, 0x48, 0x15, 0x22, 0xb7, 0x78, 0xe5, 0x34, 0x88, 0xac, 0x0e, 0xf5,
- 0xf8, 0x45, 0xe6, 0x95, 0x48, 0x92, 0x4a, 0x61, 0x4d, 0xc6, 0x83, 0xe4,
- 0xe7, 0x9f, 0xfb, 0x09, 0x59, 0xc2, 0x3f, 0x37, 0xe6, 0x7f, 0x66, 0x8b,
- 0xfd, 0xcc, 0x85, 0x19, 0x3f, 0xdf, 0x92, 0x6d, 0x47, 0x7e, 0xe3, 0x20,
- 0x23, 0x75, 0x46, 0x41, 0x22, 0xd6, 0xa6, 0xdb, 0xce, 0x37, 0xae, 0x03,
- 0xe5, 0x0c, 0x2c, 0x44, 0x41, 0xec, 0x52, 0x72, 0x82, 0xa5, 0x59, 0x86,
- 0xe5, 0xbc, 0x08, 0x2f, 0x4a, 0x28, 0xb5, 0xbc, 0x05, 0x71, 0xba, 0x21,
- 0xed, 0x37, 0xff, 0xb4, 0xe9, 0xb6, 0x4b, 0x5f, 0x7d, 0xf8, 0x8d, 0x4a,
- 0x53, 0x3c, 0x48, 0xa7, 0x3c, 0x8c, 0x9f, 0x69, 0xd1, 0x24, 0x8c, 0x4a,
- 0x8e, 0x89, 0x1a, 0x89, 0x79, 0x46, 0x0e, 0x74, 0x2e, 0x7d, 0x29, 0x9d,
- 0x7d, 0x48, 0x15, 0x40, 0x8b, 0x9b, 0xfb, 0x9a, 0xd2, 0x33, 0xd6, 0x9c,
- 0x4e, 0xef, 0x80, 0x0c, 0x57, 0xca, 0xb7, 0x46, 0xb3, 0x7d, 0x60, 0x59,
- 0xd1, 0x06, 0x68, 0x49, 0x47, 0xd3, 0x9d, 0xcd, 0xc1, 0xa6, 0x0d, 0x77,
- 0x49, 0x4a, 0x4c, 0x90, 0x3f, 0xac, 0xc2, 0xc0, 0xcb, 0x2f, 0x0c, 0x3e,
- 0xe9, 0xe5, 0xbd, 0x95, 0x7e, 0x46, 0xa3, 0x2b, 0xe8, 0xa5, 0x8a, 0x3c,
- 0x0d, 0xd4, 0xcb, 0xf7, 0x45, 0xc4, 0x44, 0x7c, 0x4a, 0xc8, 0x7c, 0x84,
- 0x75, 0xa1, 0x0d, 0xc0, 0xe1, 0xe1, 0x22, 0x40, 0x83, 0x01, 0xb0, 0x15,
- 0x16, 0x8c, 0x87, 0x40, 0xdb, 0x03, 0xc9, 0x05, 0xf7, 0x54, 0xfd, 0xb2,
- 0x98, 0x05, 0x22, 0x55, 0xb2, 0xfd, 0xb4, 0xc0, 0x94, 0xce, 0x30, 0x15,
- 0xe1, 0xdf, 0x15, 0x52, 0x44, 0x3d, 0x2a, 0xe1, 0x78, 0x99, 0x20, 0x4d,
- 0x41, 0x32, 0x62, 0xa4, 0x8e, 0x26, 0x62, 0xe8, 0xd1, 0x35, 0x17, 0xa8,
- 0x39, 0xd4, 0x9f, 0x57, 0x49, 0x6f, 0xb5, 0xb2, 0xd3, 0xeb, 0xbe, 0x81,
- 0x24, 0x47, 0xe7, 0xc5, 0x94, 0x1a, 0x61, 0x74, 0x64, 0x4b, 0x92, 0xe5,
- 0x06, 0x7f, 0xe3, 0x9c, 0x35, 0x2e, 0x63, 0x91, 0x2b, 0x74, 0x9b, 0x73,
- 0x80, 0xeb, 0x48, 0xf0, 0xde, 0x25, 0x52, 0x79, 0xfb, 0xc3, 0xa5, 0x22,
- 0xe5, 0xf0, 0x50, 0xe3, 0x82, 0xe2, 0x0b, 0xcd, 0x7b, 0x3a, 0x88, 0xb6,
- 0xeb, 0xdb, 0x94, 0x65, 0x4f, 0xdf, 0x13, 0xaf, 0xb3, 0xde, 0x0e, 0xf6,
- 0x7c, 0x2f, 0x66, 0xc0, 0x26, 0xd0, 0xfc, 0x7e, 0x68, 0x3d, 0xc1, 0xec,
- 0xec, 0x6d, 0xdb, 0x8a, 0x30, 0x00, 0x0c, 0x70, 0xf2, 0xb5, 0xa8, 0x02,
- 0xbd, 0x9b, 0x92, 0xd3, 0x85, 0x7a, 0x07, 0x54, 0xac, 0x24, 0x47, 0x13,
- 0x63, 0xd4, 0xd2, 0xef, 0x4e, 0x73, 0x48, 0xc6, 0xfa, 0xf6, 0xec, 0xed,
- 0x71, 0x3b, 0xc9, 0x16, 0x3f, 0x89, 0xf9, 0x57, 0x8d, 0xa8, 0x7a, 0x63,
- 0xe4, 0x0b, 0xef, 0x81, 0x34, 0x50, 0xd8, 0x78, 0x6f, 0x99, 0x6e, 0x5d,
- 0x67, 0xcd, 0xe2, 0x6e, 0x99, 0x4f, 0xb7, 0xb6, 0x69, 0x8f, 0x50, 0x8a,
- 0xfd, 0x00, 0x75, 0x1d, 0x6c, 0xfd, 0xd5, 0xc9, 0x16, 0xeb, 0xe0, 0x55,
- 0xd6, 0x2c, 0xab, 0x82, 0x7d, 0xe2, 0xd4, 0xf7, 0xae, 0x1d, 0x65, 0x2e,
- 0x60, 0xbe, 0xcd, 0x7c, 0xfb, 0x5f, 0x70, 0x42, 0x38, 0x4b, 0x89, 0x1b,
- 0xdc, 0x26, 0x21, 0xa0, 0x29, 0x11, 0x58, 0x78, 0x8c, 0x25, 0xb8, 0xa2,
- 0xfc, 0x99, 0x48, 0x0e, 0xcf, 0xcf, 0x5f, 0x1f, 0x5e, 0x1e, 0xda, 0xb1,
- 0xe1, 0x0e, 0x86, 0x64, 0x81, 0x12, 0x6c, 0x44, 0x12, 0x29, 0x46, 0xf4,
- 0xe4, 0xe6, 0x9f, 0xdf, 0x8f, 0x8e, 0x2f, 0xba, 0x0b, 0x7b, 0x7e, 0x71,
- 0x46, 0x20, 0x2c, 0x7f, 0xfe, 0xf9, 0x70, 0xb1, 0x98, 0x69, 0xdc, 0xef,
- 0x75, 0xda, 0xa4, 0x9b, 0xc1, 0xa9, 0xde, 0xdf, 0xa6, 0xfe, 0xdd, 0xd9,
- 0xfe, 0x5d, 0xc9, 0x3d, 0x06, 0x6b, 0x3e, 0xf9, 0x40, 0x0b, 0x5a, 0x4d,
- 0x34, 0xc3, 0xd6, 0xce, 0x06, 0x26, 0x00, 0x09, 0xb2, 0xab, 0x07, 0xc2,
- 0x75, 0xdf, 0xad, 0x5c, 0x31, 0x9d, 0xac, 0x99, 0xb1, 0xa3, 0xb3, 0xc9,
- 0xb2, 0xd1, 0x2d, 0x8f, 0xfd, 0x45, 0x95, 0xab, 0xdd, 0x79, 0x09, 0x96,
- 0xc7, 0x45, 0x4a, 0x58, 0x0a, 0xa0, 0x70, 0xda, 0x6c, 0x34, 0x64, 0x41,
- 0x0f, 0xa5, 0xb7, 0x2c, 0xc5, 0x22, 0x7b, 0x6a, 0x9a, 0x71, 0xe4, 0x04,
- 0x85, 0xd4, 0xdc, 0xa5, 0x60, 0x42, 0xfe, 0x64, 0x4e, 0xe3, 0x20, 0x39,
- 0x96, 0x0a, 0x1f, 0x0c, 0xdc, 0xfc, 0x20, 0x78, 0xa8, 0xb1, 0x16, 0x82,
- 0x08, 0xfb, 0xb8, 0xac, 0xf0, 0xc0, 0x05, 0x7a, 0xdd, 0x3b, 0x88, 0xcb,
- 0xf9, 0xcc, 0x43, 0xd4, 0x6d, 0x9a, 0x74, 0x18, 0x48, 0xbd, 0x48, 0x5e,
- 0xd3, 0x20, 0xbd, 0xa6, 0xed, 0x65, 0x1e, 0x35, 0x0a, 0xb4, 0xb1, 0x8b,
- 0xe8, 0x5f, 0x3b, 0x7b, 0xc3, 0xdd, 0x5e, 0xd8, 0x79, 0x3a, 0x2c, 0x00,
- 0x86, 0xb0, 0x81, 0x33, 0x92, 0x86, 0x4d, 0x59, 0x3e, 0xd8, 0x3f, 0x16,
- 0x61, 0x46, 0x05, 0x5d, 0x98, 0xf6, 0xa3, 0x5d, 0x19, 0x9c, 0x05, 0x89,
- 0x1e, 0x94, 0x9c, 0x5b, 0xa9, 0x50, 0x34, 0x32, 0xb1, 0x28, 0xef, 0x68,
- 0x24, 0x66, 0xab, 0xcd, 0x66, 0x2d, 0x04, 0x8f, 0x5e, 0x7c, 0x9a, 0x0b,
- 0x80, 0xe5, 0x64, 0xdd, 0xd9, 0x8e, 0x06, 0xa7, 0x55, 0xbf, 0xf4, 0x95,
- 0x38, 0x9b, 0xd5, 0x0a, 0x43, 0xd1, 0xee, 0x04, 0xbf, 0x80, 0xda, 0x48,
- 0xb9, 0x40, 0xee, 0xcd, 0xfc, 0xe4, 0x8b, 0x81, 0x66, 0x80, 0x0c, 0xa8,
- 0x11, 0x52, 0x3c, 0x5f, 0x72, 0x7d, 0x6e, 0x60, 0xae, 0xbf, 0x4d, 0x3f,
- 0xe5, 0xf3, 0xe5, 0x1c, 0x1f, 0xa3, 0xbd, 0x2d, 0x8f, 0x49, 0xc8, 0x00,
- 0x8e, 0x43, 0xce, 0x40, 0xc1, 0x26, 0xdf, 0xac, 0x13, 0xcf, 0x68, 0x8f,
- 0x5d, 0x32, 0xe6, 0x4a, 0x1e, 0xba, 0xe1, 0x15, 0x48, 0xd5, 0xa4, 0x98,
- 0x42, 0xdd, 0x31, 0xf8, 0x8d, 0xb6, 0x90, 0x52, 0x5a, 0x41, 0x5d, 0xda,
- 0x9c, 0x9c, 0x88, 0x38, 0xe7, 0x02, 0x71, 0x51, 0xdf, 0xbc, 0x94, 0xd4,
- 0xac, 0xca, 0xcb, 0xa9, 0x3d, 0x37, 0xa4, 0x1f, 0xe6, 0xc5, 0xd2, 0xcc,
- 0x33, 0xbb, 0x8b, 0x39, 0xce, 0x10, 0x51, 0x6a, 0xb2, 0x4f, 0x48, 0x9c,
- 0x1f, 0xa1, 0x1e, 0x42, 0xb3, 0x4c, 0x3f, 0x1b, 0x3e, 0xd9, 0x1f, 0xee,
- 0xf6, 0x5b, 0x36, 0xbb, 0xd4, 0xd1, 0x9b, 0xd3, 0x35, 0xc9, 0xe7, 0xb6,
- 0xc6, 0x6e, 0xf8, 0x4f, 0xf3, 0xcd, 0x20, 0xe9, 0x7b, 0x9e, 0x7e, 0xc2,
- 0xf2, 0x45, 0x97, 0xb5, 0x4c, 0x5e, 0x7e, 0x7b, 0x36, 0xba, 0xdc, 0x3b,
- 0x38, 0x3f, 0xbb, 0x30, 0xff, 0xa5, 0xbf, 0xef, 0xe3, 0xef, 0xfb, 0x81,
- 0xe1, 0xf8, 0x46, 0x92, 0x64, 0xb5, 0x1e, 0x07, 0x1a, 0x0a, 0x34, 0x1a,
- 0x9e, 0xcd, 0xc4, 0x6b, 0x88, 0x7c, 0xa7, 0x10, 0x83, 0x13, 0x5b, 0xc5,
- 0xd5, 0x5d, 0x62, 0xef, 0x53, 0x9a, 0x47, 0xa7, 0xee, 0x05, 0x3f, 0x57,
- 0x2f, 0x6f, 0x54, 0x9b, 0x92, 0xfa, 0x5f, 0xad, 0x2c, 0xee, 0xba, 0xb3,
- 0xb9, 0x76, 0x53, 0x4a, 0x70, 0x14, 0xa3, 0x0b, 0xe9, 0x5f, 0xed, 0x5f,
- 0x4d, 0x66, 0x46, 0xc9, 0xcf, 0x28, 0x5d, 0x64, 0x9a, 0x71, 0x0c, 0x85,
- 0x7e, 0x12, 0xb3, 0x3d, 0xcc, 0xf1, 0x93, 0xaa, 0x84, 0x20, 0x87, 0x10,
- 0x3b, 0x52, 0x03, 0x37, 0xa6, 0x37, 0xa6, 0x8f, 0xb9, 0xd1, 0xc2, 0x79,
- 0x3a, 0x8a, 0x2c, 0x28, 0x02, 0x60, 0xec, 0x2c, 0xdf, 0x4f, 0x85, 0xc2,
- 0x64, 0x94, 0x18, 0xbf, 0x3b, 0xbb, 0x4c, 0xd2, 0xab, 0x2b, 0xad, 0x87,
- 0xa6, 0xca, 0x03, 0xd2, 0x58, 0x77, 0x16, 0x7c, 0x93, 0xa5, 0x4d, 0x2c,
- 0x3b, 0x43, 0xf4, 0x91, 0xcb, 0xd3, 0xd1, 0x0e, 0x79, 0xa9, 0x38, 0xcf,
- 0x6d, 0xf4, 0xee, 0xa4, 0xdf, 0x72, 0x47, 0xfb, 0xd9, 0x2d, 0xdb, 0x74,
- 0x53, 0xc6, 0x15, 0x8a, 0xd4, 0xbb, 0x0b, 0x1d, 0xca, 0x06, 0xe5, 0xcd,
- 0x61, 0x49, 0x7b, 0x52, 0xf0, 0xd5, 0xc3, 0xd2, 0xf6, 0x12, 0x0d, 0x8c,
- 0xc2, 0xf4, 0x9d, 0x2f, 0x9a, 0xfb, 0xb0, 0x46, 0x0e, 0xee, 0x0b, 0xc2,
- 0x9e, 0x20, 0xa5, 0xa3, 0x47, 0x26, 0x09, 0x0d, 0x0b, 0x43, 0xea, 0x0d,
- 0xb9, 0xd9, 0xfd, 0x1e, 0x5a, 0x45, 0xa3, 0xe6, 0xef, 0xd4, 0x26, 0x36,
- 0xed, 0x38, 0x8b, 0x65, 0xf0, 0xf3, 0x87, 0xbc, 0xc6, 0x13, 0xdb, 0xbc,
- 0xe9, 0x98, 0x2d, 0x45, 0xd3, 0xdd, 0x41, 0x02, 0xa6, 0xac, 0xf2, 0x6b,
- 0x4a, 0x05, 0xe8, 0x56, 0x87, 0xb9, 0x8e, 0x04, 0xce, 0x27, 0x52, 0xc6,
- 0xea, 0xa6, 0xe7, 0x79, 0x0b, 0x9a, 0x20, 0x07, 0x1f, 0x99, 0xa1, 0x95,
- 0xda, 0x33, 0xda, 0x1d, 0x92, 0x3f, 0x4d, 0x44, 0x8f, 0x67, 0x65, 0xcf,
- 0x8c, 0x8e, 0xee, 0x1d, 0x17, 0xe7, 0xd1, 0xea, 0x1e, 0x3d, 0x4b, 0x40,
- 0xff, 0x38, 0x69, 0x54, 0x80, 0x73, 0x64, 0xa8, 0xdb, 0x1c, 0xa3, 0x54,
- 0x19, 0x89, 0xa0, 0x85, 0x1d, 0xbd, 0xbd, 0xfd, 0xcf, 0x86, 0xbb, 0xe6,
- 0xff, 0x99, 0x45, 0x11, 0xfd, 0x08, 0x10, 0x39, 0x0e, 0x0a, 0xc5, 0x3e,
- 0x99, 0x7d, 0xea, 0x6e, 0x49, 0xbe, 0x80, 0xca, 0xea, 0xba, 0x17, 0xcf,
- 0x78, 0x92, 0x11, 0xb7, 0xae, 0x14, 0x5a, 0x48, 0x7b, 0x9d, 0xa4, 0x53,
- 0xf9, 0x89, 0x9e, 0xf1, 0x6a, 0x39, 0x8b, 0x64, 0xee, 0x79, 0x9e, 0x62,
- 0xd2, 0xce, 0x66, 0xb7, 0xe2, 0x27, 0xfe, 0x96, 0x64, 0x13, 0x97, 0xea,
- 0x0d, 0x5b, 0x79, 0x4f, 0x2f, 0x5a, 0x6e, 0xbf, 0x23, 0x31, 0xd9, 0x20,
- 0x99, 0x07, 0xe6, 0x30, 0xbc, 0x2c, 0xaf, 0xae, 0xea, 0xac, 0xe9, 0x5e,
- 0x40, 0x47, 0xf2, 0xc8, 0xce, 0x05, 0x40, 0xdd, 0x20, 0xa9, 0xb4, 0xa8,
- 0x26, 0x69, 0x43, 0x91, 0x24, 0x92, 0x68, 0xc6, 0x62, 0x8b, 0x9b, 0x1b,
- 0x46, 0xea, 0x08, 0xfc, 0xdf, 0x6b, 0x12, 0x08, 0x57, 0x02, 0x2b, 0xc0,
- 0x05, 0xac, 0x65, 0xc6, 0xae, 0x90, 0x9b, 0xae, 0x8b, 0x44, 0xa5, 0x47,
- 0xe2, 0x63, 0xbe, 0x58, 0x90, 0x79, 0xc3, 0xa8, 0x4e, 0xd8, 0xb6, 0x36,
- 0x46, 0x86, 0x50, 0x2d, 0xb6, 0xb2, 0x26, 0x04, 0x1a, 0x25, 0x79, 0x22,
- 0x77, 0xfe, 0x38, 0xbb, 0x0a, 0xe3, 0x3c, 0x9c, 0xb7, 0xe8, 0x43, 0x79,
- 0x08, 0x02, 0xc1, 0x94, 0x60, 0x3b, 0x8a, 0x54, 0x45, 0xcc, 0x95, 0x57,
- 0xe4, 0x2e, 0xf5, 0x7d, 0xfd, 0xc8, 0xf9, 0x77, 0xf5, 0x57, 0xd6, 0xd5,
- 0x36, 0x3a, 0xf9, 0x7f, 0x8e, 0x1d, 0xf0, 0x8a, 0x45, 0x36, 0xe1, 0x8a,
- 0x96, 0x58, 0x7d, 0x90, 0x39, 0x85, 0x83, 0x23, 0xb3, 0x5e, 0x3d, 0x74,
- 0xc5, 0x65, 0x93, 0x94, 0x9d, 0x8a, 0x0b, 0xd8, 0x3d, 0xa4, 0x49, 0x40,
- 0x1b, 0xda, 0xa1, 0x5a, 0xe7, 0xe0, 0x6a, 0x60, 0x5c, 0x3e, 0x76, 0x21,
- 0xca, 0x18, 0x71, 0x3a, 0x1a, 0x29, 0x8c, 0xf3, 0xcb, 0x4a, 0x44, 0x59,
- 0xdc, 0xc9, 0x0b, 0x52, 0x19, 0x59, 0x81, 0x09, 0xaa, 0x2e, 0xb4, 0xd4,
- 0x95, 0x11, 0x1e, 0x96, 0xcd, 0x3f, 0x31, 0x3c, 0x52, 0xd1, 0xfe, 0x05,
- 0x74, 0x97, 0xb7, 0xa9, 0x27, 0xbc, 0xa9, 0x09, 0x9f, 0x70, 0xf0, 0x57,
- 0x63, 0x65, 0xbf, 0x54, 0x37, 0xc5, 0xaa, 0x62, 0x68, 0x75, 0x6a, 0x50,
- 0x9d, 0x04, 0x8c, 0x30, 0xec, 0x0d, 0x8b, 0xc9, 0xa1, 0x53, 0xcd, 0xfe,
- 0x94, 0x14, 0xba, 0x0c, 0xc0, 0x0f, 0xbb, 0x67, 0xfe, 0x0a, 0x40, 0x1f,
- 0x16, 0xf8, 0xc1, 0x2b, 0x8f, 0x1c, 0x52, 0x20, 0x6a, 0xc6, 0x2d, 0xd4,
- 0x9c, 0x3b, 0x29, 0x6d, 0xa8, 0xd1, 0x90, 0x07, 0x77, 0x6e, 0x5e, 0x0c,
- 0xe6, 0xd9, 0x1c, 0x69, 0xdd, 0xfc, 0x2c, 0xe2, 0x65, 0x84, 0x54, 0x25,
- 0xdb, 0x91, 0x97, 0x88, 0xcd, 0xf0, 0x46, 0x72, 0x27, 0xa0, 0xd6, 0xe2,
- 0xb3, 0x31, 0x4f, 0x39, 0xbb, 0x1b, 0xe1, 0x23, 0xe4, 0x8f, 0x93, 0x7b,
- 0xec, 0xa3, 0xd1, 0x9d, 0x8b, 0x3e, 0xfd, 0x14, 0xb5, 0xa6, 0xf6, 0x90,
- 0xb1, 0x6f, 0xa3, 0xc9, 0x38, 0x2e, 0x91, 0x45, 0x74, 0x59, 0xef, 0x59,
- 0x79, 0xd4, 0x73, 0xa3, 0xbc, 0xcb, 0x1a, 0xc9, 0x0e, 0xe1, 0xce, 0x6b,
- 0xf9, 0x15, 0x4a, 0xb8, 0x4e, 0xae, 0x3a, 0xcd, 0x01, 0x22, 0x2b, 0x6b,
- 0x9c, 0x43, 0x08, 0x02, 0x96, 0xc3, 0xb4, 0x8c, 0x0b, 0x44, 0xee, 0xce,
- 0xbe, 0x39, 0x06, 0x3d, 0x75, 0xbd, 0xf2, 0x08, 0xe2, 0xd9, 0x09, 0xda,
- 0x1d, 0x72, 0x13, 0x35, 0xd3, 0xd8, 0x9e, 0x64, 0xdd, 0x57, 0x0f, 0xa4,
- 0xc0, 0xa5, 0xf9, 0x19, 0x0f, 0x04, 0xfc, 0x84, 0x00, 0xbd, 0xfb, 0x9a,
- 0xe6, 0xa6, 0x44, 0x0a, 0x07, 0xbd, 0xc2, 0x51, 0xca, 0x92, 0xa9, 0xa6,
- 0xea, 0x19, 0xd1, 0x8e, 0x1a, 0x29, 0x2c, 0x76, 0xd1, 0x5d, 0x8a, 0x9d,
- 0x66, 0xdb, 0x8f, 0x95, 0x37, 0x78, 0x29, 0x8e, 0x83, 0xb1, 0xdb, 0xce,
- 0x0e, 0x32, 0x24, 0xea, 0x92, 0x95, 0x87, 0x68, 0xcf, 0x9b, 0x8b, 0x65,
- 0xb3, 0xf1, 0xea, 0x47, 0x81, 0xc2, 0x61, 0x27, 0x85, 0xa7, 0xf0, 0xee,
- 0xa6, 0x9c, 0x65, 0xb1, 0x28, 0x88, 0x57, 0xd5, 0x0b, 0x40, 0x0b, 0xca,
- 0xdc, 0x85, 0x43, 0xf9, 0x16, 0x49, 0xc1, 0xad, 0xe8, 0x88, 0xd1, 0xef,
- 0xb2, 0x94, 0x6a, 0x8a, 0x6c, 0x5e, 0xfc, 0x6d, 0x3f, 0xc8, 0x54, 0x37,
- 0xe7, 0x7c, 0x5c, 0xd6, 0x76, 0xbf, 0x50, 0xed, 0x2c, 0xdd, 0x20, 0x77,
- 0x69, 0x05, 0xc1, 0x2c, 0xc8, 0x40, 0x0a, 0x9a, 0xe8, 0xa7, 0x05, 0x92,
- 0x2a, 0xd8, 0x2d, 0x69, 0xc8, 0xa9, 0xde, 0xdc, 0x6c, 0x13, 0xa3, 0x00,
- 0x90, 0xcb, 0x16, 0x7b, 0x87, 0x9a, 0x14, 0xcc, 0x9f, 0x1b, 0xc0, 0x7f,
- 0x4a, 0x51, 0xba, 0x39, 0x87, 0x37, 0x74, 0xa7, 0xe7, 0xcd, 0x32, 0x6d,
- 0x1e, 0x97, 0x93, 0xbd, 0x4a, 0x36, 0xb1, 0x70, 0xf2, 0x53, 0x4e, 0x23,
- 0x21, 0x04, 0x6c, 0xdb, 0x15, 0x81, 0x42, 0x7f, 0x21, 0x5f, 0xd2, 0x59,
- 0x5b, 0x21, 0x8f, 0xce, 0x01, 0x5e, 0x76, 0xd3, 0x46, 0xbf, 0x41, 0xb5,
- 0xad, 0x5c, 0x23, 0x5a, 0xd3, 0xc6, 0x4d, 0xe9, 0x2d, 0x7f, 0x12, 0x09,
- 0xe1, 0x23, 0xee, 0x65, 0x7a, 0x31, 0xbb, 0x77, 0x0d, 0x7a, 0xc5, 0xb0,
- 0x9a, 0xbb, 0xed, 0x21, 0x83, 0xd9, 0x2f, 0x04, 0xf9, 0x48, 0xbd, 0x91,
- 0xd1, 0xbc, 0xf9, 0x9b, 0x07, 0x3d, 0x05, 0x5a, 0xb4, 0xc8, 0x31, 0x22,
- 0x3c, 0xa4, 0x1c, 0x4b, 0x2b, 0x3b, 0xc4, 0x4d, 0x8c, 0x53, 0xdf, 0x6d,
- 0x8e, 0x50, 0x87, 0xf7, 0x5e, 0x7d, 0x7f, 0x78, 0xfa, 0xfe, 0x78, 0xef,
- 0x8b, 0x84, 0xfe, 0xb5, 0xcf, 0xff, 0xda, 0xef, 0xc5, 0x56, 0xc9, 0xc8,
- 0xa7, 0xcd, 0x57, 0x9b, 0x49, 0x7d, 0x3f, 0x1f, 0x97, 0x33, 0xbb, 0x4e,
- 0x32, 0x15, 0x1a, 0x22, 0xeb, 0xcb, 0xe5, 0x6d, 0x8b, 0xb2, 0xc5, 0x3d,
- 0xde, 0x95, 0xd4, 0xb5, 0xa4, 0x13, 0xaa, 0x94, 0x41, 0x6c, 0xce, 0xaf,
- 0x12, 0x6e, 0x50, 0x43, 0xad, 0xa2, 0x4b, 0xa2, 0x74, 0xab, 0x52, 0x3c,
- 0x71, 0x17, 0xe9, 0x79, 0xae, 0x23, 0x02, 0x83, 0x6f, 0x15, 0x87, 0x5e,
- 0xeb, 0xcb, 0x89, 0x30, 0x8f, 0xcc, 0x08, 0x25, 0x9c, 0x24, 0x0b, 0xb1,
- 0xcb, 0xaf, 0x8b, 0x5d, 0x40, 0x30, 0x6c, 0xf7, 0x82, 0x2c, 0xb0, 0x59,
- 0x65, 0x56, 0xe2, 0x62, 0xd4, 0xf4, 0x6e, 0xb7, 0xb9, 0xb1, 0xa8, 0x2c,
- 0x1e, 0x0a, 0xd1, 0x29, 0x01, 0x1f, 0x0d, 0x34, 0xf1, 0xc2, 0x79, 0x38,
- 0xc8, 0x06, 0x9d, 0x92, 0x42, 0xad, 0x6e, 0x8c, 0xc4, 0xc3, 0xb9, 0xb5,
- 0x88, 0x79, 0x02, 0x39, 0x97, 0xb4, 0x82, 0x7d, 0xec, 0x62, 0xf6, 0x62,
- 0x20, 0x2a, 0xc3, 0xa9, 0xca, 0x81, 0xd4, 0x3a, 0x24, 0x92, 0xcc, 0x83,
- 0xbc, 0xab, 0xc2, 0x28, 0x90, 0x5b, 0x46, 0xaa, 0x6f, 0xf7, 0xbd, 0x52,
- 0x3c, 0x5d, 0x3e, 0xf1, 0x46, 0x34, 0x36, 0x56, 0xba, 0x22, 0x44, 0x70,
- 0x79, 0xd3, 0xba, 0x5f, 0x54, 0xd3, 0xd3, 0xd2, 0x65, 0x8e, 0xbc, 0xca,
- 0x85, 0xc1, 0xcd, 0xf0, 0x36, 0xa5, 0xbc, 0xcc, 0x99, 0x07, 0x5d, 0xa3,
- 0xc6, 0x33, 0x9d, 0x35, 0x05, 0xba, 0xa0, 0x10, 0xbe, 0xdd, 0xf8, 0xe6,
- 0xfb, 0xf7, 0xb3, 0x6c, 0x5b, 0xed, 0x01, 0xbd, 0xe3, 0x76, 0xde, 0x96,
- 0x7f, 0x37, 0xfd, 0x4e, 0xe5, 0x23, 0xb1, 0xab, 0x52, 0x6e, 0xbe, 0x95,
- 0x3d, 0x77, 0x62, 0x85, 0x0b, 0xc0, 0x7d, 0x61, 0xd1, 0x32, 0x89, 0x11,
- 0xde, 0x25, 0x75, 0x0c, 0x49, 0xd8, 0xc1, 0xd6, 0x11, 0xa5, 0x22, 0xb8,
- 0x98, 0x45, 0x8c, 0x20, 0xa8, 0x93, 0x5c, 0x96, 0x92, 0x7b, 0x63, 0xb7,
- 0x98, 0xdc, 0x36, 0x5d, 0xc9, 0xdd, 0x55, 0xa5, 0x56, 0xdc, 0x3f, 0xc7,
- 0x9f, 0xb2, 0x6a, 0x42, 0x20, 0x12, 0x13, 0xa3, 0x8e, 0x42, 0x8c, 0x5e,
- 0x89, 0x57, 0x8a, 0xb2, 0xa4, 0x24, 0xdf, 0xbd, 0x95, 0x25, 0xce, 0x36,
- 0xaf, 0xee, 0xb3, 0x95, 0x5b, 0x0c, 0x59, 0x0d, 0x13, 0xb3, 0x31, 0x86,
- 0x16, 0xed, 0x4b, 0xef, 0xc5, 0xb6, 0xf8, 0xd0, 0xf2, 0x31, 0x44, 0x11,
- 0x82, 0x5c, 0x3c, 0xcc, 0xb0, 0xbe, 0xe8, 0xad, 0xa6, 0x6c, 0x17, 0xf4,
- 0x85, 0xb1, 0x9b, 0x5c, 0x50, 0x88, 0x40, 0x00, 0x00, 0x81, 0xb3, 0x3a,
- 0xf1, 0xd0, 0xae, 0x0e, 0x90, 0x39, 0x10, 0x24, 0x29, 0xee, 0x15, 0x38,
- 0x67, 0x0b, 0xb7, 0x25, 0xeb, 0x84, 0x0a, 0xaf, 0x06, 0x85, 0x2b, 0x2c,
- 0x33, 0x9e, 0x95, 0x77, 0x14, 0x7a, 0x69, 0x83, 0x1d, 0xce, 0xcb, 0xa9,
- 0x97, 0x2d, 0xc7, 0x72, 0x79, 0x40, 0x2a, 0x12, 0x7f, 0x76, 0xa8, 0xc8,
- 0x12, 0xd1, 0x1d, 0xa0, 0x85, 0xb2, 0xdd, 0x1a, 0xa3, 0xd4, 0xe5, 0x46,
- 0x34, 0xec, 0x43, 0x66, 0xb5, 0xc2, 0x61, 0x0d, 0xc5, 0xee, 0x33, 0x8c,
- 0x78, 0x5c, 0x36, 0x37, 0x5e, 0x86, 0x29, 0xe1, 0x97, 0x91, 0x7b, 0xe7,
- 0x6a, 0xd9, 0x40, 0xf7, 0x57, 0xeb, 0xaf, 0x91, 0x24, 0x62, 0xf1, 0x11,
- 0x05, 0xf9, 0x0c, 0x1f, 0x09, 0xe7, 0x8a, 0x86, 0x68, 0xb1, 0x3a, 0x29,
- 0x35, 0xb6, 0x40, 0x0e, 0x38, 0xed, 0x4b, 0x63, 0xf7, 0x02, 0x4a, 0xcd,
- 0x7c, 0x93, 0x52, 0x90, 0xea, 0x9a, 0x60, 0xb3, 0x90, 0x6c, 0x6a, 0x26,
- 0x36, 0x00, 0x93, 0xa0, 0x89, 0xa6, 0x44, 0x1a, 0xb7, 0xa4, 0x5b, 0x0c,
- 0x6c, 0x83, 0x3e, 0x88, 0x2c, 0x21, 0xc4, 0x0b, 0x32, 0xd6, 0xc7, 0xb2,
- 0x34, 0x35, 0xce, 0x2f, 0xed, 0x87, 0x88, 0x2f, 0xc4, 0xaa, 0xad, 0x2b,
- 0x0e, 0xec, 0x3f, 0x6c, 0xcb, 0x04, 0xb6, 0x5d, 0x55, 0x33, 0x56, 0x28,
- 0xd0, 0x56, 0x6d, 0xca, 0x3b, 0xa6, 0x3b, 0x14, 0x5c, 0xa9, 0x0b, 0xbb,
- 0xc1, 0x98, 0xe8, 0xba, 0xae, 0x16, 0x53, 0x68, 0x7b, 0xfa, 0x0e, 0xf4,
- 0x23, 0x0f, 0xf3, 0xaf, 0x2e, 0xe5, 0x34, 0xa2, 0x79, 0x12, 0x32, 0x4e,
- 0xca, 0xc4, 0xe0, 0x6f, 0xba, 0xe7, 0xdf, 0x8f, 0xab, 0xb4, 0x40, 0xa9,
- 0xd8, 0x75, 0x33, 0xf7, 0x65, 0x83, 0x79, 0x11, 0x97, 0xef, 0xc0, 0xec,
- 0xfd, 0x3a, 0x16, 0x9f, 0xd4, 0x0b, 0xdc, 0x48, 0xf8, 0xbf, 0x2e, 0x8b,
- 0x49, 0xe7, 0x8e, 0x2a, 0xfb, 0x1e, 0xf4, 0xa0, 0x04, 0x63, 0xed, 0x0d,
- 0xd1, 0xdd, 0xf4, 0xf8, 0x90, 0x00, 0xdb, 0x50, 0xad, 0x27, 0xd5, 0x65,
- 0xd0, 0xf5, 0x36, 0xf3, 0x8a, 0x63, 0x6f, 0x72, 0xb3, 0x42, 0xd5, 0xe4,
- 0x06, 0x18, 0x01, 0x70, 0x1f, 0x65, 0xea, 0x13, 0x0d, 0xf4, 0x5f, 0x71,
- 0xf8, 0xa3, 0x59, 0xd1, 0xc5, 0x72, 0x12, 0x47, 0x84, 0x03, 0x52, 0x16,
- 0x2a, 0xa4, 0x57, 0xf5, 0x33, 0xcc, 0xd9, 0xba, 0xa1, 0x39, 0xcf, 0x66,
- 0xb5, 0xbb, 0x20, 0xed, 0x3b, 0xee, 0xa6, 0x84, 0xed, 0x5d, 0xc0, 0x15,
- 0xcb, 0x57, 0x71, 0x1e, 0x3d, 0xe1, 0xe8, 0x89, 0x51, 0x73, 0xa4, 0x33,
- 0x64, 0x4e, 0xd2, 0x3e, 0xb9, 0x57, 0xf4, 0x18, 0x69, 0xa1, 0x0b, 0x20,
- 0x13, 0xdc, 0x3c, 0xa5, 0x9d, 0x37, 0x81, 0xa6, 0xd1, 0xa9, 0xca, 0x15,
- 0x5a, 0x9a, 0xb7, 0x0a, 0xf9, 0x2f, 0xa8, 0x30, 0x1a, 0x94, 0x07, 0x14,
- 0xf6, 0x1a, 0x0c, 0xae, 0x9a, 0x20, 0x11, 0xcb, 0x5b, 0xeb, 0xf6, 0x16,
- 0x98, 0x5d, 0x09, 0xfa, 0xce, 0x5b, 0x05, 0x1e, 0xbb, 0xa5, 0xea, 0x9c,
- 0xe4, 0xf4, 0x0d, 0x3b, 0xef, 0x8e, 0x2e, 0xe8, 0x6f, 0xb9, 0xc5, 0x1e,
- 0x42, 0x85, 0x2d, 0x38, 0x0c, 0x38, 0xf5, 0xf5, 0xed, 0xf7, 0xdd, 0x02,
- 0xcb, 0xad, 0xb3, 0xd1, 0xce, 0x93, 0x17, 0xbb, 0xdb, 0x91, 0x6c, 0x64,
- 0xf3, 0x0d, 0x1f, 0x92, 0xed, 0xe9, 0xee, 0x70, 0x77, 0xbb, 0xd3, 0x1b,
- 0x9a, 0xee, 0x35, 0xd0, 0x28, 0x0a, 0x24, 0x6d, 0x2f, 0x0d, 0xa4, 0x19,
- 0xbb, 0x32, 0x2c, 0xc9, 0x88, 0xf6, 0xcb, 0x44, 0x2f, 0xb2, 0x5b, 0xb3,
- 0xd5, 0xa2, 0x99, 0x69, 0xa7, 0x79, 0x2d, 0xf6, 0x0c, 0xdd, 0x64, 0x7a,
- 0xb7, 0x50, 0x1d, 0x76, 0x3b, 0xdb, 0x17, 0x8f, 0xd0, 0x65, 0xc9, 0x29,
- 0x0e, 0x91, 0x20, 0x4b, 0x6d, 0x3a, 0x55, 0x21, 0xe5, 0x0e, 0xa1, 0xfc,
- 0x3f, 0xdc, 0xc7, 0x72, 0xd8, 0x02, 0xb6, 0xfb, 0xcc, 0x5f, 0x53, 0xd2,
- 0xf4, 0x07, 0x69, 0x3d, 0xc9, 0xf3, 0xb5, 0x66, 0x8c, 0xe6, 0x32, 0xfe,
- 0x75, 0x09, 0x78, 0x31, 0xb3, 0x4d, 0xf3, 0x94, 0x23, 0xb4, 0x0e, 0x93,
- 0x31, 0x68, 0x96, 0x94, 0x55, 0xb3, 0xc5, 0xd6, 0xb5, 0x2b, 0xa6, 0x3b,
- 0xf1, 0x52, 0x08, 0x8c, 0xac, 0xd5, 0x2f, 0xeb, 0xae, 0x1a, 0x65, 0xce,
- 0x02, 0x03, 0x91, 0x2d, 0xaa, 0xb0, 0x72, 0x8f, 0xb2, 0x2e, 0x91, 0xcb,
- 0x9c, 0x36, 0x75, 0x49, 0xf3, 0x14, 0x9b, 0x54, 0x38, 0x26, 0x00, 0xc4,
- 0x69, 0x0d, 0x28, 0x7b, 0xf6, 0x25, 0x05, 0xe8, 0x2b, 0x2f, 0x61, 0xa7,
- 0x65, 0x00, 0xa5, 0x11, 0x45, 0x90, 0x71, 0xc4, 0x13, 0x44, 0xc5, 0xb9,
- 0x46, 0x8a, 0x06, 0x22, 0x68, 0xfa, 0xf0, 0x76, 0x70, 0x6a, 0x88, 0x60,
- 0xe9, 0x13, 0xc0, 0x90, 0x9d, 0xad, 0x08, 0x6c, 0x54, 0xdf, 0x8c, 0x0f,
- 0x28, 0x85, 0xd8, 0x41, 0x45, 0x76, 0x47, 0xd2, 0xb8, 0x16, 0x55, 0xa2,
- 0xaa, 0x72, 0x72, 0x17, 0xd9, 0x9c, 0x02, 0x56, 0xc7, 0x28, 0xbf, 0x92,
- 0x2e, 0xe7, 0x69, 0xa4, 0x6a, 0x7b, 0x82, 0xd3, 0x59, 0xdb, 0x6c, 0xec,
- 0x02, 0x48, 0x7b, 0x84, 0x1c, 0x17, 0xcc, 0x0d, 0xa0, 0xd0, 0xd1, 0x39,
- 0xc5, 0xd7, 0x6c, 0xda, 0x59, 0x1f, 0xa4, 0xb5, 0x73, 0xe6, 0x32, 0x03,
- 0x97, 0x95, 0x2d, 0x03, 0xb3, 0x5e, 0x1d, 0x25, 0xd9, 0xf9, 0x34, 0xb8,
- 0xbb, 0xbb, 0x1b, 0xd0, 0x81, 0xa3, 0x54, 0x1c, 0x29, 0xa0, 0x18, 0xb6,
- 0x70, 0x72, 0x61, 0x57, 0xb2, 0xc9, 0x49, 0x42, 0x24, 0x0c, 0x6b, 0x78,
- 0x69, 0x51, 0xd5, 0x38, 0x6f, 0x50, 0xa9, 0x27, 0x9b, 0x0b, 0xaf, 0x49,
- 0xc5, 0x9c, 0x74, 0x07, 0x1a, 0x8e, 0xfa, 0x9f, 0x22, 0xa7, 0xcf, 0x8d,
- 0x85, 0x80, 0xa5, 0x26, 0x4d, 0x46, 0x95, 0xe9, 0xe6, 0x13, 0xf3, 0x83,
- 0x64, 0xf0, 0x6d, 0xd2, 0x3b, 0x92, 0xd1, 0x5e, 0x9a, 0x27, 0x0e, 0xda,
- 0x63, 0xe1, 0x87, 0xc3, 0x18, 0x8e, 0x79, 0x37, 0x6a, 0xe6, 0x76, 0xd4,
- 0x64, 0x8b, 0x8c, 0x17, 0x39, 0xc8, 0x20, 0x92, 0x70, 0xc9, 0x32, 0x4d,
- 0xc4, 0x47, 0x47, 0xd9, 0x2e, 0xec, 0xcd, 0x62, 0x34, 0x33, 0x0c, 0x3d,
- 0xad, 0x85, 0x74, 0x64, 0xcc, 0x27, 0x7c, 0xcd, 0x71, 0xac, 0xd2, 0xbb,
- 0x87, 0xcf, 0xb8, 0x77, 0x12, 0x65, 0xf7, 0xce, 0xe0, 0xe1, 0xf2, 0xa0,
- 0x57, 0xc9, 0xad, 0x63, 0xd3, 0x2b, 0x23, 0x3d, 0x15, 0xc8, 0x7f, 0x57,
- 0x26, 0xc5, 0x86, 0xa9, 0xe8, 0xa5, 0x5f, 0xad, 0xa9, 0x30, 0x73, 0xbe,
- 0x60, 0x37, 0x8a, 0x56, 0xc0, 0xa3, 0x83, 0xe0, 0x88, 0x61, 0xd9, 0x5d,
- 0xf5, 0x08, 0x41, 0xe3, 0x46, 0xd7, 0xb7, 0x87, 0x53, 0xf6, 0x32, 0xfb,
- 0xf3, 0xbc, 0x61, 0x0a, 0xd8, 0x67, 0x2c, 0x71, 0x93, 0xc3, 0x1b, 0x74,
- 0x54, 0x15, 0x7a, 0x4c, 0x3c, 0x55, 0x59, 0x45, 0x1b, 0x1d, 0xf9, 0xed,
- 0x03, 0x4d, 0x4e, 0x8e, 0x5d, 0xd6, 0x46, 0xa0, 0x1c, 0x7d, 0x73, 0x82,
- 0x3c, 0x6d, 0x23, 0x48, 0x0b, 0x81, 0x67, 0xe0, 0xfe, 0x33, 0xbb, 0x8b,
- 0x35, 0x6a, 0xaf, 0x49, 0x94, 0x70, 0xb1, 0x63, 0x9a, 0xb4, 0xc0, 0x54,
- 0x3b, 0x36, 0x47, 0xa2, 0xc6, 0x85, 0xa4, 0xa3, 0x8a, 0x8d, 0x20, 0x87,
- 0xd7, 0x46, 0x75, 0x53, 0x97, 0xfc, 0x1f, 0x9d, 0x2f, 0x7c, 0x5d, 0x61,
- 0x44, 0xd2, 0x5a, 0x02, 0xb7, 0x50, 0xd6, 0x82, 0xc4, 0x70, 0xb7, 0x5f,
- 0x99, 0x2d, 0x27, 0x0b, 0xd3, 0xdd, 0xe4, 0xf3, 0x71, 0x32, 0x2b, 0xac,
- 0x49, 0xc7, 0x93, 0x62, 0xa7, 0x2e, 0xf3, 0x3d, 0x06, 0x5c, 0x65, 0x45,
- 0xbe, 0xb4, 0x98, 0xc3, 0x56, 0x55, 0x3d, 0xf2, 0x6e, 0xff, 0x27, 0xdd,
- 0x50, 0xb8, 0x77, 0x8d, 0xcc, 0x23, 0xcd, 0x43, 0x2b, 0x21, 0xfd, 0xd6,
- 0x14, 0xa4, 0x4f, 0xf2, 0x5c, 0xe3, 0xcd, 0x91, 0xfd, 0xf7, 0x8a, 0xb4,
- 0xa5, 0xaf, 0xc4, 0x51, 0x45, 0x19, 0xee, 0xb5, 0x67, 0x8d, 0x48, 0x19,
- 0x2c, 0xfa, 0xae, 0xd5, 0x3f, 0x34, 0x0d, 0xf1, 0xe6, 0x38, 0xb0, 0xe9,
- 0xcd, 0x1e, 0xef, 0x38, 0x42, 0xd8, 0xae, 0x99, 0x31, 0xe9, 0x5f, 0xba,
- 0x93, 0xf7, 0xea, 0xe1, 0xd9, 0xfb, 0xb5, 0xd3, 0xb7, 0x7e, 0xf6, 0x18,
- 0xa9, 0x5e, 0xf3, 0x63, 0x5f, 0x79, 0x0e, 0x3a, 0xe4, 0x78, 0xb0, 0xf5,
- 0x65, 0x1d, 0x75, 0x6d, 0x29, 0xe3, 0x19, 0x99, 0xaf, 0x7e, 0xaf, 0x55,
- 0xc7, 0x66, 0x84, 0x45, 0x4f, 0x9d, 0x8f, 0x37, 0xc7, 0xd1, 0x44, 0xac,
- 0xbd, 0x8f, 0xaa, 0x28, 0x7a, 0x38, 0x5a, 0x80, 0xdb, 0xca, 0xec, 0xff,
- 0x86, 0x37, 0xf3, 0x18, 0xd9, 0x9d, 0x83, 0x78, 0x73, 0x5a, 0xe2, 0x27,
- 0x8a, 0x78, 0x30, 0xbe, 0xaf, 0xf4, 0xe2, 0x7f, 0xfc, 0xe0, 0x90, 0x4d,
- 0xe4, 0xd8, 0xd1, 0xfc, 0x44, 0x10, 0x8e, 0xbc, 0x6c, 0x85, 0x7e, 0x43,
- 0x3d, 0x3e, 0x02, 0xf0, 0xc8, 0x6c, 0x39, 0xaa, 0x12, 0x6c, 0xf7, 0xdb,
- 0x13, 0x46, 0x20, 0x76, 0xb8, 0x0c, 0x74, 0x95, 0xf3, 0x95, 0x6b, 0xac,
- 0x6b, 0x47, 0x08, 0xf4, 0xd1, 0xb5, 0xfb, 0x7f, 0xd3, 0xf8, 0xb0, 0x9f,
- 0xdd, 0x36, 0xa0, 0xc0, 0x42, 0xcd, 0x70, 0xc5, 0x48, 0xa7, 0x4f, 0x50,
- 0x87, 0x40, 0x57, 0xfc, 0x8a, 0xde, 0x01, 0x57, 0x80, 0x94, 0x22, 0x0a,
- 0xb3, 0xce, 0x04, 0x08, 0x94, 0x11, 0xad, 0x5f, 0x39, 0x65, 0x66, 0x40,
- 0x83, 0x1c, 0xc8, 0x96, 0x1d, 0x62, 0x13, 0xae, 0xd9, 0xa9, 0x76, 0x67,
- 0xc6, 0x37, 0x65, 0xb0, 0xfd, 0x56, 0x5f, 0x8d, 0x8a, 0x9c, 0x2a, 0x77,
- 0x7b, 0xeb, 0xa6, 0xdc, 0xfb, 0xbc, 0x75, 0x53, 0xba, 0x77, 0xd6, 0xdd,
- 0x91, 0xa3, 0x8c, 0xf3, 0xd0, 0x7c, 0x07, 0x26, 0x5e, 0xe2, 0xfa, 0x69,
- 0xe2, 0x2c, 0x08, 0x33, 0x9a, 0xe8, 0xd5, 0xa0, 0x9c, 0x98, 0x53, 0x8a,
- 0xbc, 0xaa, 0x48, 0xe4, 0x95, 0x53, 0xb0, 0x4c, 0xac, 0xa3, 0x64, 0x5c,
- 0x95, 0x77, 0x35, 0xd4, 0x51, 0x35, 0x50, 0x53, 0xce, 0x7c, 0xbd, 0x09,
- 0x8a, 0x9d, 0xcd, 0xf4, 0xce, 0x2c, 0xc2, 0xeb, 0xb7, 0x97, 0x6f, 0x4f,
- 0x19, 0xc3, 0x9e, 0xeb, 0x6e, 0xa9, 0xbc, 0x48, 0xfa, 0xbc, 0x1c, 0xcf,
- 0x8d, 0x25, 0x6d, 0xb4, 0x93, 0x86, 0x45, 0x99, 0x4a, 0xc7, 0xa0, 0xa8,
- 0x00, 0x91, 0x3c, 0x89, 0x03, 0x2f, 0x62, 0xf1, 0x19, 0x51, 0x24, 0x3d,
- 0x84, 0x29, 0x4f, 0x03, 0xfe, 0xf5, 0xba, 0xae, 0xb1, 0x93, 0x91, 0x08,
- 0x03, 0x3d, 0xea, 0x0d, 0x2d, 0x05, 0x3d, 0x12, 0x9c, 0x3e, 0x4f, 0x4d,
- 0x03, 0xd5, 0x12, 0xc0, 0xa2, 0xad, 0x87, 0x86, 0xb4, 0x2e, 0xcb, 0xb3,
- 0x00, 0x3c, 0xac, 0xb4, 0xad, 0x69, 0x05, 0x05, 0xb3, 0x56, 0xf3, 0x72,
- 0x8c, 0x09, 0xbe, 0xf2, 0x45, 0x7a, 0x08, 0xe9, 0x43, 0x12, 0x48, 0x5a,
- 0x56, 0xe4, 0xcc, 0x63, 0xad, 0xba, 0x1f, 0x49, 0xb5, 0x17, 0x85, 0x44,
- 0xbd, 0xf9, 0x36, 0xa2, 0xd9, 0x32, 0xf5, 0x14, 0x1a, 0x9e, 0xda, 0xf6,
- 0x4e, 0x70, 0x44, 0x49, 0x64, 0xec, 0x29, 0x14, 0x71, 0x63, 0x35, 0xcd,
- 0x66, 0x33, 0xad, 0x83, 0xf9, 0x28, 0x85, 0x73, 0x3c, 0x50, 0xef, 0xa2,
- 0x0a, 0xb6, 0xe3, 0x4d, 0xa8, 0x1d, 0x54, 0xbe, 0xda, 0xcb, 0x80, 0xe0,
- 0x02, 0xe8, 0x16, 0xb0, 0xf2, 0xcb, 0xb6, 0xbf, 0x2b, 0xf4, 0x3f, 0x8a,
- 0xff, 0xab, 0xef, 0x85, 0xd7, 0x72, 0xf2, 0x40, 0xf9, 0x61, 0x42, 0x17,
- 0x50, 0x9f, 0x67, 0xd5, 0x35, 0x57, 0x1f, 0x30, 0xd8, 0x6b, 0x14, 0x9f,
- 0x22, 0x4d, 0x3c, 0xfc, 0xb5, 0x24, 0xf9, 0xd7, 0x01, 0xdf, 0xa8, 0x70,
- 0x55, 0x2d, 0xa9, 0xa6, 0x55, 0xfc, 0xe9, 0x9b, 0x83, 0x29, 0x8b, 0x95,
- 0x69, 0x5a, 0x98, 0x99, 0x30, 0x27, 0x36, 0x4c, 0x8b, 0x99, 0xcd, 0x5e,
- 0xcd, 0xca, 0x65, 0x7d, 0xbf, 0x99, 0x08, 0x6d, 0x89, 0x20, 0xfd, 0x37,
- 0x92, 0xc2, 0x43, 0x6b, 0x69, 0xd6, 0x77, 0x59, 0x7c, 0xd4, 0x4b, 0x91,
- 0x0a, 0x14, 0x6a, 0x76, 0xd4, 0x76, 0x9a, 0xdb, 0xf4, 0x3e, 0xf6, 0xaf,
- 0x7e, 0xdb, 0xd1, 0x59, 0x86, 0xfb, 0x9f, 0x0d, 0xe7, 0xc7, 0x59, 0xce,
- 0x2e, 0x24, 0x13, 0x33, 0x9b, 0x93, 0x56, 0xa4, 0xce, 0x36, 0x48, 0x97,
- 0x07, 0x03, 0xec, 0x6a, 0xc8, 0xc1, 0x65, 0x6c, 0x40, 0xde, 0xac, 0xa8,
- 0x39, 0x71, 0x37, 0x0f, 0x07, 0x94, 0x1c, 0x26, 0x1e, 0x83, 0x93, 0x58,
- 0x9a, 0x0f, 0xbf, 0xb8, 0x6d, 0x98, 0x9c, 0x9b, 0xf9, 0x0a, 0x40, 0x24,
- 0x28, 0x80, 0x6d, 0x9b, 0x4b, 0x7d, 0x38, 0x53, 0xff, 0x27, 0x48, 0x26,
- 0x47, 0x81, 0x40, 0xd2, 0xb2, 0xcc, 0x03, 0x4b, 0x13, 0x96, 0x3a, 0xaa,
- 0x4e, 0xd4, 0x98, 0xb7, 0x4e, 0x77, 0xc2, 0x4f, 0x27, 0xc0, 0x0e, 0xca,
- 0x67, 0x50, 0x6b, 0x98, 0xc3, 0x16, 0xd6, 0x26, 0xfe, 0x6a, 0x55, 0x0d,
- 0x1a, 0xcd, 0x46, 0x4c, 0x04, 0x78, 0x47, 0x1e, 0x79, 0x7e, 0x9e, 0x44,
- 0x89, 0x84, 0x26, 0x39, 0x91, 0x74, 0x4d, 0x12, 0x9a, 0x7f, 0xb2, 0xbd,
- 0xbb, 0xc6, 0x19, 0x5c, 0xdd, 0x0b, 0x68, 0xb5, 0xfb, 0xd5, 0x81, 0xd2,
- 0x3a, 0x01, 0xc8, 0xaf, 0x9f, 0xc0, 0xe7, 0x00, 0xf6, 0x4f, 0xd6, 0xf4,
- 0x06, 0x97, 0xf8, 0x09, 0x3b, 0x10, 0x07, 0x91, 0xed, 0xd3, 0xb2, 0x00,
- 0xb3, 0x59, 0x76, 0xcd, 0x43, 0x7e, 0x79, 0x7a, 0xfc, 0xfd, 0xf1, 0x69,
- 0x70, 0xb5, 0x7d, 0x33, 0x1a, 0xed, 0x7c, 0xcc, 0xaa, 0x31, 0x38, 0x22,
- 0x69, 0x78, 0xe4, 0xae, 0xa4, 0x27, 0x6d, 0xf6, 0x95, 0x27, 0xf1, 0x95,
- 0xd5, 0x0b, 0xf2, 0x17, 0x56, 0x55, 0x98, 0xcb, 0x21, 0x9f, 0x14, 0x90,
- 0x75, 0x54, 0x03, 0x49, 0x9a, 0x1f, 0xee, 0xaf, 0x49, 0x95, 0x4d, 0x99,
- 0x42, 0x31, 0x4c, 0xf0, 0x03, 0xae, 0x46, 0x92, 0xbc, 0xc6, 0x32, 0x73,
- 0x92, 0x37, 0x82, 0x4c, 0x76, 0x10, 0xc1, 0x1b, 0x0b, 0xd4, 0xae, 0x27,
- 0xaf, 0xe5, 0x9b, 0x35, 0x9d, 0x0c, 0x9a, 0x25, 0x06, 0x55, 0x63, 0x3b,
- 0xe2, 0xec, 0xbb, 0xc1, 0xe1, 0x68, 0xf0, 0xfa, 0xf8, 0xf4, 0xf8, 0x9b,
- 0xc3, 0xcb, 0x63, 0xc6, 0x12, 0x57, 0x80, 0xe1, 0xb8, 0x22, 0x62, 0xef,
- 0xe5, 0xef, 0x64, 0x62, 0xf8, 0xce, 0x26, 0x30, 0x7a, 0x62, 0x8f, 0x05,
- 0x47, 0x84, 0x03, 0x3a, 0x4d, 0xc9, 0x74, 0x69, 0x5a, 0x24, 0xae, 0xdd,
- 0x24, 0x34, 0x73, 0x59, 0x49, 0x57, 0x83, 0x11, 0xa4, 0xb3, 0x3b, 0xe2,
- 0x89, 0x7a, 0x5f, 0x50, 0x96, 0x7b, 0x6e, 0x0b, 0x39, 0x79, 0xf4, 0xbe,
- 0xd7, 0xc6, 0xcd, 0x6c, 0x6b, 0x81, 0x81, 0x0b, 0x1f, 0xd7, 0x57, 0xb4,
- 0x06, 0x1b, 0x21, 0xde, 0xd7, 0x78, 0xb0, 0x03, 0xf0, 0xed, 0x70, 0xc9,
- 0xc1, 0x51, 0x21, 0xbf, 0x8b, 0xc0, 0x85, 0xe0, 0xcc, 0xd4, 0x93, 0x9b,
- 0x6c, 0x6e, 0x81, 0xb0, 0x28, 0x83, 0x00, 0xb1, 0x6a, 0x2e, 0x7c, 0x14,
- 0xc0, 0x1e, 0x88, 0x81, 0x71, 0x06, 0x9b, 0x17, 0x71, 0xb3, 0xdb, 0x40,
- 0xf2, 0x23, 0x1d, 0x87, 0xe0, 0xfe, 0x29, 0x1c, 0x42, 0x09, 0x35, 0xa8,
- 0xee, 0x1d, 0x22, 0xf5, 0xcf, 0x0b, 0xed, 0x87, 0xa1, 0x7c, 0x21, 0x33,
- 0xeb, 0xaa, 0x05, 0x16, 0x3e, 0xdc, 0x62, 0x9d, 0x97, 0x70, 0x6f, 0xe1,
- 0x47, 0x10, 0xa5, 0xaa, 0x17, 0x53, 0x0f, 0x7f, 0x8d, 0x1f, 0xaa, 0xeb,
- 0x88, 0xc2, 0xae, 0x72, 0x55, 0x8f, 0x28, 0xbe, 0x89, 0x25, 0x54, 0xaf,
- 0x11, 0x1a, 0xae, 0xb3, 0x2c, 0x1c, 0x18, 0xd6, 0x7c, 0x2a, 0x8b, 0x83,
- 0x1f, 0x09, 0x09, 0xc0, 0xd0, 0x95, 0x64, 0x44, 0xdd, 0xed, 0x9e, 0xc8,
- 0x68, 0x31, 0x05, 0x10, 0x42, 0xbb, 0xfe, 0x35, 0xe4, 0x73, 0xb0, 0x55,
- 0x70, 0x83, 0x6c, 0x11, 0xc0, 0x65, 0x6f, 0xbd, 0x51, 0xf4, 0x7b, 0xab,
- 0xff, 0xf9, 0xd4, 0x4f, 0x1e, 0x53, 0xcb, 0xf1, 0xf9, 0x05, 0x93, 0x3d,
- 0x9f, 0xd2, 0x5f, 0x24, 0x3a, 0x56, 0xc7, 0xd0, 0xe7, 0x84, 0x7b, 0x83,
- 0x12, 0x46, 0x32, 0x84, 0x57, 0x6c, 0xc0, 0x5b, 0xf3, 0x04, 0x39, 0x35,
- 0x54, 0x60, 0xce, 0xe5, 0x38, 0x60, 0x82, 0x83, 0xbc, 0x7c, 0x4b, 0x10,
- 0x89, 0xae, 0x50, 0x1f, 0x04, 0x20, 0x08, 0xbd, 0xe0, 0xfc, 0x56, 0x8d,
- 0x62, 0x9c, 0xd1, 0x2f, 0x49, 0x29, 0x94, 0xed, 0xb3, 0x42, 0xf2, 0xba,
- 0x5a, 0x27, 0x6a, 0x92, 0xde, 0x4a, 0x2a, 0x50, 0x4b, 0xa6, 0xa6, 0x1f,
- 0x43, 0x37, 0x4e, 0xfe, 0x04, 0x3b, 0x95, 0x01, 0x7a, 0x19, 0xc6, 0x2c,
- 0x50, 0x3a, 0x6e, 0xf5, 0x7e, 0xcd, 0x19, 0xe7, 0x9c, 0x58, 0x9b, 0x0b,
- 0xdf, 0x17, 0x50, 0x20, 0x89, 0x0b, 0x53, 0x32, 0x7f, 0x59, 0xf8, 0x9c,
- 0x46, 0x2d, 0x1b, 0xa1, 0xd6, 0x24, 0xb1, 0xec, 0x5e, 0x42, 0xdb, 0xac,
- 0xb4, 0x5d, 0x49, 0x08, 0x31, 0x05, 0x9c, 0x2b, 0xcc, 0x8f, 0x31, 0x6b,
- 0x19, 0x48, 0xb8, 0xbb, 0x49, 0x8b, 0xc8, 0x99, 0x33, 0x13, 0x6f, 0x29,
- 0x9a, 0x30, 0x50, 0x59, 0xb6, 0x88, 0xa2, 0x4d, 0x7b, 0xa3, 0x0b, 0x2a,
- 0x65, 0x8c, 0x31, 0x23, 0xc0, 0x72, 0x8a, 0x3d, 0x48, 0x57, 0x78, 0x72,
- 0x08, 0xc2, 0x48, 0xf7, 0x5b, 0x19, 0xdb, 0x55, 0x2c, 0x5d, 0xbc, 0x88,
- 0x48, 0x6b, 0x0b, 0xae, 0xca, 0xef, 0xb3, 0xbe, 0x73, 0x94, 0xbe, 0x78,
- 0x88, 0xb6, 0x44, 0x78, 0xda, 0xae, 0x8d, 0x61, 0x9d, 0x13, 0x17, 0xbe,
- 0x99, 0xd5, 0x6e, 0x85, 0x0d, 0xd7, 0x43, 0x98, 0x6f, 0xa3, 0xbb, 0xe4,
- 0xaa, 0xb1, 0x51, 0x53, 0xda, 0x3b, 0xc1, 0xf7, 0x5f, 0xa3, 0x73, 0xd0,
- 0x3a, 0xf1, 0x06, 0x0e, 0x3d, 0x21, 0xff, 0x5c, 0x8b, 0x21, 0x25, 0x7b,
- 0x79, 0x9c, 0x99, 0x2f, 0xe6, 0xc4, 0xc9, 0xd5, 0xf2, 0xd5, 0x77, 0xbf,
- 0x5f, 0x9b, 0xfd, 0x37, 0xb9, 0x51, 0x53, 0x8a, 0x5e, 0x9c, 0x93, 0x6a,
- 0xe0, 0x71, 0xd9, 0x61, 0x27, 0x88, 0x42, 0x72, 0x8e, 0xbb, 0x9d, 0x42,
- 0x8e, 0x48, 0x3c, 0x4c, 0xca, 0x2a, 0xac, 0x4e, 0x9d, 0x58, 0xa4, 0x23,
- 0x7d, 0x34, 0xad, 0x6f, 0xe3, 0x27, 0xbc, 0xbe, 0x8d, 0x9e, 0x70, 0xfd,
- 0x03, 0x27, 0xdd, 0x63, 0x18, 0x5c, 0x75, 0xd6, 0x47, 0xdf, 0xaf, 0x80,
- 0x6c, 0xf0, 0x4e, 0xb8, 0x8e, 0x0e, 0xbb, 0xdd, 0x3b, 0xe3, 0x7c, 0xc8,
- 0x65, 0x8d, 0xec, 0x31, 0x97, 0x73, 0x1e, 0xf5, 0xe1, 0xfb, 0xc4, 0xa0,
- 0x7c, 0xce, 0xcd, 0xf7, 0xe5, 0x70, 0x9f, 0x1f, 0x8e, 0xbe, 0xef, 0x1c,
- 0x6b, 0xef, 0x20, 0xc7, 0x00, 0x2e, 0x40, 0xd7, 0x57, 0x29, 0xea, 0x2d,
- 0xb5, 0x15, 0xdd, 0xef, 0xf5, 0xed, 0x63, 0xf6, 0xbb, 0xe9, 0x48, 0xb0,
- 0xdf, 0x83, 0x39, 0x5e, 0xb7, 0xdf, 0xfd, 0x85, 0x6a, 0xdd, 0x3f, 0x59,
- 0xe2, 0xef, 0xf8, 0x82, 0x69, 0x7d, 0x6f, 0x40, 0x47, 0x1f, 0x6c, 0x75,
- 0xec, 0x74, 0x8a, 0xf6, 0x61, 0x6b, 0x87, 0xe9, 0x7e, 0xe8, 0xe7, 0xaf,
- 0xd9, 0xe8, 0x78, 0x21, 0xd8, 0xe7, 0xba, 0xa2, 0xbf, 0x7a, 0xa3, 0xcb,
- 0x01, 0x09, 0xf6, 0x39, 0xac, 0xd6, 0xf3, 0xbe, 0xb7, 0xc1, 0xbd, 0x5d,
- 0xeb, 0x57, 0x68, 0x47, 0x66, 0xc8, 0xc2, 0x7d, 0xb8, 0xeb, 0xd7, 0x81,
- 0x2d, 0x44, 0xc0, 0x3d, 0xfa, 0xb6, 0x0c, 0xb6, 0x9a, 0x84, 0x2e, 0x77,
- 0x5b, 0x94, 0xed, 0xd7, 0x25, 0xc0, 0xda, 0x92, 0x4c, 0x66, 0x63, 0xff,
- 0xd0, 0x9d, 0x0d, 0x0b, 0xde, 0x2f, 0xf5, 0xf7, 0x79, 0xf5, 0xda, 0x68,
- 0x4f, 0xda, 0x89, 0x58, 0xe1, 0x78, 0x9d, 0x51, 0x2e, 0x06, 0x40, 0xc0,
- 0xba, 0xe7, 0x94, 0xd4, 0x3c, 0xe8, 0x03, 0xa4, 0xa8, 0x0c, 0x8c, 0x11,
- 0x12, 0x66, 0x28, 0xb7, 0x43, 0xc1, 0x0d, 0xb0, 0x61, 0x3d, 0xab, 0x8f,
- 0x4a, 0x08, 0x49, 0xd5, 0x95, 0x60, 0x44, 0x9a, 0x48, 0xe5, 0x22, 0x39,
- 0xee, 0x71, 0xf5, 0x46, 0x6a, 0x5d, 0xa3, 0xf8, 0x66, 0x6d, 0xb2, 0x95,
- 0xa6, 0x6c, 0x39, 0xcc, 0x9e, 0x77, 0x30, 0x84, 0xa7, 0x45, 0x3d, 0x70,
- 0x84, 0xd1, 0x2f, 0xed, 0x5f, 0x03, 0xfb, 0xe2, 0xf5, 0xbb, 0x51, 0x47,
- 0xa5, 0xa8, 0x33, 0xae, 0xdb, 0xb8, 0x86, 0xdc, 0x30, 0xbf, 0xb7, 0xb5,
- 0x56, 0xb5, 0xa3, 0x68, 0x93, 0x26, 0x43, 0xec, 0x7a, 0xf3, 0x89, 0x61,
- 0xa7, 0x58, 0x55, 0x2a, 0x84, 0xc1, 0x71, 0x0e, 0x47, 0x26, 0xf9, 0x91,
- 0xbc, 0xde, 0x49, 0xb5, 0x39, 0x79, 0x87, 0x62, 0x08, 0x43, 0x7c, 0x41,
- 0x50, 0x3f, 0x95, 0x2b, 0x76, 0xc1, 0x68, 0xe8, 0x82, 0xff, 0x65, 0xd9,
- 0xa5, 0x48, 0x35, 0xb4, 0x8d, 0xc6, 0x42, 0x4d, 0x5b, 0x82, 0x58, 0x24,
- 0x79, 0x5d, 0xdb, 0xd1, 0x29, 0x16, 0x92, 0x70, 0x99, 0xc2, 0xc5, 0xed,
- 0xd3, 0x01, 0x3d, 0x9e, 0xa8, 0xb1, 0xc8, 0x3f, 0x7c, 0x8e, 0x1f, 0x0e,
- 0xbb, 0x13, 0x1d, 0x54, 0xb7, 0x08, 0xa1, 0xa3, 0xf5, 0x9c, 0x2e, 0x8b,
- 0x29, 0x91, 0x5e, 0x50, 0xb7, 0x95, 0xc2, 0x80, 0x70, 0x0a, 0x1d, 0x6b,
- 0x8c, 0x85, 0x23, 0x32, 0x5b, 0x28, 0xa8, 0xe3, 0xaa, 0x90, 0xba, 0xef,
- 0x16, 0xfd, 0xc9, 0x93, 0xc8, 0xa2, 0xdb, 0x1e, 0xbf, 0x94, 0x61, 0x3e,
- 0x62, 0xc9, 0xc7, 0x39, 0xb3, 0x4b, 0xbd, 0xcc, 0x17, 0x03, 0x7d, 0x8b,
- 0x2f, 0x8f, 0x79, 0xfa, 0x51, 0x2e, 0xf5, 0xa7, 0xd8, 0x0a, 0xa1, 0x93,
- 0x40, 0xd9, 0x5f, 0xfd, 0x38, 0x15, 0x3f, 0x29, 0x7b, 0x46, 0x34, 0xad,
- 0x26, 0x73, 0x35, 0xe9, 0x80, 0x63, 0xe5, 0xef, 0xc4, 0xca, 0xb1, 0x34,
- 0x83, 0xda, 0xf7, 0xc3, 0x68, 0xe9, 0x05, 0x7a, 0x62, 0xdf, 0x7d, 0x70,
- 0xfd, 0xdc, 0x7e, 0x58, 0xb7, 0x7e, 0x3a, 0x67, 0xff, 0x67, 0xac, 0xdf,
- 0xf3, 0x3f, 0x64, 0xfd, 0x9e, 0xff, 0x1f, 0xb3, 0x7e, 0xcf, 0xff, 0xf1,
- 0xf5, 0x7b, 0xda, 0x5d, 0xbf, 0xe7, 0xff, 0xa7, 0xac, 0x9f, 0xb2, 0x9b,
- 0xe9, 0xea, 0x65, 0xc1, 0xfa, 0x8d, 0x24, 0xb5, 0x43, 0x61, 0xf1, 0x68,
- 0xb2, 0xf5, 0x2d, 0x0e, 0xa4, 0x48, 0x32, 0x22, 0x7b, 0xaa, 0x35, 0x1f,
- 0x96, 0x81, 0x19, 0x57, 0xd0, 0x85, 0x08, 0xe5, 0x95, 0x36, 0x79, 0x72,
- 0x9e, 0xd8, 0xcf, 0x7b, 0x8b, 0xe0, 0x40, 0xae, 0xc4, 0xbd, 0x1b, 0x75,
- 0x23, 0xd7, 0xe4, 0x5b, 0x34, 0x13, 0xc0, 0x95, 0x8f, 0xb5, 0xab, 0xd7,
- 0x8d, 0xe1, 0x58, 0x99, 0xc9, 0x3b, 0x78, 0x49, 0xf3, 0x35, 0xe0, 0xc7,
- 0xbf, 0x8c, 0xd6, 0xa1, 0x81, 0x40, 0xd6, 0x75, 0x2a, 0x16, 0x3a, 0xf0,
- 0xa6, 0xee, 0xd1, 0xcb, 0xb6, 0x8a, 0x6b, 0x4b, 0x97, 0x70, 0x32, 0x78,
- 0x78, 0xc9, 0xca, 0x1b, 0x40, 0xec, 0xbc, 0x7c, 0x7f, 0x11, 0xfa, 0xde,
- 0xcc, 0x50, 0x6d, 0x45, 0x9e, 0x43, 0x26, 0x34, 0xeb, 0x35, 0x20, 0xe3,
- 0x7e, 0x00, 0x90, 0x76, 0x73, 0x1c, 0xcf, 0xbe, 0xdd, 0xf6, 0xbc, 0x40,
- 0x88, 0x2c, 0x94, 0x91, 0x83, 0xc6, 0x15, 0xb1, 0x5a, 0xf4, 0x5d, 0xf7,
- 0xfd, 0x15, 0x76, 0x79, 0xe9, 0x99, 0xc3, 0xc1, 0x66, 0xe7, 0x48, 0x22,
- 0xb5, 0xb4, 0x55, 0xc0, 0x2e, 0x49, 0xca, 0x60, 0x5e, 0x0b, 0x66, 0x1b,
- 0x21, 0x5c, 0xe8, 0x4d, 0x88, 0x8e, 0xfd, 0x81, 0x9c, 0x31, 0xaf, 0xa1,
- 0x0b, 0x2e, 0xe7, 0x0b, 0xa9, 0xea, 0x7d, 0xa0, 0xaa, 0x11, 0x26, 0xf6,
- 0x76, 0xf2, 0x03, 0x4a, 0x16, 0xd9, 0xc7, 0x2e, 0xa5, 0x3e, 0x6a, 0x75,
- 0xdb, 0xfa, 0x06, 0x0d, 0x60, 0xad, 0x80, 0x1d, 0x8b, 0xc2, 0x40, 0x75,
- 0x0a, 0xf6, 0xb9, 0x26, 0x45, 0xb1, 0xcb, 0x49, 0x06, 0x7a, 0x3a, 0xb1,
- 0x94, 0x1a, 0xf0, 0x3c, 0xcb, 0x47, 0xa3, 0xd0, 0xd7, 0xa4, 0x4c, 0x70,
- 0x99, 0x13, 0x75, 0x9a, 0xd1, 0xfb, 0xcc, 0xeb, 0xa6, 0xa9, 0xa1, 0xd4,
- 0x3a, 0xd5, 0x2e, 0x5a, 0xac, 0xbd, 0x07, 0xae, 0x52, 0x2c, 0x43, 0x5f,
- 0xb5, 0x57, 0x78, 0x02, 0x04, 0x31, 0xc3, 0x42, 0x22, 0x15, 0xb7, 0xb6,
- 0xf6, 0x65, 0x7c, 0xdf, 0xde, 0x09, 0x83, 0x71, 0x58, 0xbf, 0xa6, 0x19,
- 0xd2, 0x3c, 0xe2, 0x7f, 0xc1, 0xe2, 0xaf, 0xa8, 0x8d, 0x60, 0xcd, 0xcb,
- 0xf7, 0x3c, 0x04, 0x27, 0xc5, 0xaf, 0xbc, 0x18, 0x6e, 0xac, 0xcb, 0x8c,
- 0xe6, 0x94, 0xdb, 0x9b, 0xcc, 0xaf, 0x21, 0xb6, 0x98, 0x8b, 0x1c, 0x1c,
- 0x60, 0xf7, 0x8b, 0x19, 0x9c, 0x24, 0x88, 0x06, 0x08, 0x61, 0xc0, 0x08,
- 0x90, 0xd9, 0xea, 0x09, 0xa6, 0xd1, 0x52, 0xb0, 0x56, 0x53, 0xda, 0x10,
- 0xc0, 0xdd, 0xf9, 0x27, 0xd6, 0xec, 0x7a, 0x09, 0xd3, 0xbe, 0x54, 0xc8,
- 0xae, 0x39, 0x2a, 0xbe, 0x2e, 0x39, 0xb7, 0x03, 0x3f, 0xc6, 0x74, 0xc2,
- 0x16, 0x80, 0x0c, 0x86, 0x79, 0xd1, 0x54, 0xe5, 0xe2, 0x3e, 0xf9, 0x26,
- 0xa5, 0x61, 0x41, 0x99, 0x4e, 0xb3, 0x79, 0x50, 0xb1, 0xc5, 0x04, 0xc3,
- 0xa2, 0xdb, 0x32, 0xd9, 0xb0, 0x8e, 0x10, 0xda, 0x38, 0x4f, 0x8b, 0x91,
- 0x03, 0x66, 0xbe, 0xe8, 0xfa, 0x95, 0x6a, 0x0a, 0xce, 0x48, 0x1e, 0x8d,
- 0x4e, 0x43, 0xf3, 0x49, 0x99, 0x7c, 0xd6, 0x56, 0xe8, 0xa3, 0xb5, 0x41,
- 0x37, 0x20, 0x21, 0x8d, 0xbf, 0x8c, 0x1e, 0x66, 0x19, 0x77, 0x36, 0x53,
- 0x04, 0x0b, 0x05, 0x4e, 0x9f, 0x54, 0xf7, 0x0b, 0x32, 0xc9, 0xa5, 0x24,
- 0x95, 0xcf, 0x1e, 0xf5, 0x8f, 0x51, 0x4f, 0xd7, 0x16, 0x01, 0xbf, 0xaf,
- 0x3d, 0xf0, 0x70, 0x5c, 0x60, 0xe4, 0x8b, 0x21, 0x14, 0x60, 0x82, 0x7a,
- 0x92, 0x0b, 0x8d, 0x24, 0xfd, 0x14, 0xd8, 0x26, 0x2b, 0x49, 0xbd, 0x84,
- 0xaa, 0xab, 0x43, 0x07, 0x01, 0xdf, 0x0d, 0x6a, 0x9c, 0x89, 0x72, 0x00,
- 0x11, 0x8c, 0x6d, 0xbd, 0x52, 0xe5, 0x8d, 0x0e, 0x59, 0xbc, 0x5e, 0x5c,
- 0x96, 0x2d, 0x20, 0x25, 0xbc, 0x83, 0x22, 0x00, 0x56, 0xe1, 0xe4, 0x87,
- 0xbd, 0xdd, 0xdd, 0x07, 0x11, 0x73, 0xc4, 0x40, 0x5c, 0x0b, 0x9c, 0x43,
- 0x32, 0x8a, 0x63, 0x0a, 0xb6, 0xc2, 0x3b, 0xcd, 0xa5, 0x8e, 0xa7, 0x8b,
- 0x31, 0x66, 0x3e, 0x69, 0x01, 0x6c, 0xdc, 0x11, 0x64, 0x59, 0xc7, 0xc0,
- 0x52, 0x80, 0xcf, 0x31, 0x22, 0xec, 0x18, 0x7d, 0xac, 0x0f, 0x5a, 0xef,
- 0x44, 0x39, 0x94, 0xa9, 0x43, 0xf4, 0x92, 0x68, 0x7d, 0xc3, 0xe4, 0xeb,
- 0x7b, 0x67, 0x2a, 0x7b, 0x1e, 0x22, 0xf4, 0x0a, 0x27, 0x4c, 0xfa, 0x3f,
- 0x5c, 0x07, 0x53, 0x14, 0x47, 0xc5, 0xf9, 0x17, 0x16, 0x2c, 0x68, 0xd6,
- 0x08, 0xa0, 0x45, 0x8d, 0x56, 0x01, 0xae, 0x11, 0xf7, 0x11, 0xd9, 0xd1,
- 0xa6, 0x75, 0xc0, 0x2a, 0xe4, 0x11, 0x04, 0xf1, 0xa5, 0xb2, 0x16, 0xc0,
- 0xb8, 0x8d, 0x71, 0xd4, 0x4e, 0xce, 0xfc, 0xac, 0xad, 0x19, 0x50, 0xa1,
- 0xf1, 0x00, 0xe5, 0xc4, 0x5d, 0x0c, 0x05, 0xaa, 0x40, 0x26, 0xd9, 0x05,
- 0xcb, 0xbe, 0x2c, 0x3c, 0x97, 0x07, 0x61, 0x6b, 0x71, 0x42, 0x8c, 0x96,
- 0x20, 0x75, 0x50, 0x5b, 0x7d, 0xc1, 0xaa, 0x50, 0xf3, 0x7a, 0xd2, 0xa7,
- 0xa5, 0x87, 0xe4, 0x64, 0xab, 0xce, 0x3a, 0xbe, 0x13, 0x76, 0x9e, 0x84,
- 0x20, 0x11, 0x9c, 0x58, 0xeb, 0x1c, 0x73, 0x5c, 0x36, 0x8d, 0xa4, 0x01,
- 0x28, 0x5f, 0xac, 0xad, 0x19, 0x25, 0xa1, 0x9f, 0x08, 0xf5, 0x36, 0xe5,
- 0x51, 0xf3, 0x2a, 0x47, 0x35, 0x4a, 0xe7, 0x78, 0x67, 0x48, 0x49, 0x1e,
- 0x49, 0xed, 0xc0, 0xd1, 0x48, 0x68, 0x33, 0x49, 0x98, 0x69, 0xb5, 0xb6,
- 0x19, 0x53, 0xa1, 0x13, 0xd2, 0xab, 0x57, 0x36, 0x4f, 0x12, 0x5e, 0x4b,
- 0xbd, 0x84, 0xcb, 0x98, 0x9b, 0xb7, 0x78, 0x64, 0x7c, 0x26, 0xb9, 0x8e,
- 0x9b, 0x5c, 0x53, 0x52, 0x98, 0x1a, 0x0d, 0x4a, 0x13, 0x94, 0x61, 0x82,
- 0xc5, 0x41, 0x41, 0xf8, 0xb2, 0xf2, 0x42, 0xd3, 0xbd, 0x9b, 0xdc, 0xac,
- 0x6a, 0xd1, 0x03, 0x4c, 0xe2, 0x72, 0xcc, 0xf8, 0x9b, 0x8d, 0x7e, 0x34,
- 0x18, 0xec, 0x72, 0xe6, 0xb9, 0x43, 0xe3, 0xbc, 0xda, 0xad, 0xf8, 0x53,
- 0x3f, 0x69, 0x1d, 0x08, 0x55, 0xe2, 0x38, 0xaf, 0xdd, 0x95, 0xa2, 0xf3,
- 0xba, 0x45, 0x1d, 0xa8, 0xae, 0x3e, 0x8d, 0x4e, 0x3e, 0xa8, 0xa8, 0xfa,
- 0x3e, 0x0f, 0x8c, 0xcb, 0x77, 0x49, 0xe7, 0xe4, 0x35, 0xe1, 0x04, 0x18,
- 0x9a, 0xe5, 0xb8, 0xaa, 0x52, 0x59, 0x00, 0x93, 0x08, 0x88, 0xae, 0x64,
- 0xbc, 0xa5, 0xf7, 0x28, 0xc6, 0xb1, 0x9f, 0xc6, 0xee, 0x0e, 0xe0, 0xd0,
- 0x08, 0x1a, 0xb0, 0x84, 0xb6, 0x2d, 0xfb, 0x98, 0xa6, 0x70, 0x52, 0xe5,
- 0x8b, 0x86, 0xd3, 0x00, 0x24, 0xe7, 0xf8, 0x21, 0x15, 0xec, 0x7a, 0x56,
- 0x8e, 0x53, 0x3e, 0x23, 0x36, 0xe5, 0x47, 0x9d, 0x8c, 0x2d, 0x84, 0x5e,
- 0x12, 0x6f, 0xb4, 0x3d, 0x23, 0x0c, 0x03, 0x66, 0xc8, 0x83, 0x03, 0xd0,
- 0xa1, 0x53, 0xf0, 0x71, 0xdd, 0x07, 0xed, 0x27, 0x18, 0x0c, 0x6f, 0x70,
- 0xd5, 0x97, 0xd3, 0xab, 0xc5, 0xca, 0xc8, 0x98, 0xaa, 0xbd, 0x33, 0x15,
- 0xa8, 0x41, 0x00, 0x15, 0x98, 0x2e, 0xb3, 0x76, 0x02, 0xd5, 0xa6, 0x84,
- 0x66, 0x85, 0xc3, 0x0d, 0x49, 0x3c, 0x16, 0x9a, 0x5f, 0x42, 0xa0, 0xd1,
- 0xe4, 0x20, 0x42, 0xc4, 0x95, 0x64, 0x9e, 0xbe, 0x51, 0xf8, 0xef, 0x50,
- 0xb8, 0x50, 0xd0, 0xad, 0xe4, 0x3a, 0xa7, 0x49, 0xa9, 0xde, 0x5c, 0x31,
- 0xcc, 0x40, 0xb8, 0xe3, 0xaf, 0x58, 0x47, 0x83, 0xc7, 0x90, 0xd7, 0x64,
- 0xcd, 0xcc, 0xf8, 0xb0, 0xda, 0xfb, 0x2d, 0x89, 0x66, 0x3f, 0x1d, 0xbf,
- 0x9e, 0x20, 0xd6, 0x6a, 0xd2, 0xe3, 0xc9, 0xa5, 0xbe, 0x65, 0x36, 0x8b,
- 0x14, 0x85, 0xa5, 0x88, 0xf5, 0x03, 0x29, 0x52, 0xf9, 0xeb, 0x58, 0x16,
- 0xc4, 0x0b, 0xd6, 0xe8, 0xa4, 0x50, 0xea, 0xd7, 0xec, 0x1e, 0xb5, 0x1a,
- 0xbc, 0xe6, 0xd0, 0x40, 0xc5, 0x4d, 0xaf, 0x1b, 0x2a, 0x6b, 0x26, 0xde,
- 0x2f, 0xa7, 0x59, 0x3a, 0x8b, 0xd1, 0x43, 0x50, 0x87, 0xc9, 0x6d, 0xca,
- 0xa2, 0x8d, 0x40, 0x43, 0x0a, 0x09, 0x53, 0x48, 0xea, 0x31, 0x27, 0xdf,
- 0x15, 0x52, 0x28, 0xad, 0x3d, 0xc4, 0xa9, 0x8a, 0x98, 0x86, 0x44, 0x58,
- 0x83, 0x07, 0x50, 0x52, 0x3b, 0x91, 0x42, 0x7d, 0xc0, 0xbf, 0xb9, 0xca,
- 0x14, 0xe8, 0xfe, 0x6f, 0x4f, 0xed, 0x03, 0xd8, 0x01, 0x08, 0x99, 0x77,
- 0x9b, 0x13, 0xd7, 0x25, 0x97, 0x4b, 0xe2, 0x92, 0xd1, 0x6a, 0x06, 0xea,
- 0x18, 0xa7, 0x9d, 0x90, 0x90, 0xdc, 0x96, 0x73, 0xc8, 0xc9, 0x0d, 0x2c,
- 0x39, 0x16, 0xe1, 0x4a, 0xdf, 0x66, 0x9a, 0x30, 0x04, 0xdb, 0x82, 0x17,
- 0xa0, 0xb1, 0x35, 0xa4, 0xd4, 0x9a, 0xc8, 0x19, 0x16, 0x32, 0xfb, 0xfb,
- 0x2b, 0xb0, 0x44, 0x84, 0x18, 0x5c, 0xf6, 0x18, 0x0e, 0x7b, 0x9d, 0x5e,
- 0x65, 0x0a, 0x23, 0x2a, 0xe2, 0xbb, 0x9c, 0x98, 0x29, 0x44, 0x5c, 0x14,
- 0x10, 0x3d, 0xa4, 0x1d, 0x05, 0x46, 0x2b, 0x4b, 0x4d, 0x92, 0x92, 0xf6,
- 0xca, 0xa5, 0x83, 0x20, 0xe2, 0xb6, 0x9e, 0xe5, 0x0b, 0xf5, 0x09, 0xf7,
- 0x93, 0x4c, 0xb2, 0x79, 0x08, 0xef, 0x17, 0xab, 0xb2, 0x1c, 0x44, 0xac,
- 0x21, 0xcb, 0x5e, 0x2e, 0x60, 0xb0, 0x33, 0x52, 0xfc, 0xb7, 0x3a, 0xad,
- 0x3f, 0xdd, 0xdd, 0x43, 0x67, 0x9f, 0xee, 0x7e, 0xb6, 0xdd, 0xbe, 0x95,
- 0x67, 0x75, 0x36, 0x40, 0x2e, 0x57, 0x5c, 0x3b, 0xbd, 0xec, 0xf8, 0xdf,
- 0xa1, 0x89, 0xd2, 0x4b, 0x92, 0x00, 0x36, 0x5d, 0x56, 0x9a, 0x15, 0x49,
- 0xac, 0x7d, 0x64, 0x2d, 0xd6, 0x37, 0x84, 0x41, 0x18, 0xdc, 0xf2, 0xee,
- 0x1d, 0x4e, 0x22, 0xa1, 0x3b, 0x89, 0xe7, 0x29, 0xc5, 0xab, 0xc2, 0x08,
- 0xc6, 0xf3, 0x80, 0xe7, 0xc8, 0x4c, 0xe4, 0x6c, 0xe0, 0x18, 0x7f, 0xa7,
- 0x1a, 0x79, 0x5c, 0x29, 0x24, 0x01, 0xb3, 0x36, 0xbf, 0xae, 0x95, 0x3b,
- 0x6f, 0x72, 0x63, 0xd9, 0xdf, 0x80, 0x97, 0xb7, 0xae, 0xd3, 0xeb, 0x2c,
- 0xac, 0xfb, 0x36, 0x02, 0xc9, 0x98, 0x4c, 0xcc, 0x1b, 0x57, 0x01, 0x8a,
- 0x9d, 0x32, 0xb2, 0x78, 0xde, 0xa5, 0x8e, 0x43, 0x48, 0xe5, 0x80, 0x13,
- 0xe6, 0x86, 0x19, 0xdb, 0x2f, 0x79, 0xed, 0x31, 0x1e, 0xae, 0x22, 0x3c,
- 0x24, 0xfa, 0x2d, 0x00, 0x46, 0x31, 0x19, 0x0e, 0xb3, 0xe1, 0xc4, 0x68,
- 0x4e, 0x8c, 0xaa, 0x6d, 0x16, 0xf7, 0x6c, 0x64, 0x44, 0x90, 0x23, 0xe7,
- 0x45, 0x66, 0x9c, 0xf9, 0xd9, 0x8f, 0x46, 0x17, 0x1d, 0xbe, 0xb0, 0x3f,
- 0xde, 0x7e, 0x1c, 0x43, 0xe2, 0x7e, 0x47, 0x37, 0xa3, 0x14, 0x55, 0x71,
- 0xff, 0xc3, 0x54, 0x79, 0xc5, 0xff, 0x58, 0xe1, 0x7e, 0x40, 0x29, 0x66,
- 0x72, 0xf2, 0xf6, 0x10, 0x00, 0x4b, 0x0e, 0xef, 0xd8, 0x4f, 0xe6, 0xf2,
- 0x4b, 0xd7, 0x40, 0x17, 0x49, 0xaa, 0x6a, 0x14, 0xee, 0xce, 0x22, 0xd4,
- 0x72, 0x62, 0x5d, 0x0b, 0x7b, 0x9c, 0xc3, 0x60, 0x33, 0x62, 0xc4, 0xa2,
- 0x63, 0x60, 0x24, 0xe4, 0x69, 0xc6, 0xec, 0x30, 0xc9, 0xe6, 0x57, 0x9b,
- 0x91, 0x22, 0xb7, 0xcd, 0x97, 0x1e, 0xd8, 0x76, 0xed, 0x98, 0xa7, 0x36,
- 0xbf, 0xa0, 0x5c, 0x5d, 0xc2, 0x18, 0xe1, 0x6f, 0xca, 0x1a, 0x70, 0xda,
- 0xa9, 0x04, 0x18, 0x57, 0xd4, 0x2d, 0x09, 0x5a, 0x5e, 0x3b, 0x61, 0x87,
- 0x99, 0x9e, 0x09, 0x87, 0xbc, 0x33, 0x6e, 0xd5, 0xe7, 0x36, 0x83, 0x22,
- 0x38, 0xca, 0x68, 0x67, 0xec, 0x1a, 0xa1, 0xc3, 0x76, 0xbc, 0x9d, 0xdc,
- 0x27, 0xee, 0x0c, 0xdc, 0x83, 0x93, 0x49, 0x4e, 0x9a, 0x0b, 0x8e, 0xbe,
- 0xf9, 0xe5, 0xf5, 0x75, 0x34, 0xab, 0xc8, 0x4c, 0x01, 0x2d, 0x3c, 0x8d,
- 0xf9, 0x2a, 0x4b, 0x1b, 0xe8, 0x1b, 0x74, 0xcf, 0xaf, 0xce, 0x29, 0x76,
- 0xba, 0x7b, 0xe4, 0x19, 0x6f, 0x14, 0x2f, 0xfd, 0xb2, 0x8d, 0xf8, 0x2e,
- 0xc0, 0x26, 0xe0, 0x3d, 0x40, 0xf8, 0x96, 0xf8, 0x99, 0xf5, 0x3f, 0x5d,
- 0xa5, 0x66, 0x53, 0xdc, 0x4b, 0x2c, 0x77, 0x86, 0x34, 0x7b, 0x96, 0x20,
- 0xd9, 0x3c, 0x90, 0x61, 0x33, 0xcd, 0x58, 0xe5, 0xc4, 0x6e, 0x22, 0xcf,
- 0xe0, 0x1c, 0xe0, 0x84, 0x11, 0xe7, 0x09, 0x87, 0xcf, 0xe6, 0x82, 0x27,
- 0xca, 0x20, 0xe1, 0x52, 0xbc, 0xbb, 0x5e, 0x11, 0x3f, 0xe1, 0x5b, 0x54,
- 0x15, 0xb5, 0x01, 0x91, 0xb3, 0x2e, 0x02, 0xc3, 0xf7, 0x0b, 0xf9, 0x35,
- 0x7e, 0x5d, 0xb7, 0x20, 0x4c, 0x08, 0x23, 0x8d, 0x76, 0x70, 0x48, 0x38,
- 0xd1, 0x7e, 0x42, 0xe8, 0x2e, 0x10, 0x32, 0x65, 0x42, 0xac, 0x64, 0xfb,
- 0x4f, 0x3e, 0xff, 0x7c, 0x18, 0x45, 0xfd, 0xe4, 0xaa, 0x65, 0xb3, 0x09,
- 0x69, 0xa6, 0x1c, 0x42, 0x64, 0xdf, 0x62, 0xfd, 0xd2, 0xf7, 0x69, 0x87,
- 0x31, 0xcc, 0xfe, 0x9c, 0x10, 0x7d, 0x48, 0x38, 0x2e, 0x67, 0xa1, 0x79,
- 0x8f, 0x58, 0xdf, 0x9c, 0xd4, 0x0a, 0x91, 0x62, 0x50, 0xaf, 0x48, 0x6a,
- 0xcc, 0xf3, 0x15, 0x2a, 0x5d, 0x26, 0x29, 0x71, 0x9c, 0x3d, 0x29, 0x40,
- 0x79, 0x92, 0xc2, 0xc9, 0xd9, 0xb0, 0x46, 0x6b, 0x40, 0xea, 0x37, 0x27,
- 0x5a, 0xf0, 0x74, 0x6c, 0xae, 0xa8, 0x92, 0xdc, 0x4c, 0x34, 0xdc, 0x38,
- 0xce, 0x2c, 0xec, 0x00, 0x53, 0x4d, 0x75, 0x80, 0x61, 0xb8, 0x92, 0xba,
- 0xa0, 0x52, 0x29, 0xa2, 0x76, 0x30, 0x1f, 0xe8, 0x34, 0x87, 0xc2, 0xe1,
- 0xeb, 0xac, 0x09, 0xcb, 0x7b, 0xbc, 0xc4, 0xda, 0x35, 0x8d, 0xc7, 0x6c,
- 0x22, 0xa9, 0x4e, 0x4a, 0x5e, 0x8a, 0xf7, 0x3e, 0x99, 0xe6, 0x57, 0x7a,
- 0x48, 0x2d, 0x1d, 0xc2, 0x57, 0x58, 0x8d, 0x97, 0x32, 0xf5, 0x52, 0xad,
- 0xf7, 0x55, 0x14, 0xf1, 0x4b, 0xb2, 0x7b, 0x01, 0x3f, 0xd5, 0x34, 0x46,
- 0xad, 0x76, 0xb2, 0x1b, 0xc9, 0xd5, 0x40, 0x1a, 0x92, 0x92, 0x16, 0x9e,
- 0x60, 0x4e, 0x93, 0x9c, 0xc5, 0xb0, 0x27, 0x5e, 0xda, 0x46, 0x85, 0xdb,
- 0x83, 0xf2, 0xdb, 0xa9, 0x2b, 0xb1, 0x99, 0x50, 0xd4, 0x6e, 0x92, 0x0f,
- 0xe6, 0xe9, 0xc0, 0xea, 0xa1, 0x77, 0xbd, 0x79, 0x0a, 0xd7, 0xde, 0x0f,
- 0x66, 0x09, 0xd0, 0x04, 0x4f, 0xb1, 0xcb, 0x8b, 0xf6, 0xdd, 0xe5, 0x32,
- 0x52, 0xeb, 0x2e, 0xed, 0x3a, 0x49, 0x69, 0xa8, 0xae, 0xc0, 0x19, 0x3b,
- 0xeb, 0xba, 0xcc, 0xb8, 0x97, 0x40, 0x9b, 0xd0, 0x59, 0x25, 0x5f, 0x65,
- 0x53, 0x2d, 0x27, 0xa4, 0x58, 0xc2, 0x28, 0xc7, 0xa7, 0x62, 0xf4, 0x53,
- 0x42, 0x76, 0xe7, 0x46, 0x0c, 0x92, 0x38, 0xac, 0x17, 0x66, 0x59, 0xe0,
- 0xf1, 0xd8, 0xc2, 0x13, 0xf4, 0x44, 0x4e, 0x0a, 0x1d, 0x44, 0x89, 0x4b,
- 0x33, 0xb8, 0x5b, 0xea, 0xfc, 0xef, 0xac, 0x94, 0x49, 0x36, 0xad, 0x82,
- 0x85, 0xc1, 0xc1, 0x91, 0x11, 0x7c, 0x7d, 0xf2, 0x9a, 0x68, 0x35, 0xf9,
- 0x2a, 0xa7, 0xfd, 0x16, 0xc8, 0x69, 0x3f, 0xdf, 0x9b, 0x6f, 0x24, 0x52,
- 0xe3, 0xaa, 0xec, 0x7a, 0x49, 0xb7, 0x1c, 0xe6, 0x69, 0x4b, 0xc1, 0x41,
- 0xf5, 0x89, 0x45, 0xbe, 0x00, 0x75, 0x87, 0xb1, 0xe7, 0x82, 0x14, 0x72,
- 0xf3, 0x16, 0x13, 0x66, 0x2e, 0x0b, 0x33, 0x5d, 0xcd, 0x92, 0x22, 0x7f,
- 0x02, 0x93, 0x62, 0xe4, 0xd7, 0x5f, 0xe1, 0xfa, 0x2b, 0x65, 0xe8, 0xcc,
- 0x42, 0x31, 0xb5, 0xa6, 0x77, 0x76, 0x15, 0xd8, 0x2e, 0x19, 0x92, 0x4d,
- 0x80, 0xef, 0x45, 0xe9, 0x1b, 0x8d, 0x0a, 0x00, 0x66, 0x56, 0x23, 0x47,
- 0xcc, 0x17, 0x14, 0x1a, 0x9c, 0x64, 0x0e, 0xd4, 0x14, 0x93, 0x82, 0x24,
- 0xcf, 0xe0, 0x54, 0x03, 0x1f, 0x50, 0x75, 0x27, 0x1f, 0x35, 0x92, 0x35,
- 0x30, 0x0a, 0x63, 0xd2, 0x50, 0xb9, 0xea, 0x47, 0xb0, 0x70, 0xd2, 0x9a,
- 0xab, 0x0a, 0xea, 0x90, 0x71, 0x14, 0x97, 0x00, 0x6b, 0xd5, 0x7f, 0xb5,
- 0x06, 0x2f, 0x49, 0xbe, 0x08, 0xaa, 0x10, 0x50, 0x54, 0x0f, 0x38, 0x3b,
- 0x02, 0xfc, 0x6d, 0x22, 0xd0, 0xd4, 0xf4, 0xd0, 0xaa, 0x21, 0x56, 0x11,
- 0x37, 0x8d, 0xe8, 0xa4, 0xb9, 0xdf, 0x94, 0x83, 0x1b, 0x83, 0xb2, 0x71,
- 0x76, 0x3e, 0x44, 0x35, 0x1f, 0x13, 0x8b, 0xfb, 0x68, 0x65, 0x08, 0xa9,
- 0x54, 0x55, 0x6a, 0x24, 0xe6, 0x5f, 0x17, 0xd7, 0x2b, 0x20, 0x06, 0x99,
- 0x24, 0xc6, 0xd8, 0x0a, 0x21, 0x2b, 0x15, 0xf6, 0xe1, 0xe0, 0x4d, 0x22,
- 0xfd, 0x79, 0xf5, 0x55, 0xab, 0x39, 0xa5, 0x71, 0xf0, 0x51, 0xca, 0x05,
- 0xfa, 0x62, 0x72, 0x9d, 0x3f, 0x30, 0x09, 0x0c, 0xf1, 0x6f, 0x33, 0x78,
- 0xeb, 0x9b, 0x32, 0x93, 0xb5, 0x2b, 0x60, 0x02, 0x5b, 0xd2, 0x21, 0x33,
- 0xae, 0x3a, 0xca, 0x2f, 0xa1, 0x1a, 0xef, 0xea, 0x6e, 0xe3, 0x5e, 0xff,
- 0xcf, 0xf2, 0xa6, 0xa0, 0x7f, 0xd0, 0x17, 0xe8, 0x03, 0xaf, 0xf6, 0xf6,
- 0xa2, 0x3d, 0x5f, 0xd9, 0x5f, 0xee, 0xb0, 0xf6, 0x98, 0x2e, 0x23, 0xc9,
- 0xca, 0xf4, 0x64, 0x5b, 0xcb, 0xf4, 0x1f, 0xa2, 0x98, 0x2c, 0x74, 0xb3,
- 0xe1, 0x0c, 0x01, 0xa6, 0xcb, 0x7b, 0x95, 0x13, 0xde, 0xa2, 0x22, 0x31,
- 0xb7, 0xf7, 0xc3, 0x2c, 0xc4, 0x7c, 0x30, 0xba, 0x1a, 0x2d, 0xc9, 0xea,
- 0xc1, 0xf7, 0x28, 0x3c, 0x73, 0xff, 0xea, 0xe5, 0xcd, 0xf2, 0x3a, 0x83,
- 0xdc, 0x6c, 0x3e, 0x35, 0xbd, 0x47, 0x8d, 0x9c, 0xbc, 0x14, 0xec, 0xa6,
- 0xe0, 0x68, 0x7a, 0xe3, 0x65, 0x12, 0xa2, 0x48, 0xa0, 0xa5, 0x42, 0x70,
- 0xe0, 0x9b, 0x2c, 0x25, 0xa5, 0x9f, 0xef, 0x96, 0xdb, 0xb0, 0x32, 0xda,
- 0xe7, 0x49, 0x13, 0x38, 0x08, 0x57, 0x80, 0xbe, 0x66, 0x04, 0x77, 0xd9,
- 0xf8, 0xd5, 0x57, 0xe4, 0xdb, 0xfa, 0x04, 0x34, 0x7d, 0xd6, 0x6a, 0x69,
- 0xea, 0x76, 0x00, 0xae, 0x9f, 0x78, 0x83, 0xe8, 0x36, 0x52, 0x56, 0xab,
- 0x9b, 0xf5, 0xca, 0x7f, 0xbc, 0x26, 0xaf, 0xca, 0x72, 0x6d, 0x8b, 0xea,
- 0xbb, 0xc1, 0x9c, 0x78, 0xf9, 0x83, 0x9c, 0x55, 0xe7, 0x4a, 0x1b, 0x79,
- 0x43, 0xe0, 0x9e, 0x69, 0x5d, 0x97, 0xb1, 0x52, 0x73, 0xf2, 0x90, 0x09,
- 0x81, 0xb7, 0xde, 0x38, 0xaf, 0xfa, 0x5a, 0x61, 0x13, 0xe1, 0x4f, 0x71,
- 0x63, 0xe0, 0xe3, 0x08, 0x64, 0x20, 0xfa, 0xeb, 0x17, 0xf6, 0x75, 0xfa,
- 0x8f, 0x39, 0xcd, 0xc0, 0xa7, 0x5e, 0x33, 0x1a, 0x4a, 0xbb, 0xd3, 0x77,
- 0x76, 0x10, 0x7e, 0xb2, 0x0c, 0xbb, 0x9b, 0x7d, 0x56, 0xb4, 0xbf, 0xd8,
- 0x84, 0x1b, 0x57, 0xe3, 0xc2, 0x20, 0x2e, 0x82, 0x8c, 0x9b, 0x96, 0x81,
- 0x5a, 0x4b, 0x09, 0x90, 0xcc, 0x6c, 0x84, 0xde, 0xaf, 0xe8, 0x38, 0xf5,
- 0x5c, 0xbb, 0xfe, 0x73, 0xcf, 0x76, 0xfe, 0xe7, 0x9e, 0xeb, 0xfe, 0xcf,
- 0x3d, 0x37, 0x80, 0x9f, 0x7b, 0x84, 0xce, 0x48, 0x83, 0x08, 0x0d, 0xe2,
- 0x5f, 0xbb, 0xe8, 0x9b, 0xfc, 0x55, 0xf7, 0x51, 0xef, 0x9b, 0xde, 0x27,
- 0x7b, 0x9b, 0xeb, 0x26, 0xcd, 0x8f, 0x0d, 0xe5, 0x57, 0x96, 0xc7, 0xd4,
- 0xcd, 0xa1, 0x11, 0xd7, 0xad, 0x69, 0x72, 0xd3, 0x42, 0xc6, 0x59, 0x40,
- 0x59, 0xed, 0x3d, 0x40, 0x33, 0x4e, 0xc6, 0x2c, 0xd3, 0x34, 0x79, 0x14,
- 0x04, 0x16, 0xdc, 0x51, 0xd7, 0x41, 0xc9, 0x8e, 0x83, 0xfb, 0xc8, 0xbe,
- 0x1e, 0xdc, 0x3f, 0xff, 0xc3, 0x7c, 0x01, 0xfa, 0x3f, 0xda, 0x90, 0x53,
- 0x0d, 0x5c, 0x17, 0x49, 0x86, 0x43, 0x9e, 0x72, 0xc1, 0x51, 0x4b, 0xbe,
- 0xfe, 0xae, 0xb8, 0xb8, 0x87, 0xb7, 0x44, 0x90, 0xbe, 0x3e, 0xcf, 0xc1,
- 0xcd, 0x65, 0x46, 0x35, 0x63, 0x0b, 0x75, 0x87, 0x6e, 0x05, 0xa4, 0x9b,
- 0x82, 0x30, 0xab, 0x86, 0x89, 0x2e, 0xc6, 0x6b, 0x8b, 0xf8, 0x6a, 0xf5,
- 0x96, 0x26, 0x45, 0x7c, 0x56, 0x56, 0xf5, 0xab, 0x5e, 0x45, 0x54, 0xa7,
- 0xc9, 0x75, 0x65, 0x34, 0xd8, 0x2f, 0x68, 0x6b, 0x2d, 0xcd, 0x62, 0xb9,
- 0x73, 0xfa, 0x69, 0x30, 0xbf, 0x37, 0xfd, 0xde, 0xfc, 0x55, 0x3b, 0xc3,
- 0x13, 0x69, 0x53, 0x04, 0xcf, 0x8d, 0x70, 0x9c, 0x27, 0xdd, 0xcc, 0x01,
- 0x3e, 0xba, 0xde, 0xa1, 0x94, 0xdf, 0xbf, 0x8a, 0xa1, 0xbf, 0x05, 0x03,
- 0xf1, 0x24, 0x2f, 0x4c, 0xb5, 0x57, 0x67, 0xdf, 0x7d, 0xa1, 0x0d, 0xfc,
- 0xdc, 0xfb, 0x71, 0xc0, 0x3f, 0x45, 0x19, 0xed, 0x41, 0x72, 0xf6, 0x1d,
- 0xed, 0xee, 0x5f, 0x27, 0xc0, 0xd6, 0x7d, 0xe0, 0x2b, 0xfe, 0x0b, 0x76,
- 0xf6, 0xba, 0x66, 0x2f, 0x5d, 0xc6, 0xc1, 0x2b, 0x62, 0xec, 0x45, 0x5d,
- 0x0f, 0xac, 0xf0, 0xc5, 0x82, 0xaa, 0x75, 0xb4, 0x6c, 0xb4, 0xe1, 0xb2,
- 0x51, 0x44, 0x8d, 0xd2, 0x71, 0xc9, 0xd9, 0xf7, 0x4d, 0x88, 0x14, 0x0d,
- 0xa4, 0x5a, 0xac, 0xad, 0xf8, 0xae, 0x16, 0x70, 0x5c, 0x40, 0x1d, 0xd6,
- 0xd9, 0x25, 0x6f, 0x21, 0x14, 0xb8, 0x96, 0xb5, 0x73, 0x1c, 0xa1, 0x04,
- 0x70, 0x98, 0x3f, 0xfc, 0x37, 0xe8, 0x65, 0x96, 0x8c, 0x9a, 0xb8, 0xc5,
- 0xd2, 0x2a, 0x53, 0xbe, 0x18, 0x21, 0xb1, 0x63, 0xce, 0xb2, 0x2f, 0x62,
- 0xa1, 0x00, 0x89, 0x4e, 0x4a, 0xee, 0xf7, 0x55, 0x39, 0x13, 0xda, 0xf2,
- 0xda, 0xec, 0x7a, 0x5e, 0x60, 0xcb, 0x1b, 0x67, 0x34, 0x0e, 0x9a, 0x0a,
- 0x89, 0x54, 0xc8, 0x67, 0x23, 0x2a, 0x87, 0x44, 0x13, 0xd9, 0x1b, 0x27,
- 0x6c, 0x66, 0xc0, 0xd1, 0xe2, 0x8d, 0xff, 0x05, 0x19, 0xfd, 0xe3, 0x0c,
- 0xce, 0x27, 0x5b, 0x1d, 0x39, 0x10, 0xe7, 0x70, 0xc4, 0x83, 0x93, 0xd8,
- 0x73, 0xa3, 0x07, 0x87, 0xd3, 0x20, 0xb4, 0x42, 0x92, 0x00, 0x96, 0xbe,
- 0x25, 0x95, 0x50, 0x32, 0xc7, 0x95, 0xe7, 0x85, 0xae, 0x97, 0xf8, 0x60,
- 0x71, 0x86, 0x55, 0x8d, 0x08, 0x4f, 0x5b, 0xf2, 0x27, 0xf1, 0x25, 0xeb,
- 0x63, 0xa9, 0xe8, 0x5b, 0xb2, 0x58, 0xc3, 0xe0, 0x85, 0x1f, 0x25, 0x4f,
- 0x67, 0xb0, 0x77, 0xe0, 0x71, 0xf6, 0xf0, 0xcf, 0xe2, 0xcd, 0xfb, 0xd8,
- 0x28, 0x1a, 0x20, 0xae, 0x65, 0xfa, 0xd7, 0xb4, 0xbf, 0x6f, 0xdb, 0xdf,
- 0x88, 0xc0, 0x91, 0x30, 0x60, 0x48, 0xfc, 0xb3, 0x84, 0x02, 0x2a, 0x59,
- 0x5b, 0xea, 0x45, 0xb5, 0x9e, 0x8c, 0x96, 0x0f, 0x41, 0x01, 0x90, 0x19,
- 0xaa, 0x84, 0xc3, 0x0d, 0x21, 0xe5, 0x01, 0xa3, 0x38, 0xc2, 0x0c, 0xc4,
- 0x38, 0xcc, 0x34, 0x76, 0x4d, 0x44, 0x21, 0xa5, 0xe7, 0x8d, 0x55, 0xce,
- 0x09, 0x99, 0x74, 0x7a, 0xe0, 0x48, 0x1e, 0x19, 0x5b, 0x21, 0xf7, 0x13,
- 0xda, 0x5d, 0xfd, 0x6a, 0x50, 0x49, 0xd8, 0xc2, 0xfd, 0x0d, 0x3e, 0x65,
- 0x44, 0x31, 0x23, 0x12, 0xc1, 0x46, 0x91, 0x93, 0xb0, 0xb5, 0x29, 0x4e,
- 0x15, 0xfa, 0x10, 0x71, 0x23, 0x22, 0x3b, 0x09, 0x35, 0xca, 0x29, 0xa0,
- 0x24, 0xc4, 0x97, 0x33, 0x88, 0x68, 0x1d, 0x07, 0x10, 0xed, 0xf6, 0x4c,
- 0x30, 0x7e, 0x0e, 0xe0, 0x73, 0xd4, 0x6e, 0x66, 0xac, 0xab, 0x16, 0x66,
- 0x4e, 0x68, 0x24, 0x7b, 0x53, 0x2c, 0x8d, 0xb1, 0x6d, 0x8a, 0x14, 0x41,
- 0x39, 0x14, 0x9b, 0xaf, 0xb6, 0x37, 0xed, 0xd0, 0x56, 0x9b, 0x45, 0x6a,
- 0xc7, 0x58, 0x36, 0x44, 0x0d, 0x42, 0x5a, 0xe2, 0x53, 0x78, 0x96, 0xe6,
- 0x94, 0xfb, 0x90, 0x0d, 0xb0, 0xa0, 0x51, 0x60, 0xb9, 0xba, 0x11, 0x6f,
- 0x27, 0x99, 0x58, 0x05, 0x4e, 0x27, 0x43, 0xa0, 0xf0, 0x16, 0x4f, 0x67,
- 0x0d, 0x65, 0xc7, 0xa3, 0x7e, 0x81, 0x41, 0xf0, 0xea, 0x03, 0x4f, 0x1f,
- 0x8f, 0x1c, 0x4f, 0x0a, 0xe4, 0x80, 0x52, 0x40, 0x5c, 0x22, 0x9e, 0x47,
- 0x63, 0x9d, 0xea, 0xbd, 0xf9, 0x6a, 0x8b, 0x2f, 0x2c, 0xe7, 0x4f, 0xf3,
- 0xbe, 0xbd, 0x99, 0xfc, 0x1c, 0x2f, 0x25, 0x4d, 0xf8, 0x5d, 0xcf, 0x42,
- 0x90, 0x6d, 0xfb, 0xd0, 0x1b, 0xc9, 0xcb, 0x71, 0x39, 0xbd, 0xff, 0x12,
- 0x61, 0x27, 0x79, 0xe5, 0xe5, 0x0e, 0x7e, 0xd4, 0x51, 0x99, 0x57, 0x35,
- 0x84, 0x56, 0xcc, 0x52, 0xe1, 0xcf, 0xaf, 0xe8, 0x71, 0xb5, 0x18, 0x36,
- 0x93, 0xe1, 0xd0, 0x08, 0xa1, 0x7a, 0x0e, 0x72, 0xaa, 0x35, 0x17, 0x0b,
- 0xc3, 0xc0, 0xe1, 0x8a, 0x25, 0x25, 0x45, 0x90, 0x3c, 0xe0, 0xd9, 0x51,
- 0x2b, 0x9b, 0x9d, 0x90, 0xfc, 0xab, 0xea, 0xd5, 0x30, 0x39, 0xb4, 0x59,
- 0x32, 0x59, 0x04, 0x3a, 0x9a, 0x8e, 0x31, 0xdf, 0x1d, 0x5e, 0x15, 0xf6,
- 0xe7, 0xe3, 0x5c, 0xdc, 0xec, 0xd3, 0xb2, 0x05, 0x47, 0xc9, 0x50, 0x07,
- 0xe6, 0x72, 0x8f, 0x03, 0x88, 0x4d, 0xca, 0x8a, 0x63, 0x44, 0xec, 0x4e,
- 0xb7, 0xf6, 0x8b, 0x74, 0x6d, 0x70, 0x2c, 0x78, 0x55, 0x2a, 0x46, 0xfb,
- 0xc9, 0x67, 0xf6, 0x4b, 0x11, 0xe4, 0x76, 0xb6, 0xf8, 0xeb, 0xe4, 0xf3,
- 0x01, 0x3d, 0xe5, 0xd1, 0xa3, 0xca, 0xbe, 0x6f, 0x67, 0x70, 0xf4, 0x45,
- 0x29, 0x1c, 0x20, 0x31, 0x29, 0x52, 0x03, 0x83, 0x9b, 0x60, 0x9c, 0xd6,
- 0xd9, 0xf3, 0xa7, 0xaa, 0x5e, 0xf2, 0x2c, 0xd5, 0xea, 0xbf, 0x6d, 0x39,
- 0x61, 0xf9, 0x1e, 0xf2, 0x06, 0xd4, 0x3d, 0x08, 0x28, 0xe5, 0x25, 0xe5,
- 0x8c, 0xa8, 0xb0, 0x38, 0xef, 0x95, 0x6e, 0x53, 0xa3, 0x48, 0x5e, 0x37,
- 0x28, 0xe2, 0xf9, 0xec, 0xb9, 0xd7, 0xe9, 0x07, 0xdc, 0x15, 0x1d, 0x49,
- 0x2a, 0x23, 0xec, 0x8e, 0x48, 0xed, 0xf5, 0x79, 0x48, 0x64, 0x0a, 0xe7,
- 0x2d, 0xe3, 0x71, 0xc9, 0x18, 0xad, 0x83, 0xf1, 0xa1, 0x63, 0xe4, 0x1f,
- 0x82, 0x2f, 0x74, 0xe3, 0x74, 0x3f, 0xbd, 0x76, 0x53, 0x7b, 0x26, 0x92,
- 0xbe, 0xcf, 0x9d, 0xe0, 0x8d, 0xfd, 0xf0, 0xbe, 0xa6, 0x20, 0xc2, 0xd5,
- 0xb2, 0xc2, 0xed, 0x23, 0x8f, 0xb1, 0x92, 0xa0, 0xa5, 0x41, 0xa2, 0xa7,
- 0xbf, 0x3d, 0x7c, 0xf7, 0xfe, 0xf0, 0xf4, 0xf1, 0x1c, 0x39, 0x2d, 0xda,
- 0xb5, 0xe1, 0x7a, 0xbe, 0x36, 0x57, 0x0d, 0x1c, 0x20, 0xe0, 0x9c, 0x28,
- 0x3d, 0x0e, 0xff, 0xf3, 0x12, 0x15, 0xc8, 0x41, 0x00, 0x11, 0x68, 0x02,
- 0xdd, 0x6c, 0x3d, 0xaa, 0xd3, 0xa2, 0x7d, 0x45, 0x49, 0x22, 0x71, 0x64,
- 0x1c, 0xce, 0xbc, 0x95, 0x10, 0xb9, 0x97, 0xb9, 0x99, 0xd6, 0xc2, 0x50,
- 0xd8, 0xd3, 0xf7, 0xe9, 0xf5, 0x9e, 0xe4, 0x6b, 0xdb, 0xd2, 0xec, 0xd8,
- 0x2e, 0xb7, 0xb5, 0xe4, 0x36, 0xf5, 0x4a, 0x59, 0x9c, 0xe5, 0x42, 0x6b,
- 0x79, 0xdf, 0xca, 0xab, 0x2b, 0x07, 0x44, 0xd3, 0x8d, 0xf0, 0x1d, 0x1d,
- 0xad, 0xae, 0x72, 0xfd, 0x23, 0x41, 0x44, 0x3b, 0x49, 0xe0, 0x98, 0x46,
- 0x27, 0xdd, 0x07, 0x4d, 0xc9, 0x25, 0xe0, 0x2f, 0xa5, 0x6f, 0xf1, 0x59,
- 0x35, 0x1d, 0xf4, 0xab, 0xf5, 0x55, 0xc5, 0x05, 0xf9, 0xea, 0xe8, 0xf8,
- 0x02, 0x93, 0x75, 0x7e, 0x38, 0x1a, 0xd9, 0xbb, 0xb0, 0x96, 0xb4, 0x84,
- 0x7e, 0x60, 0x8c, 0x41, 0x8d, 0xf4, 0x49, 0x40, 0x86, 0x89, 0xe5, 0x4d,
- 0x95, 0x74, 0x4e, 0xc4, 0x7e, 0x8c, 0xcd, 0x77, 0xb9, 0x9c, 0x9b, 0x03,
- 0x63, 0x34, 0xde, 0xe9, 0x66, 0x2d, 0xa1, 0xd8, 0xee, 0xc6, 0x23, 0xc9,
- 0x25, 0x9a, 0x14, 0xd6, 0x9a, 0xf6, 0x1e, 0xad, 0xfd, 0x48, 0x63, 0x48,
- 0x24, 0xe5, 0x39, 0x78, 0xed, 0x23, 0xbf, 0xf6, 0xe3, 0xce, 0xf4, 0xde,
- 0xe8, 0xe4, 0xf2, 0xd8, 0x4c, 0xdf, 0xfb, 0xcb, 0x6f, 0x7b, 0x92, 0xba,
- 0xd0, 0x85, 0x9d, 0x80, 0xd3, 0x9e, 0x08, 0x4f, 0x6f, 0x6d, 0x71, 0x6a,
- 0xc5, 0x8e, 0x14, 0x63, 0x2d, 0xc4, 0x34, 0x70, 0xf7, 0xd1, 0xe1, 0x9a,
- 0x55, 0x7a, 0x36, 0x7c, 0xd6, 0x5d, 0xa5, 0xd5, 0x28, 0xce, 0x8c, 0xeb,
- 0x1b, 0x6c, 0x77, 0x01, 0x0b, 0xa6, 0xec, 0xa9, 0x1d, 0x47, 0x25, 0x82,
- 0x20, 0x1b, 0x40, 0x67, 0x90, 0xb5, 0x1b, 0x01, 0x95, 0x53, 0x84, 0x3d,
- 0x2f, 0x2e, 0x0e, 0x48, 0x63, 0x8b, 0xc2, 0x23, 0xde, 0x5e, 0x0e, 0x87,
- 0x9a, 0x15, 0x4b, 0xab, 0xa9, 0xad, 0xc4, 0x0c, 0xf5, 0x43, 0xcd, 0xf5,
- 0x23, 0x82, 0x22, 0xb3, 0x05, 0x94, 0xa0, 0xa4, 0x55, 0x1f, 0x1b, 0x52,
- 0x0e, 0xb8, 0x7c, 0xbe, 0x38, 0xc6, 0x34, 0xbc, 0xe8, 0xe0, 0x2c, 0xb1,
- 0x60, 0xc9, 0x6b, 0xb3, 0x1f, 0xe3, 0xb0, 0xc8, 0x34, 0xaf, 0x92, 0x2f,
- 0xf2, 0x92, 0xff, 0x8c, 0xef, 0x77, 0x5c, 0xb9, 0x55, 0x39, 0x63, 0x07,
- 0xa2, 0xbc, 0xc1, 0x49, 0x9c, 0x5c, 0x61, 0x62, 0x2b, 0x1f, 0x52, 0x84,
- 0x40, 0x61, 0x9f, 0x80, 0xc5, 0x3b, 0x24, 0xa1, 0xda, 0x1a, 0x6d, 0x5b,
- 0x4f, 0xeb, 0x25, 0x22, 0x8a, 0x68, 0x2d, 0x52, 0x38, 0xe4, 0x01, 0x0e,
- 0x8a, 0x7a, 0x19, 0x03, 0xbd, 0xf1, 0x4e, 0x6f, 0x68, 0x31, 0x41, 0x50,
- 0x4f, 0xee, 0xa6, 0x2b, 0x20, 0xdc, 0xe0, 0xd6, 0x42, 0x12, 0x19, 0x6c,
- 0x40, 0x2e, 0x53, 0x3a, 0xfa, 0xe1, 0xb5, 0x47, 0x3d, 0xa3, 0x79, 0x6a,
- 0xbc, 0x5f, 0x44, 0x21, 0x5d, 0x05, 0x92, 0x96, 0xb9, 0x64, 0xcb, 0x21,
- 0x82, 0xaa, 0xd3, 0x2c, 0x5b, 0x58, 0xc4, 0xef, 0x1c, 0x75, 0x2d, 0x79,
- 0x8d, 0x20, 0xaa, 0xa0, 0xad, 0x83, 0x5c, 0x6d, 0x45, 0xef, 0x44, 0x74,
- 0xd8, 0x9a, 0x4a, 0xfa, 0x1f, 0x51, 0x69, 0x51, 0x18, 0x77, 0xef, 0xb3,
- 0x27, 0x9f, 0x9b, 0xbb, 0xf9, 0x1e, 0x10, 0xdc, 0x6e, 0xca, 0x18, 0x22,
- 0x77, 0x35, 0xfc, 0x9d, 0x18, 0x35, 0x9a, 0xde, 0x2b, 0x08, 0x06, 0x49,
- 0x4d, 0x66, 0x04, 0x1c, 0x54, 0x52, 0x4f, 0x1c, 0xc2, 0xbf, 0x98, 0x49,
- 0x94, 0x09, 0x93, 0xa4, 0x3b, 0xcc, 0x13, 0x27, 0x88, 0x0d, 0xbd, 0x0d,
- 0x4c, 0xbc, 0x1d, 0xc4, 0x2b, 0x66, 0x44, 0xca, 0xc5, 0xf1, 0xe5, 0x85,
- 0xf9, 0x63, 0x74, 0x79, 0x76, 0xb1, 0x02, 0xb0, 0xb0, 0x61, 0x64, 0x0c,
- 0x9a, 0x34, 0x4d, 0x57, 0xc1, 0x34, 0xb7, 0xc1, 0xcc, 0x90, 0x09, 0xcd,
- 0x62, 0xa7, 0x8e, 0xe2, 0x5f, 0x79, 0x30, 0x58, 0xf5, 0xb0, 0x35, 0xd0,
- 0x2b, 0x73, 0x3f, 0xac, 0x1d, 0x18, 0xaf, 0xf9, 0xfa, 0x1d, 0x82, 0x01,
- 0xd3, 0x66, 0xa4, 0x11, 0x5b, 0x41, 0x8f, 0xde, 0x1a, 0xa3, 0x8d, 0x9c,
- 0xff, 0x0e, 0xdd, 0x5d, 0xc9, 0x9a, 0x57, 0x80, 0xfc, 0x71, 0x6a, 0x2e,
- 0x73, 0x96, 0x38, 0xee, 0x72, 0x23, 0x69, 0xb5, 0xfc, 0xbe, 0x97, 0x6c,
- 0xc1, 0x81, 0x2c, 0x7a, 0xc9, 0x03, 0xfb, 0xd7, 0xe8, 0x42, 0xdb, 0x6e,
- 0xc0, 0x75, 0x39, 0xcf, 0xd8, 0xc3, 0xcf, 0xc9, 0xb9, 0x2a, 0x9c, 0xf8,
- 0x6e, 0x61, 0xb8, 0xd6, 0x24, 0x06, 0x41, 0x61, 0x91, 0xb5, 0x68, 0x95,
- 0x37, 0x6d, 0x0d, 0x7f, 0x29, 0xbb, 0x83, 0xd7, 0x25, 0x33, 0x96, 0x6a,
- 0x03, 0xc8, 0xb2, 0x4d, 0xed, 0x95, 0x07, 0xb9, 0xd5, 0x16, 0xde, 0x7b,
- 0x5d, 0x21, 0x43, 0x38, 0x08, 0x71, 0xc9, 0x02, 0x56, 0xb9, 0x16, 0xfe,
- 0x82, 0xe6, 0xd8, 0x40, 0x97, 0xf0, 0xd9, 0x34, 0xcf, 0xe5, 0xa9, 0x68,
- 0x58, 0x0d, 0xe5, 0x82, 0x84, 0x9f, 0x61, 0xf7, 0xb6, 0x2c, 0x39, 0x87,
- 0x68, 0x96, 0x5d, 0xa1, 0xdb, 0xd2, 0xe7, 0x42, 0x31, 0xab, 0x4a, 0x5b,
- 0xe2, 0x88, 0x8a, 0x3a, 0x05, 0xf2, 0x6b, 0x48, 0xb0, 0x7e, 0x77, 0xd0,
- 0x9a, 0xe4, 0x7d, 0x21, 0x60, 0x2d, 0x85, 0xb1, 0x2d, 0x90, 0xff, 0x30,
- 0xb5, 0x93, 0x46, 0x18, 0x46, 0x94, 0xb6, 0xc5, 0x97, 0xd6, 0xb4, 0x64,
- 0x85, 0x1e, 0x50, 0xc7, 0x21, 0x16, 0x1e, 0x7c, 0xc8, 0xc8, 0x26, 0xd0,
- 0x9b, 0x46, 0xda, 0x73, 0x76, 0xc9, 0xa4, 0xe9, 0x8e, 0x14, 0xc0, 0x0a,
- 0xc1, 0x40, 0xcf, 0xfd, 0x45, 0x63, 0x91, 0x06, 0xeb, 0xc7, 0xc9, 0x82,
- 0x86, 0xf1, 0x0d, 0x5a, 0x30, 0x15, 0x32, 0xd6, 0x68, 0xae, 0x78, 0x21,
- 0x20, 0x12, 0x4a, 0x0d, 0xdf, 0x42, 0x67, 0x50, 0x35, 0x70, 0xb8, 0x06,
- 0xf5, 0xcb, 0x07, 0x73, 0x68, 0x6d, 0xc9, 0x76, 0x89, 0x7c, 0x7b, 0x74,
- 0x2b, 0x8b, 0x6d, 0xb1, 0x41, 0x2f, 0x68, 0xc9, 0x14, 0xa8, 0x51, 0xf7,
- 0x56, 0x5e, 0xe4, 0x04, 0xde, 0x53, 0x56, 0x3b, 0x54, 0xa5, 0x42, 0x50,
- 0x76, 0xc6, 0xaa, 0x2c, 0x67, 0x60, 0xbc, 0x51, 0xd5, 0x2d, 0x46, 0x4f,
- 0x0c, 0x15, 0x8c, 0xeb, 0x2f, 0x4d, 0xe3, 0x6d, 0xc2, 0x59, 0x8f, 0xba,
- 0x8d, 0x6e, 0x53, 0x0f, 0xa9, 0x61, 0x18, 0x23, 0x47, 0xe3, 0x8c, 0x10,
- 0x64, 0x3c, 0xb6, 0xd5, 0x31, 0x25, 0xea, 0x54, 0xce, 0x0d, 0xac, 0x2b,
- 0x54, 0x3e, 0xe4, 0xdf, 0xaf, 0x28, 0xaf, 0x53, 0xbe, 0x13, 0xe0, 0x31,
- 0x99, 0x59, 0xe9, 0x73, 0x76, 0x48, 0xfb, 0x64, 0xc2, 0x72, 0x68, 0x7f,
- 0xad, 0xce, 0x9a, 0xe5, 0x22, 0xbc, 0xe7, 0x5d, 0xc1, 0xa7, 0x6d, 0x51,
- 0x83, 0xa2, 0x5e, 0x17, 0x09, 0xc8, 0xc0, 0x4d, 0xbf, 0x0f, 0x5a, 0xdf,
- 0x3d, 0x8d, 0xd0, 0x04, 0x82, 0xdb, 0x7d, 0x55, 0xf1, 0xbd, 0x5e, 0x2f,
- 0x44, 0x97, 0x9b, 0xf4, 0x8c, 0x7e, 0xb1, 0xdb, 0x83, 0x06, 0xad, 0xc4,
- 0x07, 0x82, 0x0f, 0xa6, 0x6f, 0x9b, 0x79, 0xf1, 0xfa, 0x1b, 0x9e, 0x19,
- 0xad, 0x47, 0x91, 0x3a, 0x42, 0x5a, 0x9d, 0x2d, 0x62, 0x66, 0xc7, 0xf9,
- 0xdd, 0xde, 0x58, 0x39, 0xf4, 0x35, 0xbd, 0xea, 0xed, 0xbd, 0xd8, 0x1f,
- 0xee, 0x3d, 0xff, 0x7c, 0xb8, 0x07, 0x5e, 0x57, 0xaf, 0x6f, 0x8e, 0x7f,
- 0xd4, 0x6b, 0x28, 0xc2, 0x6e, 0x9b, 0xac, 0x06, 0xba, 0xe5, 0x2f, 0xcc,
- 0xef, 0x87, 0xf4, 0xdc, 0x90, 0xc9, 0x66, 0x82, 0x6f, 0xcc, 0x8d, 0x4e,
- 0x93, 0x17, 0x41, 0x1c, 0x64, 0xe0, 0xb2, 0x8a, 0x78, 0x2f, 0x2e, 0x72,
- 0xda, 0x46, 0x0a, 0x3e, 0xe9, 0xcd, 0x93, 0xd2, 0xe3, 0x59, 0xde, 0x0f,
- 0x9c, 0xce, 0x78, 0x8f, 0x54, 0xa4, 0x4f, 0x44, 0x8d, 0x74, 0x52, 0xdd,
- 0x7e, 0x3f, 0x10, 0x9b, 0xbf, 0xda, 0xea, 0x23, 0xd4, 0x14, 0x7b, 0xe8,
- 0xba, 0x68, 0x39, 0x40, 0x55, 0xea, 0x02, 0xf3, 0x08, 0xce, 0x0a, 0x3f,
- 0xe8, 0x63, 0x58, 0x25, 0xca, 0x35, 0xac, 0xcd, 0x01, 0x6e, 0xc8, 0x55,
- 0xe2, 0x58, 0x5e, 0x37, 0x6d, 0x59, 0x83, 0xe7, 0x5d, 0x04, 0x25, 0x8b,
- 0x6c, 0xc4, 0x42, 0x5a, 0x9b, 0xa3, 0x77, 0xfe, 0xfd, 0xdf, 0x9d, 0x44,
- 0x62, 0x92, 0x71, 0x50, 0x5c, 0x3c, 0x03, 0x82, 0x29, 0xc7, 0xaa, 0x19,
- 0x2c, 0xbf, 0x77, 0xf0, 0x13, 0x9c, 0xc3, 0xbf, 0x0c, 0x7e, 0x32, 0xff,
- 0xfc, 0xa5, 0xa7, 0x87, 0x9a, 0xc1, 0xb0, 0x5c, 0xc1, 0x88, 0x43, 0x1c,
- 0xc4, 0x02, 0xf5, 0x93, 0x36, 0x49, 0x2b, 0x34, 0x83, 0xcb, 0xa3, 0x73,
- 0x3e, 0x8c, 0x15, 0x87, 0xbd, 0xb1, 0x9b, 0x49, 0x0e, 0x41, 0xad, 0x27,
- 0x11, 0x0e, 0xa2, 0x09, 0xde, 0x27, 0x76, 0x2e, 0xbd, 0x57, 0xfa, 0x2e,
- 0xa9, 0xe1, 0x8e, 0x25, 0x40, 0x6a, 0xf4, 0xdb, 0x6b, 0xf2, 0xaf, 0x70,
- 0x15, 0xb8, 0x91, 0xbb, 0xaa, 0x48, 0x0b, 0x7f, 0x2e, 0x21, 0x69, 0x19,
- 0x31, 0x60, 0x8f, 0xc3, 0x9d, 0xe9, 0x52, 0x3f, 0x11, 0x54, 0x58, 0xae,
- 0x8d, 0x68, 0x14, 0xbc, 0xb0, 0x20, 0x43, 0x45, 0xa5, 0x6d, 0x95, 0xd7,
- 0x1f, 0x69, 0x7c, 0x52, 0xe6, 0xe3, 0xe5, 0x0a, 0x51, 0x7f, 0x36, 0xac,
- 0xd6, 0x77, 0xaf, 0x30, 0x31, 0xb6, 0x70, 0xcf, 0x9b, 0x59, 0x77, 0x3b,
- 0xe8, 0xb2, 0x2b, 0x9c, 0x40, 0x14, 0xe9, 0x4a, 0x1e, 0xab, 0xb2, 0x47,
- 0x00, 0xb0, 0x49, 0x2a, 0xcc, 0xb9, 0xd1, 0x73, 0xed, 0xd6, 0xf0, 0xc0,
- 0x90, 0xa8, 0x8a, 0x9c, 0x36, 0x0b, 0xdd, 0x7e, 0xdb, 0xdd, 0x5b, 0x8b,
- 0x88, 0x5b, 0xc8, 0x51, 0xcc, 0xa0, 0x4c, 0x16, 0x52, 0x0c, 0x54, 0x52,
- 0x54, 0x3e, 0x51, 0x99, 0x6e, 0x4c, 0xfb, 0x5a, 0x0f, 0xcf, 0x27, 0x83,
- 0x82, 0xbc, 0xaa, 0xd3, 0x6d, 0x44, 0x6d, 0x05, 0x1c, 0x34, 0xa7, 0x8c,
- 0xce, 0xd8, 0xa7, 0x4e, 0x93, 0x8f, 0x59, 0xa7, 0x3f, 0x8d, 0xb4, 0x56,
- 0xa2, 0xb1, 0xbb, 0x02, 0x64, 0xc1, 0x49, 0x68, 0xd0, 0xa0, 0xfb, 0xf3,
- 0x18, 0x72, 0xad, 0x77, 0xa9, 0xee, 0xef, 0x86, 0xae, 0x14, 0xa2, 0x40,
- 0xc6, 0x24, 0x0f, 0xf2, 0xc5, 0xc3, 0x13, 0x48, 0xcb, 0xa6, 0x68, 0xbc,
- 0x2d, 0xc9, 0x62, 0x6f, 0x98, 0x7a, 0x79, 0x7d, 0x0d, 0x24, 0x8a, 0x30,
- 0x33, 0x0f, 0x15, 0x8b, 0x52, 0x38, 0x20, 0x30, 0xff, 0x46, 0x90, 0xa3,
- 0xe7, 0x3a, 0x1b, 0xae, 0x2c, 0x52, 0x04, 0x4e, 0xed, 0x08, 0x3b, 0x56,
- 0x96, 0xce, 0x12, 0xc5, 0x9b, 0x1c, 0x6f, 0xa7, 0xc9, 0x54, 0xd9, 0x40,
- 0x3b, 0xda, 0x95, 0x83, 0x94, 0x1a, 0x14, 0x64, 0xc0, 0xb2, 0x44, 0x84,
- 0xaf, 0x61, 0xb5, 0xec, 0x5b, 0xeb, 0x6e, 0x24, 0x0f, 0x9b, 0x05, 0x92,
- 0xa2, 0x30, 0x12, 0xc3, 0xe6, 0x31, 0xee, 0x59, 0x65, 0x81, 0xa4, 0x58,
- 0xaf, 0x14, 0x79, 0xd4, 0xbd, 0x35, 0xaf, 0x30, 0x1d, 0xeb, 0xfc, 0x02,
- 0x4e, 0x14, 0xfa, 0xda, 0xd2, 0xd3, 0xe1, 0x7e, 0xb0, 0xb0, 0xf5, 0x6c,
- 0x30, 0x99, 0x4c, 0x06, 0xd0, 0x03, 0x5e, 0xb2, 0x72, 0xb2, 0x23, 0xca,
- 0xc1, 0x0a, 0x9f, 0xc1, 0x28, 0x93, 0xf9, 0x3e, 0x3a, 0x3a, 0x12, 0x3d,
- 0xe6, 0xf2, 0xa6, 0xa3, 0x51, 0x58, 0x90, 0x27, 0xd1, 0xa8, 0x62, 0xec,
- 0x7f, 0xf5, 0xcd, 0xb2, 0x99, 0x82, 0x1b, 0x98, 0x44, 0x86, 0x8a, 0x5e,
- 0x5b, 0x23, 0xdb, 0x01, 0xe2, 0x24, 0x8a, 0xf6, 0xbe, 0xcb, 0x4c, 0x34,
- 0x6d, 0x07, 0x4b, 0xb3, 0x60, 0x5e, 0x10, 0xbc, 0x28, 0x6d, 0x77, 0x99,
- 0x47, 0xb9, 0xab, 0x3e, 0x5a, 0x96, 0x76, 0xb0, 0x8e, 0x65, 0xb2, 0x69,
- 0x2b, 0xf8, 0x6c, 0x9a, 0x4b, 0x06, 0x58, 0x2a, 0xdf, 0xea, 0xb6, 0xfd,
- 0xc0, 0x7a, 0xc8, 0x54, 0xb7, 0x97, 0xe4, 0xf9, 0xca, 0x25, 0x89, 0x4e,
- 0x3e, 0x59, 0x55, 0x34, 0xed, 0x5b, 0x47, 0x40, 0xf1, 0x3c, 0x92, 0x03,
- 0x71, 0x74, 0x43, 0xf9, 0x5b, 0x40, 0xb6, 0x30, 0x5d, 0xae, 0x59, 0x08,
- 0xc8, 0xfd, 0x31, 0x1a, 0x9d, 0xee, 0x5c, 0x9e, 0x8e, 0x82, 0x8c, 0xf7,
- 0x7b, 0x72, 0x19, 0x33, 0xa5, 0x74, 0xcb, 0xe5, 0xc9, 0x53, 0x04, 0xcc,
- 0xe4, 0xf2, 0xaa, 0xbd, 0xc3, 0xf9, 0x2b, 0x51, 0x88, 0x91, 0x65, 0xa1,
- 0xc5, 0x30, 0xf6, 0xee, 0x2e, 0xb2, 0x02, 0x45, 0xe4, 0x74, 0x85, 0xe3,
- 0x04, 0x20, 0x21, 0xb6, 0x4e, 0xde, 0x1d, 0x5e, 0x52, 0x79, 0x4b, 0x23,
- 0x29, 0x1e, 0xe4, 0x02, 0x0a, 0x3d, 0xe3, 0x77, 0x16, 0x97, 0x00, 0x51,
- 0x9b, 0x74, 0xe2, 0x38, 0x42, 0x54, 0x59, 0xe7, 0xe5, 0xab, 0x75, 0xe3,
- 0xad, 0x9b, 0x7e, 0x33, 0xa5, 0x72, 0x3b, 0x74, 0xf7, 0x7c, 0x77, 0x35,
- 0xf6, 0xa2, 0xab, 0xc1, 0x13, 0x10, 0x3f, 0x0e, 0x17, 0x22, 0xca, 0x75,
- 0xa2, 0xa5, 0x8a, 0x5f, 0xbb, 0x3f, 0x2b, 0xaf, 0x73, 0xf2, 0x04, 0x62,
- 0xbd, 0xfc, 0xc0, 0x5b, 0xe0, 0x26, 0xe5, 0xd9, 0xa9, 0xb9, 0x14, 0xa7,
- 0x0d, 0x1a, 0xcb, 0x47, 0x84, 0xee, 0x09, 0x3b, 0xa7, 0x96, 0x9e, 0x48,
- 0x4b, 0x20, 0xc3, 0x0a, 0x43, 0x20, 0x31, 0xe6, 0x13, 0x63, 0x22, 0x4c,
- 0x28, 0xfb, 0x03, 0xe5, 0x80, 0x75, 0x3b, 0xc5, 0x36, 0x6f, 0x21, 0x3f,
- 0xaa, 0x87, 0xb4, 0x0e, 0x63, 0x15, 0xd0, 0x14, 0x64, 0x84, 0x6b, 0xfd,
- 0xf0, 0xcf, 0x5b, 0x97, 0xc7, 0x37, 0x64, 0x91, 0x5d, 0x07, 0x97, 0xae,
- 0x45, 0xa1, 0x88, 0x40, 0xed, 0x41, 0x45, 0x45, 0x79, 0xbf, 0x50, 0xfe,
- 0xfa, 0x48, 0xe7, 0x64, 0x61, 0x0d, 0xa6, 0xfd, 0x28, 0x4c, 0x7d, 0xbf,
- 0xcb, 0xf2, 0xc5, 0x40, 0x80, 0x6d, 0x7c, 0xe8, 0x16, 0x1a, 0x8f, 0x26,
- 0xfa, 0x76, 0x9a, 0xfb, 0xe6, 0xd8, 0xb1, 0x0a, 0x74, 0x20, 0x7b, 0x5a,
- 0x8c, 0x03, 0x1c, 0x87, 0xa4, 0x18, 0xd4, 0x1d, 0x91, 0x93, 0xde, 0xad,
- 0x30, 0x72, 0x58, 0x89, 0xbd, 0x74, 0x20, 0xe5, 0x7c, 0x3e, 0x58, 0x0b,
- 0xcc, 0x6c, 0x96, 0x2a, 0xa1, 0xbd, 0x68, 0x80, 0xfe, 0x3f, 0x36, 0x1d,
- 0x69, 0xce, 0x70, 0x25, 0x34, 0x5f, 0x0c, 0xb4, 0xd7, 0x85, 0x9e, 0xfa,
- 0xae, 0xc3, 0xee, 0xbb, 0x2b, 0x20, 0xb7, 0x1f, 0xe8, 0xcf, 0xb7, 0xc7,
- 0x87, 0xaf, 0x2d, 0x8c, 0xc0, 0x6f, 0x0b, 0xea, 0xb0, 0x4f, 0x44, 0x5d,
- 0x63, 0xc0, 0x9c, 0x04, 0xe2, 0xc0, 0x0a, 0xbf, 0x88, 0xf5, 0x7d, 0x8d,
- 0x33, 0x26, 0x47, 0x58, 0xaa, 0xa3, 0x04, 0xab, 0xa3, 0x1b, 0x15, 0x7b,
- 0xc5, 0xa8, 0x6b, 0x75, 0xc6, 0x27, 0x64, 0x25, 0x47, 0xc0, 0x4a, 0xcf,
- 0x88, 0x9f, 0x7d, 0x20, 0x1e, 0x6b, 0xd2, 0x94, 0xb9, 0xb6, 0xca, 0xdb,
- 0xc8, 0xd7, 0xd8, 0xc8, 0xb3, 0x72, 0x5c, 0x5e, 0x5d, 0xad, 0xb9, 0xdd,
- 0x19, 0x91, 0x11, 0x35, 0x50, 0xbc, 0x61, 0x7a, 0x34, 0x8d, 0xf4, 0xde,
- 0x98, 0x11, 0x3b, 0x2b, 0x73, 0xd4, 0x7a, 0x52, 0x98, 0x20, 0xa4, 0xf4,
- 0xc1, 0xc5, 0xe3, 0x17, 0xa6, 0xab, 0xcd, 0xa0, 0x26, 0x1e, 0x0a, 0xf3,
- 0xd9, 0x1d, 0xa3, 0x69, 0x42, 0x16, 0xef, 0xbe, 0x4e, 0xfe, 0xeb, 0xbf,
- 0x7f, 0xfa, 0x25, 0x02, 0xfa, 0x4f, 0x0e, 0xbf, 0x1b, 0xae, 0x2c, 0x34,
- 0x4f, 0x2b, 0x58, 0xb4, 0xc5, 0x67, 0xe7, 0x44, 0x13, 0x8e, 0x67, 0x34,
- 0x75, 0x36, 0xbb, 0x1a, 0x7a, 0x39, 0x95, 0xe1, 0xb5, 0x48, 0x26, 0x94,
- 0x7e, 0x10, 0x24, 0x6e, 0x54, 0x0a, 0xce, 0xe5, 0xbb, 0x04, 0x96, 0x0d,
- 0xe6, 0x1c, 0x97, 0x32, 0x6d, 0xc1, 0x74, 0x79, 0x25, 0x02, 0xfc, 0x18,
- 0xc7, 0x6e, 0xd3, 0x0d, 0xa6, 0xbf, 0xbf, 0x38, 0xb1, 0xae, 0x4e, 0x5f,
- 0x2a, 0xdf, 0x98, 0x9d, 0x7a, 0x3f, 0xc8, 0xee, 0xb3, 0xb1, 0x91, 0x12,
- 0xb5, 0x02, 0x3f, 0x0c, 0xe6, 0x75, 0xf2, 0x72, 0x6e, 0xf6, 0x78, 0xbe,
- 0x02, 0xb2, 0xe3, 0x5b, 0x7a, 0x2d, 0xd1, 0xd7, 0x2c, 0x64, 0xe8, 0x75,
- 0x59, 0x99, 0x19, 0x9a, 0x4b, 0x35, 0xae, 0x94, 0x24, 0xb7, 0x9d, 0x19,
- 0x09, 0x0a, 0x4c, 0x02, 0x77, 0xc0, 0xed, 0x53, 0xd1, 0xb8, 0x81, 0x7f,
- 0xe6, 0xa1, 0x73, 0x41, 0x59, 0x5f, 0x1a, 0xe5, 0xd1, 0xf4, 0xde, 0x18,
- 0xd9, 0x64, 0xad, 0xd7, 0x7d, 0xd9, 0x52, 0x95, 0x42, 0xb7, 0x45, 0x61,
- 0x04, 0x6c, 0x19, 0x22, 0x5b, 0x58, 0x46, 0xe8, 0xf8, 0x23, 0xb2, 0xe4,
- 0x9e, 0x3e, 0xe0, 0x9a, 0x50, 0xfa, 0x86, 0xf3, 0xaa, 0x03, 0x60, 0x37,
- 0x68, 0xe2, 0xb2, 0x57, 0xa9, 0x60, 0x23, 0x57, 0xda, 0x5d, 0xdf, 0x13,
- 0x6b, 0x4d, 0xe5, 0xe0, 0x50, 0xce, 0xd3, 0xa9, 0x2d, 0xa4, 0xf7, 0xd1,
- 0xfa, 0x50, 0x86, 0x98, 0x52, 0x5d, 0x64, 0x36, 0x1b, 0x0a, 0xd9, 0x34,
- 0xd2, 0xaa, 0x5c, 0x9b, 0x10, 0xb8, 0x5d, 0x5c, 0x97, 0x9a, 0x52, 0x04,
- 0xb8, 0x1a, 0x56, 0x1c, 0xfa, 0x28, 0x2b, 0x17, 0xcf, 0x43, 0x34, 0xd6,
- 0x7b, 0x29, 0x78, 0x39, 0xd7, 0x30, 0xfb, 0xc5, 0x7e, 0x00, 0x42, 0x31,
- 0x28, 0xb5, 0x18, 0x86, 0x84, 0xde, 0x46, 0x7a, 0x05, 0xc9, 0x10, 0x5e,
- 0xf0, 0x63, 0x59, 0xf0, 0x4e, 0x73, 0x14, 0x6b, 0x79, 0xfe, 0xec, 0xd9,
- 0x33, 0x8e, 0xb5, 0xf4, 0x4e, 0xf0, 0xe1, 0x8b, 0xe3, 0xa3, 0xb3, 0xb7,
- 0x6f, 0x8f, 0xdf, 0xbd, 0x3e, 0x7e, 0xad, 0x19, 0x1f, 0xde, 0x48, 0xdc,
- 0xee, 0x08, 0x47, 0x44, 0x59, 0x82, 0x66, 0x9e, 0xf7, 0x9e, 0xed, 0x0e,
- 0xf6, 0x9f, 0xed, 0x26, 0x66, 0x2f, 0xa6, 0xb6, 0x4e, 0x2d, 0x9d, 0xa5,
- 0x64, 0xdf, 0xde, 0x2c, 0x8d, 0xaa, 0x46, 0x68, 0x9a, 0x0d, 0x61, 0x6e,
- 0xc0, 0xf5, 0x4a, 0xde, 0x9e, 0xac, 0x21, 0x3b, 0x3a, 0x92, 0x19, 0x30,
- 0xec, 0x59, 0x60, 0x34, 0x17, 0xb0, 0x14, 0xdd, 0x07, 0x1b, 0x74, 0x7f,
- 0x97, 0x3e, 0x34, 0x4c, 0xde, 0x18, 0xed, 0xe3, 0xaa, 0xfc, 0xc4, 0x7b,
- 0xf1, 0xe8, 0xc6, 0x28, 0xa5, 0x59, 0x18, 0xaa, 0x6c, 0xbf, 0x4f, 0xaf,
- 0x3f, 0xe1, 0xd7, 0xff, 0x89, 0x31, 0xfa, 0x67, 0x2f, 0xda, 0x86, 0xa5,
- 0x39, 0xc8, 0x80, 0x62, 0xd7, 0x92, 0xc4, 0x15, 0x20, 0xac, 0x23, 0x36,
- 0xc7, 0xbf, 0x3d, 0x3c, 0xa7, 0xa7, 0x8d, 0x59, 0x7e, 0xf6, 0xe3, 0x5f,
- 0x5c, 0x99, 0xe7, 0xed, 0x9e, 0x66, 0x33, 0x4a, 0x25, 0x2b, 0xf8, 0xe9,
- 0x8a, 0x30, 0xe8, 0xed, 0x94, 0x59, 0x6b, 0x10, 0xea, 0x25, 0x83, 0x11,
- 0x52, 0x06, 0xaa, 0x99, 0x3a, 0xa6, 0x8e, 0x92, 0x45, 0xab, 0x6a, 0x39,
- 0xe2, 0xb1, 0xba, 0x7e, 0x23, 0xca, 0xa9, 0x1b, 0x9f, 0x72, 0xa6, 0x5a,
- 0xc8, 0x8b, 0x29, 0xf3, 0xb5, 0xb6, 0x1c, 0xb3, 0x4d, 0xb5, 0xcc, 0x62,
- 0x5e, 0xd3, 0xb5, 0x18, 0x3b, 0xa4, 0xd4, 0x56, 0xf9, 0x3c, 0xad, 0x72,
- 0x66, 0x65, 0xa7, 0x0d, 0x7e, 0xc7, 0x14, 0x92, 0x9c, 0x2a, 0x85, 0xd8,
- 0x97, 0x45, 0x73, 0x24, 0x67, 0x4d, 0x04, 0xcb, 0x3c, 0x9f, 0xc8, 0x91,
- 0x62, 0x58, 0x23, 0x89, 0x51, 0xf2, 0x64, 0xad, 0x5b, 0xa6, 0xe7, 0x6d,
- 0xfb, 0xdf, 0x2a, 0x14, 0xd1, 0x12, 0x5c, 0x52, 0x71, 0xdf, 0x9c, 0x9c,
- 0x1e, 0x6f, 0x27, 0x6f, 0xb2, 0x46, 0x4a, 0x9c, 0x34, 0xc3, 0x98, 0xae,
- 0xfc, 0x7f, 0x81, 0x82, 0x65, 0x71, 0x00, 0xa5, 0x46, 0x38, 0x9a, 0x0b,
- 0x26, 0x3e, 0x38, 0x28, 0x1b, 0x5a, 0x2f, 0xc5, 0x8b, 0x83, 0x21, 0x52,
- 0x3c, 0x4e, 0x73, 0xcb, 0x34, 0xbe, 0x29, 0x2b, 0x1f, 0xc9, 0xbb, 0x55,
- 0x9c, 0x87, 0xa1, 0x87, 0x78, 0x56, 0xfa, 0x29, 0x04, 0xd4, 0x69, 0xc9,
- 0x79, 0xd6, 0x78, 0x71, 0x5e, 0x2f, 0x66, 0x24, 0x0d, 0xa2, 0x28, 0x2f,
- 0xb3, 0xcc, 0x55, 0xf6, 0x61, 0xe7, 0x33, 0x81, 0xba, 0x18, 0x3d, 0x10,
- 0xa8, 0x34, 0x5e, 0x6f, 0xe2, 0xbe, 0xd5, 0x89, 0xa3, 0xb4, 0x13, 0xfe,
- 0x73, 0xe7, 0xab, 0x28, 0xf8, 0x98, 0x6c, 0xf4, 0x63, 0x50, 0xc9, 0xca,
- 0x1b, 0xd8, 0x51, 0x4c, 0x2d, 0x2e, 0x97, 0xbc, 0xaa, 0x9d, 0xad, 0x9d,
- 0x10, 0x51, 0x5f, 0xe1, 0xbb, 0x53, 0x73, 0xf7, 0x2f, 0x42, 0x5f, 0xa4,
- 0xfa, 0x03, 0x95, 0x80, 0xbb, 0xdb, 0x85, 0xc9, 0x6b, 0x6d, 0x96, 0x71,
- 0x12, 0x63, 0x0a, 0x63, 0xa9, 0x2c, 0x4c, 0xb5, 0xac, 0x4d, 0x51, 0xb6,
- 0x7e, 0xaa, 0xe9, 0xfa, 0xda, 0x5f, 0x7a, 0xec, 0x46, 0xd0, 0xa2, 0xe1,
- 0x4b, 0xe1, 0x2a, 0xb2, 0x3a, 0xea, 0xf2, 0x97, 0xf2, 0x36, 0x09, 0xed,
- 0x81, 0x69, 0x94, 0x9d, 0x32, 0xac, 0x43, 0x2f, 0x49, 0xa1, 0xe3, 0xca,
- 0x2e, 0x40, 0xff, 0x57, 0x0c, 0x51, 0x19, 0xd1, 0x96, 0xe4, 0xeb, 0xbe,
- 0x08, 0xea, 0xea, 0xec, 0xfe, 0x67, 0xda, 0x96, 0x68, 0xa8, 0x2e, 0x9a,
- 0xb9, 0x83, 0x4e, 0x49, 0x3c, 0x1b, 0x54, 0xf5, 0x3e, 0xf9, 0x98, 0xa3,
- 0x10, 0x71, 0x09, 0x75, 0x2e, 0x2d, 0xb4, 0xde, 0x8a, 0xbb, 0xe9, 0xb0,
- 0xd5, 0xa7, 0x14, 0xf1, 0xf8, 0xcb, 0x2a, 0xed, 0x93, 0x21, 0xcb, 0xc8,
- 0x69, 0x40, 0xb0, 0xa7, 0xda, 0x9f, 0x19, 0x2a, 0x1a, 0xec, 0x69, 0x51,
- 0x45, 0x8d, 0xea, 0x21, 0xa1, 0x2b, 0x46, 0xa0, 0x98, 0x33, 0xf0, 0x10,
- 0xc3, 0xe5, 0xa7, 0xfc, 0xf6, 0x9b, 0x55, 0xc6, 0x70, 0xf0, 0x43, 0x63,
- 0x89, 0xce, 0xa9, 0x24, 0x00, 0x69, 0xb6, 0x32, 0x64, 0x99, 0x1e, 0x23,
- 0xdb, 0xae, 0xf3, 0xdb, 0x58, 0x96, 0x05, 0xe5, 0x47, 0x48, 0xc7, 0x90,
- 0xa5, 0xe1, 0x58, 0x54, 0x35, 0xed, 0xd8, 0x86, 0xb4, 0xd9, 0x2f, 0x4d,
- 0x38, 0x80, 0x32, 0xb3, 0xc1, 0x09, 0x9e, 0x91, 0xc6, 0x4a, 0x80, 0x5e,
- 0x05, 0xf3, 0xd6, 0x7e, 0x6b, 0x34, 0x9f, 0x83, 0x9e, 0x05, 0x31, 0x87,
- 0x5f, 0x95, 0x31, 0xc2, 0xfd, 0x9d, 0x23, 0x4c, 0xca, 0x83, 0x28, 0x1d,
- 0x97, 0x68, 0xee, 0x8d, 0x0a, 0x2e, 0x5b, 0x70, 0x13, 0xa6, 0x35, 0xdb,
- 0x02, 0x18, 0xae, 0x18, 0x0d, 0x41, 0xda, 0xa9, 0x4b, 0x3f, 0x0e, 0x8e,
- 0xf0, 0xf1, 0xc1, 0xb7, 0x68, 0xee, 0x8b, 0x9e, 0x75, 0xf8, 0x76, 0x7f,
- 0x75, 0x10, 0xf2, 0xe7, 0x3a, 0xbf, 0x21, 0x1b, 0x1e, 0x4b, 0xad, 0xca,
- 0x40, 0x22, 0x89, 0x74, 0x90, 0xa9, 0xa9, 0xcc, 0x11, 0xd9, 0xd1, 0x05,
- 0x17, 0xe6, 0x9b, 0xa2, 0x59, 0x45, 0xdc, 0x6a, 0x6e, 0x91, 0x05, 0xc0,
- 0x74, 0xa6, 0x83, 0xf2, 0x6a, 0x80, 0x0c, 0x69, 0x23, 0xfc, 0x3f, 0x52,
- 0x32, 0x92, 0x77, 0xea, 0x00, 0x10, 0x02, 0xb8, 0xeb, 0xe9, 0x34, 0xa6,
- 0x9a, 0x73, 0x21, 0x23, 0x69, 0x1d, 0xb2, 0xf1, 0xb5, 0xd0, 0x82, 0x17,
- 0xf2, 0x40, 0xbc, 0xf2, 0x78, 0xdd, 0x92, 0x3f, 0x11, 0x32, 0x97, 0x14,
- 0x44, 0x04, 0xfe, 0x34, 0x94, 0x47, 0xf4, 0x59, 0x7b, 0xc7, 0xa8, 0x61,
- 0xc3, 0xcd, 0xd9, 0x95, 0x0b, 0xff, 0xf3, 0x72, 0x01, 0x95, 0x95, 0x20,
- 0x34, 0x03, 0xef, 0x8b, 0x16, 0x89, 0x80, 0xda, 0xc7, 0x5c, 0xfe, 0xcf,
- 0x86, 0xbb, 0xfd, 0x20, 0x50, 0xdf, 0xc0, 0xd8, 0x2f, 0x5c, 0x96, 0x90,
- 0x79, 0x18, 0x32, 0x72, 0x10, 0xab, 0xae, 0xad, 0x9b, 0x7b, 0x92, 0xd7,
- 0xb6, 0x98, 0x16, 0xa9, 0xc5, 0xae, 0xee, 0xc1, 0xe5, 0xf4, 0x60, 0x0a,
- 0x45, 0x6c, 0x72, 0x15, 0x6d, 0x0c, 0x75, 0x54, 0x32, 0xb6, 0xbe, 0x1a,
- 0x74, 0xd9, 0x23, 0x2d, 0x09, 0x98, 0x5f, 0xbd, 0xe1, 0xd1, 0x79, 0xad,
- 0xf4, 0x34, 0x01, 0xbc, 0xfe, 0x50, 0xf9, 0x66, 0x06, 0x66, 0x52, 0x85,
- 0xe8, 0x74, 0x90, 0xd1, 0x0f, 0x19, 0xb0, 0x43, 0xa1, 0x3c, 0xeb, 0xd5,
- 0x73, 0xc6, 0xb8, 0xb6, 0x9f, 0xd1, 0x8c, 0x59, 0x34, 0x7f, 0x25, 0xae,
- 0x71, 0xf7, 0x03, 0xb6, 0xad, 0x77, 0x96, 0xba, 0x73, 0x46, 0x52, 0x85,
- 0x24, 0x41, 0xa1, 0x39, 0xdf, 0xe0, 0x29, 0xff, 0x74, 0xbf, 0x32, 0xb5,
- 0x78, 0x45, 0xce, 0x2f, 0x8e, 0xcd, 0x1b, 0x52, 0xec, 0x07, 0xef, 0xcc,
- 0x32, 0x1c, 0x24, 0xff, 0x59, 0x66, 0x5c, 0xb3, 0xfa, 0x40, 0xc9, 0xea,
- 0x0f, 0x87, 0x17, 0xef, 0x4e, 0xde, 0x7d, 0x73, 0x60, 0x65, 0x1c, 0xc9,
- 0xbb, 0x2e, 0x8b, 0x84, 0x95, 0xdd, 0xf8, 0x2d, 0xd3, 0x94, 0x93, 0xf7,
- 0x67, 0x15, 0xac, 0x35, 0xc5, 0x32, 0x21, 0x9e, 0xd9, 0x79, 0x59, 0x65,
- 0x1c, 0x17, 0x61, 0x5b, 0x54, 0x2b, 0x27, 0xa4, 0x5c, 0x13, 0x57, 0x65,
- 0x53, 0xce, 0xa6, 0x31, 0xc0, 0x86, 0xc1, 0x29, 0xad, 0xc9, 0xac, 0x6c,
- 0xf1, 0x32, 0xd1, 0xa6, 0x9c, 0x61, 0xf9, 0x4b, 0x7f, 0x07, 0x78, 0xf4,
- 0x4a, 0x64, 0x4b, 0x95, 0x11, 0x76, 0x3d, 0x98, 0x79, 0x9c, 0x86, 0x13,
- 0xf0, 0xd1, 0x30, 0xab, 0x44, 0x8d, 0x25, 0xab, 0x73, 0x38, 0x1b, 0xec,
- 0x94, 0x68, 0x8e, 0x57, 0xc4, 0x0f, 0xc2, 0x73, 0x35, 0x49, 0x97, 0x7c,
- 0x5e, 0x18, 0x9d, 0x4c, 0x7e, 0xea, 0xea, 0x32, 0xec, 0x0c, 0x3c, 0x3a,
- 0xcd, 0xd9, 0xe5, 0x39, 0xb3, 0x3e, 0xcf, 0x06, 0xa2, 0x27, 0xb2, 0xcc,
- 0x9f, 0x74, 0x95, 0x44, 0x71, 0x48, 0x66, 0x99, 0xab, 0x4a, 0xb2, 0xba,
- 0xce, 0x0d, 0xeb, 0x3a, 0xb3, 0x45, 0x00, 0xb6, 0x07, 0x1e, 0x3a, 0xfa,
- 0x8d, 0x3a, 0x75, 0x28, 0x78, 0x85, 0x1b, 0x58, 0xcd, 0x92, 0x16, 0xb8,
- 0x9d, 0x65, 0x4c, 0x64, 0xa1, 0x1e, 0xde, 0xa7, 0x84, 0xf7, 0x94, 0x31,
- 0xde, 0x98, 0x5f, 0x01, 0x63, 0xbe, 0x6e, 0xe6, 0x78, 0xb1, 0x1c, 0xcf,
- 0xa7, 0xcf, 0x92, 0x97, 0xe6, 0x3f, 0x81, 0x92, 0x85, 0x9c, 0xd1, 0xd1,
- 0x91, 0x51, 0xb4, 0x28, 0xc1, 0x85, 0xee, 0x0b, 0x86, 0xbc, 0xf1, 0x78,
- 0x1b, 0x9e, 0xec, 0x9b, 0x9e, 0x7e, 0x4a, 0x15, 0xda, 0xd2, 0x68, 0x84,
- 0xd7, 0x79, 0xc3, 0x79, 0x7a, 0x2b, 0x70, 0x83, 0xbc, 0xd4, 0x06, 0xac,
- 0xf9, 0xde, 0xfe, 0xe7, 0x09, 0x15, 0x1f, 0xbc, 0x7d, 0xfd, 0x2c, 0x99,
- 0xdc, 0x64, 0x93, 0x8f, 0xf5, 0x72, 0xae, 0xe2, 0x98, 0xe6, 0xb4, 0x61,
- 0xb4, 0xe8, 0x00, 0xf1, 0xc1, 0x74, 0x7c, 0x96, 0x4f, 0xa8, 0xf4, 0xaf,
- 0xdf, 0x8a, 0x4e, 0x5d, 0x69, 0x74, 0xca, 0xb3, 0x43, 0xed, 0xb5, 0x81,
- 0x74, 0x01, 0xce, 0xa9, 0x89, 0x04, 0x2f, 0xcc, 0x1c, 0x98, 0x8f, 0xd7,
- 0x4c, 0xf2, 0xbc, 0xd6, 0x65, 0xfb, 0x59, 0xdb, 0xeb, 0x4d, 0x07, 0x7b,
- 0x77, 0xf8, 0x62, 0x05, 0x23, 0x3b, 0x32, 0x53, 0x2c, 0x48, 0x3d, 0x19,
- 0xfc, 0x5a, 0x6d, 0x07, 0x7b, 0x80, 0xb4, 0x7c, 0xea, 0x24, 0x01, 0x42,
- 0x69, 0x18, 0x2f, 0xf8, 0x38, 0x3d, 0xb9, 0x43, 0x4f, 0x70, 0x9e, 0x01,
- 0x67, 0xb1, 0x65, 0xc0, 0xa4, 0xe0, 0xad, 0x85, 0x34, 0x21, 0x1b, 0x05,
- 0xb4, 0x08, 0x67, 0x08, 0xc1, 0x86, 0x4a, 0x9b, 0xad, 0xff, 0x56, 0x97,
- 0x8d, 0x13, 0x31, 0x52, 0x42, 0xeb, 0xa1, 0x39, 0x68, 0x2d, 0x21, 0xf0,
- 0xda, 0xc8, 0xa6, 0x08, 0x36, 0x99, 0xfd, 0x2e, 0xc7, 0xa5, 0xdd, 0x72,
- 0xd4, 0x8c, 0x46, 0x08, 0xe7, 0x39, 0x91, 0xa7, 0xb2, 0x45, 0x5d, 0xde,
- 0x15, 0xd7, 0x15, 0xf9, 0x47, 0x50, 0x14, 0x96, 0xc6, 0x62, 0x19, 0x31,
- 0xb3, 0x38, 0xb9, 0x5a, 0xc2, 0x12, 0x42, 0xf3, 0x3a, 0x6b, 0x82, 0x9e,
- 0x69, 0x74, 0x74, 0xa9, 0x68, 0xc4, 0x65, 0xd0, 0x81, 0x47, 0x45, 0x42,
- 0x58, 0x40, 0xd4, 0x45, 0x52, 0xcb, 0x6c, 0x07, 0x4c, 0xed, 0xde, 0x70,
- 0x57, 0x73, 0xad, 0x22, 0xb6, 0xbc, 0xb7, 0xd6, 0xbb, 0x7d, 0x59, 0x6f,
- 0xf3, 0xc6, 0x2a, 0x0a, 0x14, 0x0f, 0x7c, 0x4d, 0x92, 0x64, 0x5a, 0x0b,
- 0x4d, 0xdf, 0xf2, 0x14, 0x6e, 0xce, 0x96, 0x30, 0xa7, 0x66, 0x45, 0x1a,
- 0x9f, 0x99, 0x31, 0x71, 0x84, 0x65, 0xd3, 0x56, 0x43, 0x6b, 0x85, 0x97,
- 0x4f, 0xbc, 0xc6, 0xdd, 0xdd, 0x93, 0x78, 0x0e, 0xfd, 0x6b, 0xbf, 0xbb,
- 0x7b, 0xcd, 0xaf, 0x1f, 0xb3, 0x7b, 0x23, 0x63, 0xd9, 0x5b, 0xdb, 0x8d,
- 0x56, 0xc9, 0xc7, 0x6e, 0xdf, 0x7d, 0x6e, 0x57, 0x89, 0x22, 0xa5, 0x3f,
- 0x7a, 0xbe, 0xc2, 0xf0, 0x76, 0x08, 0x57, 0x8f, 0x37, 0xa8, 0x6e, 0xa6,
- 0xac, 0x06, 0xa4, 0xfb, 0xcf, 0xb2, 0x69, 0xa0, 0x8b, 0xc5, 0x16, 0x03,
- 0x32, 0x3b, 0xaf, 0x6b, 0x52, 0x92, 0x49, 0x3f, 0xc6, 0x46, 0xa7, 0xf8,
- 0x13, 0x86, 0x64, 0x9d, 0x03, 0xb1, 0xfc, 0x7f, 0x6c, 0x92, 0x7d, 0xab,
- 0xea, 0xcb, 0x9e, 0xd9, 0x4b, 0xde, 0x2f, 0xb0, 0x93, 0x29, 0x52, 0xde,
- 0x78, 0x54, 0x0b, 0x09, 0x3a, 0xc7, 0x48, 0x2d, 0xb1, 0xde, 0xb1, 0xa7,
- 0xcc, 0x27, 0x54, 0xd2, 0xc2, 0xcf, 0x5a, 0x3f, 0x55, 0x53, 0x45, 0xad,
- 0xe3, 0x78, 0x63, 0x98, 0x7d, 0xed, 0x63, 0x0c, 0x1f, 0x98, 0x0f, 0xa8,
- 0xd1, 0x58, 0xa5, 0x81, 0x56, 0x52, 0x3e, 0xe1, 0x9e, 0x73, 0x2c, 0xc8,
- 0xd2, 0xed, 0x4d, 0x1d, 0xdf, 0x5b, 0xc4, 0x51, 0x93, 0x3b, 0x16, 0xee,
- 0x0e, 0x42, 0x60, 0x10, 0x49, 0x8a, 0x2e, 0xc7, 0xa3, 0xf9, 0x0b, 0x02,
- 0x20, 0xb0, 0x9c, 0x9d, 0x6d, 0x5a, 0x08, 0xcb, 0xa3, 0x19, 0x3e, 0x6e,
- 0x73, 0xef, 0xf6, 0xa3, 0xbd, 0xa3, 0xed, 0xe6, 0x6f, 0xfe, 0x16, 0xaa,
- 0xde, 0x8b, 0xc8, 0xe6, 0xfa, 0x4d, 0x67, 0x61, 0x7f, 0x5d, 0x3c, 0xd5,
- 0x58, 0x6b, 0xe9, 0x6c, 0x51, 0x0c, 0xf5, 0x0b, 0x8f, 0x9a, 0x9f, 0xee,
- 0x32, 0x5b, 0xb6, 0x87, 0xdf, 0x36, 0x3f, 0xdd, 0xb9, 0xf1, 0x65, 0x99,
- 0x3f, 0x3f, 0xdd, 0xb5, 0x5c, 0xcb, 0x1d, 0xc1, 0x75, 0xeb, 0xca, 0x9c,
- 0x3e, 0xe0, 0xda, 0xbc, 0x58, 0x59, 0x4a, 0x22, 0x27, 0x52, 0x71, 0xe7,
- 0xfa, 0xc9, 0x09, 0x63, 0x2a, 0x23, 0x31, 0x42, 0x5e, 0x3f, 0xe5, 0xd2,
- 0x3e, 0x71, 0xb9, 0xa9, 0xbb, 0x31, 0x52, 0xfc, 0x9b, 0x4f, 0x08, 0xd9,
- 0xc9, 0x39, 0xfb, 0x48, 0x59, 0xb7, 0xd4, 0x19, 0x4b, 0x78, 0x33, 0x93,
- 0xc3, 0x05, 0x55, 0xe7, 0x19, 0x19, 0xf5, 0xc9, 0x32, 0xa1, 0xc6, 0xb8,
- 0xc4, 0x8d, 0x06, 0x07, 0xaa, 0x13, 0x73, 0x77, 0x49, 0xd2, 0x6f, 0xb7,
- 0x3b, 0x68, 0x9d, 0x91, 0xd7, 0x66, 0x94, 0xe6, 0x5e, 0xb1, 0xce, 0xba,
- 0x9f, 0x5c, 0xe7, 0xd7, 0x01, 0xa2, 0xfb, 0xf8, 0xbe, 0x89, 0x54, 0xa0,
- 0xd0, 0xa8, 0x69, 0x16, 0xb6, 0x6a, 0x49, 0x70, 0x7b, 0xfa, 0x7c, 0xb8,
- 0xbb, 0xdd, 0x27, 0x4a, 0xe8, 0x05, 0x66, 0x80, 0x4a, 0x04, 0xac, 0x5e,
- 0x47, 0x15, 0x32, 0xf9, 0x35, 0x5d, 0x76, 0x70, 0x2c, 0x44, 0x32, 0x41,
- 0xc8, 0xb1, 0x26, 0x19, 0x56, 0x9a, 0xbe, 0x24, 0x48, 0x97, 0xed, 0xea,
- 0xb8, 0xbc, 0x0f, 0x96, 0x29, 0xb8, 0xc5, 0xba, 0x7e, 0x6b, 0x71, 0x96,
- 0x39, 0x0a, 0x78, 0xef, 0x26, 0x57, 0x65, 0x5b, 0x64, 0x80, 0xb0, 0x03,
- 0x20, 0xa6, 0x20, 0xd2, 0x32, 0x08, 0x8b, 0xb6, 0x5f, 0x9c, 0xc0, 0xa9,
- 0xc2, 0x5f, 0x10, 0xdb, 0x97, 0x2d, 0x0c, 0x2b, 0xf1, 0xc8, 0x40, 0x25,
- 0x57, 0x22, 0xf3, 0x2e, 0xf4, 0x43, 0x44, 0x2f, 0xeb, 0xf6, 0x72, 0x18,
- 0xb5, 0xad, 0x03, 0xa7, 0xb8, 0xb2, 0xc3, 0xe1, 0x30, 0x52, 0x49, 0x7f,
- 0x9b, 0x67, 0x77, 0x2d, 0x2f, 0xa0, 0xf4, 0xac, 0x6f, 0xb9, 0x19, 0xd8,
- 0xf8, 0xbc, 0xa5, 0x19, 0x32, 0x4d, 0x8e, 0x4b, 0xcb, 0x3e, 0xbe, 0xe6,
- 0x20, 0xfb, 0x4f, 0x7b, 0xd3, 0xfc, 0x91, 0xa7, 0xb9, 0x8e, 0x95, 0xa2,
- 0x31, 0x26, 0xab, 0x83, 0x92, 0xef, 0x93, 0x31, 0x56, 0xdd, 0x27, 0xe0,
- 0x0c, 0x70, 0x4a, 0x2a, 0xe4, 0x0a, 0xa7, 0x3e, 0xe7, 0x35, 0x43, 0xa2,
- 0x32, 0xa4, 0x49, 0x18, 0xa8, 0xe2, 0xcf, 0xb4, 0xcf, 0xbc, 0x38, 0xe8,
- 0x54, 0x3a, 0x19, 0xd1, 0x3e, 0x21, 0x1b, 0x18, 0x97, 0xac, 0xe2, 0xa0,
- 0xc3, 0x0a, 0x8c, 0x64, 0x3d, 0xc8, 0x8a, 0x78, 0xa4, 0x09, 0x5e, 0x90,
- 0xde, 0x31, 0x59, 0x24, 0x3a, 0xc0, 0x78, 0xa8, 0x49, 0xd7, 0xd5, 0x0f,
- 0x00, 0xf9, 0x23, 0x19, 0xdf, 0x2b, 0x11, 0x93, 0xb8, 0x81, 0x1c, 0xd4,
- 0x6b, 0x57, 0x3d, 0x75, 0xa5, 0x71, 0x0e, 0xce, 0xc7, 0x39, 0xd4, 0x18,
- 0x37, 0x0c, 0x23, 0x93, 0xc6, 0x6b, 0x1f, 0xa3, 0x37, 0xa8, 0x72, 0xb6,
- 0x95, 0x97, 0x68, 0x98, 0xe9, 0x3e, 0xa2, 0x4b, 0xcc, 0xaa, 0x1f, 0x17,
- 0xdc, 0x13, 0xe1, 0xcc, 0x92, 0x62, 0xde, 0x38, 0xfb, 0x52, 0x38, 0x2b,
- 0xb5, 0xb2, 0x5d, 0x1c, 0x05, 0x8b, 0x46, 0x45, 0xb3, 0x3f, 0xbc, 0x49,
- 0x3f, 0x7d, 0x1a, 0xd6, 0xd9, 0x8e, 0xd9, 0xb5, 0xf5, 0x4e, 0x5d, 0xcf,
- 0xe8, 0xa3, 0x35, 0x80, 0x9f, 0xd6, 0x72, 0xd9, 0x7d, 0xba, 0xb7, 0x1b,
- 0x48, 0x84, 0xf1, 0x24, 0xa5, 0x57, 0x5b, 0xc2, 0xd6, 0x91, 0xd9, 0x31,
- 0x37, 0x45, 0x37, 0x5b, 0x91, 0x31, 0x6f, 0x81, 0xde, 0xec, 0x17, 0xfa,
- 0xb1, 0x68, 0x70, 0x79, 0x21, 0xb6, 0x1d, 0x07, 0xe5, 0x4d, 0x28, 0xb7,
- 0xd5, 0xaa, 0xac, 0x72, 0x39, 0xab, 0x5e, 0x54, 0xc6, 0x4c, 0x8a, 0xcd,
- 0xbd, 0x36, 0xf7, 0x83, 0x43, 0xf4, 0x60, 0xfe, 0x17, 0xa6, 0xad, 0x8f,
- 0xa0, 0xcd, 0xac, 0xf2, 0x98, 0x78, 0x43, 0xa3, 0x2c, 0xf5, 0x03, 0x87,
- 0x6d, 0x76, 0x77, 0x77, 0x37, 0x5c, 0xe7, 0x32, 0xf9, 0x87, 0xc3, 0x6f,
- 0xed, 0xe6, 0xce, 0xcc, 0xae, 0x3d, 0x35, 0x76, 0xc4, 0xa7, 0xc4, 0x83,
- 0x97, 0xb0, 0x3c, 0x24, 0x1a, 0x13, 0x48, 0xbe, 0xbf, 0x78, 0x63, 0x69,
- 0x6f, 0xb5, 0xb0, 0x9f, 0x9c, 0x4e, 0x75, 0xe8, 0x1e, 0xcf, 0x72, 0x86,
- 0xfc, 0x20, 0xbc, 0xda, 0xa3, 0xc3, 0xf3, 0x0f, 0xef, 0x8e, 0x2f, 0x3f,
- 0x5c, 0x1c, 0xfe, 0x40, 0x53, 0xc8, 0x06, 0xa1, 0xb9, 0xaf, 0xc8, 0x15,
- 0x59, 0x95, 0x25, 0x51, 0x58, 0xbd, 0x45, 0xc5, 0x52, 0x5e, 0x00, 0xd9,
- 0x21, 0x4a, 0xaa, 0x6c, 0xe1, 0x6a, 0xa4, 0x9f, 0xa6, 0x2f, 0x07, 0x49,
- 0x6b, 0xbe, 0x3e, 0x1a, 0xcb, 0x21, 0x9b, 0x0d, 0xcb, 0xea, 0x9a, 0x76,
- 0xe1, 0xce, 0x6b, 0x91, 0x9f, 0xd1, 0xe6, 0x76, 0x24, 0xa0, 0x4a, 0xe8,
- 0x47, 0xb7, 0xd5, 0x15, 0x81, 0x25, 0xac, 0xa3, 0x93, 0xf7, 0xf9, 0xc8,
- 0xbc, 0xad, 0xf9, 0x14, 0x02, 0x70, 0x71, 0xfb, 0x74, 0x8d, 0x31, 0xd0,
- 0xb4, 0xf4, 0x27, 0x61, 0x74, 0xc2, 0x0e, 0x82, 0xd9, 0xe9, 0x87, 0xc9,
- 0xb9, 0x30, 0x6c, 0x76, 0xdf, 0x8f, 0xd4, 0x5e, 0x03, 0xcc, 0xbb, 0xb4,
- 0x55, 0xec, 0xa8, 0xad, 0xa1, 0xf8, 0xfe, 0x7a, 0x22, 0x35, 0xd5, 0x83,
- 0xba, 0x66, 0xc7, 0xaa, 0x0a, 0xf5, 0xc1, 0xf3, 0x50, 0x97, 0x24, 0x8a,
- 0x35, 0x6f, 0xcc, 0xcf, 0x65, 0xcc, 0xcf, 0xff, 0xa1, 0x31, 0x3f, 0xff,
- 0x07, 0xc6, 0xfc, 0xf4, 0x77, 0x1e, 0xf3, 0xd3, 0xe8, 0x98, 0xbd, 0xaf,
- 0x0c, 0xfe, 0x4a, 0x63, 0xfe, 0xeb, 0xb2, 0xf8, 0x38, 0x30, 0xfd, 0xa5,
- 0x5b, 0x58, 0x08, 0x97, 0xea, 0xb8, 0xca, 0xdc, 0xe2, 0xf8, 0x80, 0x5b,
- 0xd1, 0x61, 0x9b, 0x7a, 0xfc, 0x51, 0xa9, 0x54, 0x8b, 0x72, 0x74, 0x71,
- 0x25, 0x0f, 0xb6, 0xe7, 0x75, 0xce, 0xa9, 0xd4, 0xb0, 0x9e, 0x90, 0x6d,
- 0x43, 0x8e, 0xb1, 0x9e, 0xf4, 0x46, 0x9b, 0xed, 0x29, 0xe5, 0x03, 0x4e,
- 0x7a, 0x1a, 0x42, 0xac, 0x4c, 0x60, 0x58, 0xe3, 0x4c, 0xda, 0xf0, 0x9b,
- 0x63, 0x61, 0xce, 0xaf, 0x2c, 0xfc, 0x8c, 0x36, 0xcc, 0x21, 0x09, 0x72,
- 0x37, 0x87, 0x32, 0xe3, 0xf2, 0x7e, 0x41, 0x0d, 0x9a, 0xbb, 0xb9, 0x32,
- 0x77, 0x30, 0xc7, 0xc0, 0x99, 0x22, 0xdc, 0x76, 0x32, 0xe9, 0x74, 0x50,
- 0x1c, 0xad, 0x37, 0xd9, 0xfd, 0x66, 0xa0, 0x30, 0x4c, 0x66, 0x25, 0xc9,
- 0x1b, 0xd2, 0xeb, 0xd6, 0x68, 0x22, 0x63, 0xc7, 0x76, 0xc5, 0xf7, 0x45,
- 0x87, 0xfe, 0xca, 0xbf, 0x37, 0x3e, 0x66, 0xd9, 0x22, 0x9d, 0xa1, 0xaa,
- 0x9f, 0xc2, 0xae, 0xab, 0x38, 0x7a, 0x5a, 0x79, 0x59, 0x9a, 0xb3, 0x8c,
- 0x37, 0x5a, 0x49, 0x2f, 0x90, 0x73, 0xbc, 0x90, 0x94, 0xa4, 0x9f, 0xe4,
- 0x53, 0x94, 0xd9, 0xc5, 0x29, 0x1b, 0x1c, 0x1e, 0xbc, 0xed, 0x04, 0x0c,
- 0xcf, 0xb1, 0xc0, 0x4f, 0xd8, 0x4f, 0x28, 0x84, 0x15, 0x65, 0x05, 0xdc,
- 0xe6, 0x94, 0x0d, 0xd4, 0x85, 0x3d, 0xb5, 0xef, 0xf3, 0xeb, 0x00, 0xb4,
- 0x69, 0x81, 0xb6, 0xf3, 0x02, 0xd2, 0x13, 0xa5, 0xbd, 0xff, 0x48, 0xdd,
- 0x00, 0x6b, 0x60, 0xb0, 0xa5, 0x14, 0xbb, 0x95, 0xf5, 0xdf, 0xcb, 0xa3,
- 0xf3, 0x0f, 0xdf, 0x1d, 0x1f, 0x9f, 0x9f, 0xbc, 0x3e, 0x3d, 0x96, 0x03,
- 0x63, 0x7f, 0xf4, 0xee, 0xf2, 0xfb, 0x53, 0xa5, 0xa8, 0xd2, 0xbd, 0x18,
- 0x6c, 0x78, 0x41, 0x1c, 0x67, 0xa1, 0xdc, 0x07, 0x13, 0x4f, 0xd1, 0x24,
- 0x87, 0x27, 0x3f, 0x1a, 0xad, 0xf5, 0x7c, 0xf0, 0xfe, 0xc7, 0x80, 0x06,
- 0xc1, 0x4b, 0x6f, 0x5f, 0xc9, 0x08, 0x6e, 0x36, 0x22, 0x6c, 0x47, 0x37,
- 0xf6, 0x55, 0xd9, 0x3e, 0xbf, 0xf3, 0x35, 0x68, 0x9a, 0x5b, 0x16, 0x56,
- 0x61, 0xe0, 0x17, 0x95, 0x6a, 0xc4, 0xcb, 0xa8, 0x79, 0xbe, 0xab, 0x0c,
- 0x4e, 0x6b, 0xfd, 0xa5, 0x9f, 0xb7, 0x6d, 0xc6, 0x8f, 0xd9, 0x3d, 0xe0,
- 0xe3, 0x92, 0x97, 0xf4, 0xdf, 0x38, 0xc3, 0xd6, 0x79, 0x95, 0xdf, 0x92,
- 0xfe, 0x67, 0x9e, 0xe5, 0x68, 0x12, 0x3d, 0x3a, 0xb4, 0x7c, 0x63, 0x12,
- 0xd1, 0xa2, 0x46, 0x10, 0xf4, 0x46, 0xa3, 0xd8, 0x58, 0x41, 0x54, 0x34,
- 0x9f, 0xb2, 0xaf, 0x83, 0xdb, 0x43, 0x83, 0x66, 0x7a, 0x86, 0xc9, 0xeb,
- 0xe3, 0x8b, 0x7e, 0x72, 0x7e, 0xfc, 0x96, 0x73, 0xe4, 0x8f, 0xdf, 0x7d,
- 0xc3, 0x14, 0x6c, 0xca, 0xac, 0x85, 0x20, 0x6c, 0x98, 0x27, 0xe6, 0xcd,
- 0x89, 0x79, 0x17, 0x49, 0x71, 0x75, 0x6d, 0x6e, 0xd7, 0x3f, 0x10, 0xbb,
- 0x83, 0xc7, 0xf6, 0xd2, 0xfc, 0x27, 0x36, 0x55, 0xc6, 0x8e, 0xf8, 0x36,
- 0x32, 0x5d, 0xa2, 0x98, 0xd9, 0xb0, 0xbd, 0x18, 0x05, 0x34, 0x1b, 0x3c,
- 0x63, 0x66, 0x42, 0xc2, 0x00, 0xb2, 0x4e, 0x10, 0xcc, 0x3e, 0xa0, 0x97,
- 0x30, 0x59, 0xa6, 0x84, 0xff, 0xc8, 0x8a, 0x35, 0x9f, 0xeb, 0xd3, 0xbe,
- 0x04, 0x16, 0xb2, 0x9b, 0x8c, 0x58, 0x61, 0x66, 0x95, 0x4b, 0xfd, 0x92,
- 0x0b, 0xbd, 0x18, 0x85, 0x6a, 0x9a, 0x4f, 0x51, 0xf9, 0x6d, 0xbe, 0x51,
- 0x56, 0xd3, 0x08, 0xee, 0xad, 0x99, 0x38, 0xbd, 0x32, 0xd8, 0xdd, 0xa1,
- 0xa9, 0x5f, 0xca, 0xb4, 0x36, 0xcb, 0xc7, 0x95, 0x51, 0xb8, 0x1c, 0x51,
- 0x80, 0xb2, 0xc1, 0x2d, 0x3e, 0x4e, 0xea, 0xbd, 0xbd, 0x08, 0xd5, 0xb9,
- 0x96, 0x43, 0xf5, 0x35, 0x87, 0xef, 0xfc, 0xbb, 0xa3, 0xd1, 0x9f, 0xf6,
- 0xf6, 0x90, 0x32, 0xb9, 0x45, 0xa9, 0x6d, 0x9f, 0x3d, 0xdb, 0xdb, 0xdf,
- 0x8e, 0xe9, 0x7b, 0x41, 0x0e, 0x00, 0xf4, 0xbf, 0x85, 0x37, 0xdf, 0x08,
- 0x88, 0x49, 0x7a, 0xb4, 0x6d, 0x78, 0x9a, 0x51, 0x3a, 0x11, 0xd5, 0x80,
- 0xd9, 0xc8, 0x07, 0xf2, 0xac, 0x82, 0x30, 0xad, 0x57, 0x09, 0xdb, 0xe3,
- 0xfe, 0x1f, 0xf4, 0xec, 0x46, 0xf0, 0x33, 0x4e, 0x11, 0xad, 0xf6, 0xfa,
- 0x8d, 0x0d, 0xda, 0x75, 0xc5, 0xfb, 0xe3, 0x42, 0x52, 0x94, 0x03, 0xa5,
- 0xe1, 0xfb, 0xc6, 0xd1, 0xcc, 0x75, 0x82, 0x89, 0x14, 0x4b, 0x0c, 0xdc,
- 0x71, 0xd2, 0xa3, 0x5e, 0xc2, 0x2b, 0x4e, 0x5b, 0x34, 0x75, 0xad, 0xda,
- 0xf9, 0xf7, 0x8e, 0x74, 0xbb, 0xd5, 0x20, 0xc9, 0x0a, 0xd7, 0x6b, 0xcf,
- 0x1c, 0xb6, 0x5e, 0xb4, 0xc5, 0x3f, 0xf4, 0x10, 0x55, 0xe3, 0xe4, 0xe5,
- 0xcc, 0xbc, 0x38, 0x8b, 0x97, 0xe9, 0x1c, 0x33, 0x33, 0xcf, 0x77, 0xc6,
- 0xb8, 0xcf, 0xaa, 0xb2, 0xee, 0x14, 0x14, 0x28, 0xe9, 0x3a, 0xfb, 0x40,
- 0xd0, 0x8c, 0xc0, 0x90, 0x86, 0xc9, 0x9a, 0xb4, 0x68, 0x32, 0x3b, 0x01,
- 0x86, 0xc7, 0x26, 0xea, 0x1a, 0x36, 0xfb, 0xc9, 0x26, 0x71, 0xd1, 0xd0,
- 0x9f, 0x20, 0x61, 0x27, 0xe2, 0x88, 0x3c, 0x9d, 0x6d, 0x12, 0x43, 0x48,
- 0x17, 0x77, 0x58, 0xf6, 0xda, 0xa6, 0x91, 0x7e, 0xdc, 0x1a, 0x1d, 0x67,
- 0x54, 0x46, 0x4b, 0x3f, 0x04, 0xc9, 0xb5, 0x96, 0xb4, 0x19, 0xa4, 0x89,
- 0x4b, 0x35, 0x64, 0x1d, 0xb0, 0xa6, 0xd8, 0xe6, 0xda, 0x30, 0x2b, 0xab,
- 0xb2, 0x11, 0x7f, 0xe7, 0x7b, 0x85, 0x97, 0xe1, 0xd7, 0xb2, 0xdb, 0x3a,
- 0x7f, 0x67, 0xa7, 0x39, 0x5d, 0x2c, 0x7f, 0x9d, 0xf5, 0xf5, 0x28, 0x6d,
- 0xe5, 0x21, 0x57, 0x92, 0xfa, 0x43, 0x02, 0x7c, 0x39, 0xd5, 0x3e, 0x4c,
- 0xd9, 0x8c, 0x93, 0x32, 0x39, 0x9f, 0x6a, 0x4e, 0x14, 0x82, 0x30, 0x90,
- 0x76, 0x67, 0x83, 0x62, 0xa9, 0x76, 0x7b, 0xc0, 0xe6, 0xf6, 0x51, 0x22,
- 0xfe, 0x03, 0x14, 0x51, 0xdc, 0x55, 0x04, 0xad, 0x58, 0x38, 0x80, 0xd6,
- 0x59, 0xb6, 0x0a, 0x70, 0x47, 0xd1, 0x17, 0xcd, 0x22, 0xcd, 0x84, 0x07,
- 0x4d, 0x33, 0x97, 0x2a, 0xed, 0xd6, 0x40, 0x02, 0xbf, 0x6a, 0xe1, 0xd3,
- 0x7b, 0xff, 0xf2, 0x0f, 0xae, 0x9c, 0x50, 0xd7, 0x31, 0x0a, 0x47, 0xa4,
- 0xa4, 0xfa, 0xd1, 0xb8, 0x52, 0x9d, 0x92, 0x20, 0x64, 0x17, 0x0f, 0x70,
- 0x89, 0xbc, 0x34, 0xf2, 0x34, 0x0b, 0x80, 0x75, 0xda, 0x14, 0xa2, 0x73,
- 0x21, 0x88, 0x74, 0x15, 0x37, 0x09, 0xde, 0xb5, 0xfc, 0xb5, 0xbe, 0xff,
- 0x7d, 0x40, 0x3a, 0x66, 0xd7, 0x3f, 0x46, 0xd4, 0x06, 0xae, 0xa4, 0x13,
- 0xc7, 0x16, 0xc0, 0xd5, 0x0a, 0x88, 0xa2, 0x19, 0x95, 0x3c, 0x21, 0xe4,
- 0x3c, 0x96, 0x5c, 0x3d, 0x58, 0x03, 0x69, 0xe0, 0xb4, 0x40, 0x72, 0x34,
- 0xb3, 0x05, 0x50, 0x63, 0x94, 0x41, 0x36, 0x65, 0x57, 0x26, 0x96, 0xc4,
- 0xf6, 0x93, 0xce, 0x9e, 0xf4, 0x8b, 0x11, 0xd6, 0xcd, 0x89, 0x0e, 0x74,
- 0xfb, 0xb1, 0x69, 0xe2, 0x2e, 0x9f, 0x36, 0x37, 0xe0, 0xef, 0x50, 0x53,
- 0xa6, 0x96, 0x1a, 0x62, 0xf2, 0x2a, 0xe7, 0x61, 0x85, 0xcc, 0x38, 0xee,
- 0x71, 0xe3, 0x15, 0xc3, 0x9c, 0x26, 0x8c, 0xa5, 0x43, 0x8e, 0x35, 0x2c,
- 0x03, 0x9c, 0xd0, 0x3b, 0xac, 0x9a, 0x59, 0x14, 0x89, 0xd4, 0x1c, 0xa2,
- 0x2b, 0x62, 0xe6, 0x08, 0x5d, 0xea, 0x5a, 0xca, 0x32, 0xb4, 0x47, 0x84,
- 0xe9, 0x7a, 0x3e, 0x32, 0x84, 0xf6, 0x77, 0x9b, 0xca, 0x41, 0x49, 0x20,
- 0x69, 0x5e, 0xbe, 0xbd, 0x39, 0xa1, 0x1f, 0xf3, 0x10, 0xd5, 0x1d, 0x9f,
- 0x37, 0xa2, 0x6d, 0xce, 0xaf, 0xbf, 0xdd, 0x54, 0xc7, 0x26, 0xd5, 0x56,
- 0x5f, 0xa7, 0xf2, 0x6b, 0xc6, 0x55, 0xd8, 0xbc, 0xe6, 0x87, 0xbe, 0xd1,
- 0x87, 0x42, 0xfe, 0x4b, 0x72, 0xb3, 0xb3, 0x5b, 0x5d, 0x13, 0x6f, 0xea,
- 0x03, 0x4a, 0xe6, 0xfe, 0xae, 0x9f, 0x3c, 0x99, 0x63, 0x51, 0xf6, 0xbe,
- 0x89, 0xa2, 0x8f, 0x70, 0x62, 0x19, 0x99, 0x4b, 0x9a, 0x15, 0x30, 0xf8,
- 0x0b, 0x59, 0x49, 0x98, 0x33, 0xde, 0x99, 0xb6, 0x6e, 0x84, 0x6b, 0x93,
- 0xdc, 0xed, 0xd5, 0x55, 0x66, 0x68, 0xa9, 0x16, 0xa4, 0xd5, 0x4f, 0x33,
- 0x45, 0x14, 0x9e, 0xc3, 0x1d, 0x49, 0x99, 0x15, 0x0b, 0x29, 0x9d, 0xa7,
- 0xad, 0x3a, 0xb0, 0x70, 0x85, 0xf5, 0x8c, 0x1e, 0x00, 0xa5, 0x4e, 0x19,
- 0x64, 0x61, 0xce, 0x16, 0xb0, 0x68, 0x2c, 0xeb, 0x95, 0xd7, 0x25, 0xaa,
- 0x80, 0x9b, 0x24, 0xe2, 0x94, 0xf9, 0x03, 0xaf, 0xc4, 0x19, 0xd2, 0x79,
- 0xf2, 0xba, 0x19, 0x44, 0xb0, 0x21, 0x39, 0x68, 0x73, 0x7e, 0x76, 0xfe,
- 0x64, 0xdb, 0x56, 0xee, 0x31, 0x1a, 0x9b, 0x14, 0x53, 0x27, 0x9a, 0x1b,
- 0x6c, 0xcb, 0xac, 0x15, 0xcb, 0x15, 0x25, 0x3d, 0xa1, 0x31, 0x38, 0xc9,
- 0x94, 0x7c, 0x03, 0xdf, 0x83, 0x87, 0xde, 0xa5, 0x94, 0x7b, 0xbc, 0x69,
- 0xee, 0x58, 0xb2, 0x4c, 0xa0, 0xd4, 0xb0, 0x8d, 0x10, 0x82, 0x42, 0xb2,
- 0x70, 0x04, 0xbf, 0x61, 0x80, 0x52, 0xa1, 0xa4, 0x4d, 0x3f, 0x40, 0x79,
- 0xce, 0x9d, 0x4e, 0x72, 0x92, 0x42, 0x24, 0xfd, 0x43, 0x2a, 0x72, 0xdc,
- 0x83, 0x88, 0x20, 0x68, 0xe1, 0x14, 0xdf, 0xb7, 0x36, 0xa0, 0x4a, 0xee,
- 0x4d, 0xda, 0xb6, 0x8c, 0xbf, 0x3a, 0x5c, 0xc9, 0x19, 0x6d, 0x31, 0xf0,
- 0x5b, 0x26, 0x94, 0x30, 0x1c, 0xa5, 0xc9, 0xbb, 0xd3, 0xd1, 0xa5, 0x1f,
- 0xf5, 0x81, 0x1e, 0x16, 0xa4, 0x3d, 0xb6, 0x41, 0xa0, 0xbc, 0xdc, 0x81,
- 0xd3, 0x93, 0xd1, 0xe5, 0x30, 0x86, 0xee, 0x7e, 0x90, 0x8c, 0x28, 0x33,
- 0xff, 0x8d, 0x97, 0xc4, 0xc1, 0x2c, 0xc2, 0xa8, 0x29, 0xe3, 0x50, 0x16,
- 0x12, 0xc7, 0x4c, 0xbb, 0x79, 0xe5, 0x13, 0xe8, 0x06, 0x3b, 0x95, 0xba,
- 0xf8, 0x05, 0xa7, 0x34, 0x4a, 0x3a, 0xa4, 0x86, 0x75, 0xea, 0xe5, 0x78,
- 0xe0, 0xa1, 0xae, 0xb1, 0xbe, 0x03, 0x3a, 0x1f, 0xb3, 0x7b, 0xcd, 0x0d,
- 0xf5, 0x31, 0x34, 0x0a, 0xb7, 0x64, 0x3f, 0xf1, 0x46, 0x12, 0xbc, 0xbc,
- 0x96, 0x77, 0x7a, 0x92, 0x64, 0xc0, 0xe7, 0x84, 0x5f, 0x88, 0x9e, 0x7e,
- 0xd4, 0xa6, 0xa2, 0x89, 0xe8, 0xcc, 0xa3, 0xf0, 0xbf, 0xb5, 0xb3, 0x9b,
- 0x29, 0xca, 0xe6, 0xa1, 0x88, 0xad, 0x0b, 0x2c, 0x7a, 0xbb, 0x50, 0xe1,
- 0xfc, 0x64, 0xd7, 0x31, 0x21, 0x35, 0x3b, 0x89, 0x6c, 0xaf, 0x57, 0x01,
- 0x86, 0xe6, 0x53, 0xc6, 0xcc, 0xab, 0xdb, 0xa0, 0x79, 0x5c, 0x20, 0x4d,
- 0x22, 0x87, 0xc9, 0x42, 0xc8, 0x93, 0xb1, 0x62, 0x25, 0xd9, 0x87, 0xd6,
- 0x4a, 0x65, 0x1b, 0xfc, 0xc8, 0xc9, 0x91, 0x08, 0x6c, 0xf5, 0x63, 0x60,
- 0x4e, 0x31, 0x08, 0x12, 0x0b, 0xd4, 0x50, 0x24, 0xef, 0x4f, 0x5e, 0x9f,
- 0xda, 0xf9, 0x92, 0xf9, 0x41, 0xba, 0x9d, 0x1d, 0x2a, 0xa5, 0xc0, 0xab,
- 0xd0, 0xc4, 0x8a, 0x04, 0x51, 0x9a, 0x65, 0x91, 0x9b, 0xef, 0x27, 0xac,
- 0xba, 0x5e, 0x51, 0xd6, 0x77, 0x05, 0x8e, 0x6f, 0xbd, 0xc6, 0x36, 0x6b,
- 0x4b, 0x79, 0x95, 0x4f, 0xe5, 0xa4, 0x7e, 0xd4, 0x70, 0xe3, 0x8a, 0x5c,
- 0xc5, 0xb5, 0x28, 0x0b, 0x7b, 0x6d, 0x28, 0x44, 0x20, 0xa2, 0x0a, 0x70,
- 0x91, 0xb9, 0x8e, 0x76, 0x50, 0xea, 0x14, 0x28, 0x17, 0x19, 0x43, 0x49,
- 0xbb, 0x14, 0x9a, 0x36, 0x24, 0x47, 0x59, 0x49, 0x89, 0xd4, 0xd6, 0x9b,
- 0x8b, 0xb3, 0xb7, 0x83, 0xcb, 0x33, 0x10, 0x63, 0xa3, 0xe9, 0x24, 0xa2,
- 0x6f, 0xf2, 0x5b, 0xb5, 0xcf, 0xee, 0xdd, 0xce, 0x35, 0xdb, 0xaa, 0xb7,
- 0x95, 0x7c, 0x1b, 0x17, 0x0a, 0xba, 0xa7, 0x6f, 0x05, 0x54, 0x07, 0x05,
- 0x6b, 0x22, 0x70, 0x3c, 0x98, 0xbd, 0x34, 0x49, 0x49, 0x61, 0xb4, 0x91,
- 0x27, 0x34, 0xa0, 0xa2, 0x7b, 0xbc, 0xac, 0xef, 0x13, 0x29, 0x44, 0xab,
- 0x39, 0x31, 0xb2, 0x09, 0xdd, 0xf9, 0x8a, 0xec, 0x65, 0x41, 0x4d, 0xa8,
- 0x40, 0x87, 0x2b, 0x40, 0x9a, 0xd2, 0x9c, 0xde, 0xb4, 0xaa, 0xca, 0x3b,
- 0xbd, 0xb7, 0x50, 0x26, 0x6a, 0x96, 0xd1, 0x74, 0x9d, 0xd6, 0xa9, 0xba,
- 0x5f, 0x89, 0x04, 0x21, 0xe0, 0x46, 0xca, 0x32, 0xbc, 0x56, 0xfd, 0x7b,
- 0xd6, 0xae, 0xcf, 0xd7, 0x6c, 0xd1, 0x41, 0x53, 0x2d, 0xeb, 0x90, 0xb0,
- 0x5c, 0xf3, 0x74, 0x4e, 0x11, 0x1a, 0xa6, 0x04, 0x53, 0xef, 0x9d, 0xbe,
- 0x00, 0xb0, 0x11, 0x5e, 0x07, 0xa8, 0xa1, 0x6c, 0x35, 0x8f, 0x92, 0x94,
- 0xfc, 0x7b, 0x70, 0x82, 0x05, 0x96, 0x95, 0x94, 0x7a, 0xa2, 0x7c, 0x44,
- 0x8a, 0xa9, 0xe3, 0xec, 0xcb, 0x1b, 0xe6, 0xea, 0xd3, 0x0c, 0x50, 0x00,
- 0x2f, 0x41, 0x1a, 0xd0, 0x4f, 0x03, 0x5d, 0x52, 0x11, 0x55, 0x72, 0xaa,
- 0x66, 0x9f, 0x2e, 0x27, 0x58, 0x25, 0x0a, 0xd1, 0x11, 0x15, 0xe0, 0x98,
- 0x31, 0x1e, 0xb5, 0x20, 0x9c, 0x9a, 0x76, 0xa9, 0xb5, 0xec, 0x71, 0xe9,
- 0x6a, 0x59, 0xfc, 0x94, 0x65, 0x37, 0x22, 0x55, 0x92, 0x32, 0x77, 0x32,
- 0x56, 0x2b, 0xab, 0xae, 0xc9, 0x49, 0x41, 0x20, 0x4b, 0xaf, 0x1a, 0x11,
- 0x57, 0x04, 0xb0, 0x0d, 0x68, 0x61, 0x89, 0xd2, 0x13, 0x0a, 0x1e, 0x6d,
- 0x5f, 0x44, 0xc9, 0xbf, 0x4e, 0x6b, 0x23, 0x96, 0xda, 0x2d, 0x6e, 0xaf,
- 0xf1, 0x27, 0x2f, 0x35, 0x09, 0xdb, 0x5b, 0xbd, 0x56, 0xbe, 0xef, 0x8a,
- 0x95, 0x3b, 0xb9, 0xf2, 0x49, 0x8c, 0x24, 0x9b, 0xc2, 0x9b, 0x73, 0x91,
- 0x52, 0x80, 0x69, 0xbb, 0x66, 0xaa, 0x72, 0xca, 0x94, 0x9d, 0xc6, 0x6a,
- 0x70, 0x94, 0xfb, 0xad, 0x49, 0xf4, 0xa3, 0xc9, 0x96, 0x56, 0x89, 0xd9,
- 0xaa, 0x85, 0x53, 0xf9, 0xd5, 0x81, 0x2d, 0x63, 0x23, 0x99, 0xd6, 0x69,
- 0xee, 0xc9, 0x8f, 0x3f, 0x26, 0x6d, 0xb2, 0xd6, 0xed, 0x55, 0x95, 0xf3,
- 0x92, 0xc0, 0x3e, 0x2d, 0xfd, 0xee, 0x06, 0x35, 0x38, 0xbc, 0xe7, 0x8c,
- 0x42, 0x80, 0x74, 0x5f, 0xf8, 0x5e, 0xc4, 0x4b, 0x64, 0xac, 0xbf, 0x1b,
- 0x2d, 0xca, 0x40, 0xc2, 0x85, 0xcb, 0xb8, 0xa0, 0x8c, 0x66, 0x14, 0x84,
- 0x85, 0x69, 0x49, 0x10, 0xb8, 0x9a, 0x2c, 0xc1, 0x41, 0x10, 0xe4, 0xaf,
- 0xfa, 0x93, 0xe5, 0xe8, 0xbc, 0xeb, 0x1b, 0x0a, 0x06, 0x08, 0xa8, 0xeb,
- 0x83, 0x84, 0xb2, 0x8c, 0x13, 0x80, 0x71, 0xe1, 0xc2, 0x67, 0xf8, 0x79,
- 0xce, 0x79, 0x9b, 0x54, 0x99, 0xf8, 0x1a, 0x44, 0x7d, 0x8a, 0x01, 0x08,
- 0x12, 0xc0, 0x87, 0x24, 0x61, 0x0f, 0xb1, 0xc2, 0xa9, 0x77, 0x62, 0x1c,
- 0x3a, 0x5b, 0x67, 0xcd, 0x38, 0x67, 0x3b, 0x64, 0xaf, 0x2f, 0x49, 0x7f,
- 0xa2, 0x7a, 0x79, 0x00, 0x4c, 0x95, 0xec, 0xd4, 0x12, 0xa2, 0x51, 0xbe,
- 0x6d, 0xfe, 0x5d, 0xcf, 0xed, 0xb0, 0x1d, 0xc0, 0xa2, 0x5d, 0x10, 0x8b,
- 0x59, 0xaa, 0x30, 0xc1, 0xc2, 0x10, 0x10, 0x28, 0x55, 0x1f, 0x2b, 0x7f,
- 0x11, 0xf9, 0x76, 0x35, 0xaa, 0xcd, 0xfa, 0x34, 0xca, 0xd6, 0x99, 0x45,
- 0x3c, 0x00, 0xa5, 0x75, 0x47, 0x96, 0x92, 0x6e, 0xe0, 0xa7, 0x74, 0x18,
- 0x56, 0xec, 0xdb, 0x32, 0x26, 0xe9, 0x00, 0x8f, 0xd5, 0xab, 0xf2, 0x43,
- 0x5c, 0x98, 0x4b, 0x98, 0x16, 0xfc, 0x09, 0x53, 0x27, 0x99, 0x05, 0x48,
- 0x90, 0x9a, 0x14, 0x81, 0xec, 0xa7, 0xf2, 0xfc, 0xee, 0xd1, 0xf2, 0x43,
- 0x7d, 0xc0, 0x23, 0x30, 0xff, 0x3e, 0x7f, 0x7f, 0xb9, 0xed, 0xf8, 0xe8,
- 0x65, 0xb7, 0xfa, 0x39, 0xed, 0x52, 0xeb, 0x16, 0xa6, 0xed, 0x33, 0x02,
- 0x80, 0xc8, 0x29, 0xc9, 0xde, 0x91, 0x83, 0x41, 0x2e, 0x96, 0x27, 0xbb,
- 0x7b, 0xc6, 0x8e, 0xda, 0xdd, 0x07, 0x39, 0xed, 0x93, 0xdd, 0x27, 0xb6,
- 0x68, 0x5a, 0x9f, 0x0a, 0x21, 0xed, 0xf9, 0x45, 0x78, 0x4d, 0xb0, 0xf7,
- 0x9f, 0x7c, 0xfa, 0x84, 0x1f, 0xb7, 0x53, 0xb1, 0x07, 0xb6, 0x7c, 0xc9,
- 0xef, 0x66, 0xf4, 0xde, 0xf7, 0xe6, 0x1b, 0xa1, 0xb8, 0x65, 0xc1, 0xc5,
- 0x82, 0x20, 0xff, 0x25, 0x8c, 0x81, 0xe1, 0x2a, 0x1a, 0xab, 0xa6, 0x0b,
- 0xa3, 0xe4, 0xf3, 0x58, 0x99, 0x9d, 0x42, 0x43, 0xb7, 0x93, 0xa3, 0x80,
- 0x05, 0xa1, 0x68, 0xc6, 0x63, 0x5c, 0x1f, 0x41, 0xea, 0xc2, 0x93, 0xdd,
- 0x4f, 0xbe, 0x52, 0xdc, 0xda, 0x10, 0xe6, 0xaa, 0x13, 0x81, 0xa4, 0x99,
- 0xf7, 0xa1, 0x13, 0x82, 0xa4, 0xdf, 0x01, 0xe5, 0x75, 0x98, 0x23, 0x81,
- 0xf9, 0xd5, 0xbf, 0xee, 0x4b, 0x6e, 0x07, 0xff, 0xeb, 0x49, 0xfb, 0xa6,
- 0x24, 0xf7, 0xb0, 0xb6, 0xf9, 0x52, 0xfe, 0x12, 0xf8, 0x2a, 0xc1, 0x49,
- 0x4a, 0x8a, 0x31, 0xc8, 0x24, 0xb6, 0xad, 0xfb, 0x04, 0x06, 0x1f, 0x35,
- 0x61, 0xbb, 0x25, 0x4a, 0x8a, 0x90, 0x3d, 0x8b, 0x80, 0xee, 0xee, 0x8d,
- 0xd6, 0xfd, 0x30, 0x5c, 0xcd, 0x37, 0xa4, 0xba, 0x60, 0xf0, 0x09, 0xcd,
- 0x89, 0xb0, 0xf5, 0xc5, 0x56, 0x25, 0x2e, 0x17, 0xb1, 0xb3, 0x2b, 0x57,
- 0x03, 0x5d, 0xad, 0xea, 0x69, 0x97, 0x1e, 0x76, 0xfa, 0x62, 0xd4, 0x8a,
- 0x06, 0x8a, 0x5b, 0x2d, 0x45, 0x75, 0x81, 0x89, 0x4a, 0x53, 0xd1, 0x67,
- 0x1b, 0x95, 0x49, 0x99, 0x89, 0x5d, 0x43, 0x13, 0x23, 0x5b, 0x1d, 0xe5,
- 0xd0, 0x05, 0xc0, 0x60, 0x25, 0xb3, 0x22, 0x72, 0xa3, 0x71, 0x56, 0x45,
- 0x38, 0xc8, 0x05, 0x25, 0x8a, 0x67, 0xd0, 0xf9, 0x85, 0x37, 0xf6, 0x69,
- 0x1f, 0x7f, 0x7b, 0xb6, 0xfb, 0x62, 0x5f, 0x11, 0x0d, 0x8e, 0x2f, 0xdf,
- 0x74, 0x9d, 0x79, 0x95, 0xd9, 0x4f, 0xfc, 0xdf, 0x41, 0x96, 0x56, 0x37,
- 0xc6, 0xb8, 0x20, 0x58, 0x95, 0x01, 0x61, 0xf5, 0x0f, 0x76, 0x77, 0x63,
- 0x89, 0x16, 0x7f, 0x60, 0x29, 0xf9, 0x93, 0xa7, 0xed, 0x18, 0x1c, 0xa9,
- 0xf4, 0x03, 0x9a, 0xf1, 0xd5, 0xa8, 0x9f, 0xbc, 0xbf, 0x9c, 0x7f, 0xce,
- 0x01, 0x43, 0xcb, 0x1b, 0xad, 0x20, 0x7b, 0x90, 0x25, 0x13, 0x63, 0x87,
- 0xe9, 0xb8, 0xd4, 0x25, 0x99, 0x68, 0x8b, 0x6d, 0x88, 0xe6, 0x7e, 0x9b,
- 0xfd, 0xd6, 0xf4, 0x21, 0x30, 0x43, 0x41, 0xc4, 0x8b, 0x11, 0x11, 0x2d,
- 0xb2, 0xad, 0xa5, 0xce, 0xa8, 0xca, 0x08, 0x9e, 0x89, 0xd5, 0x3e, 0xa1,
- 0xd8, 0x79, 0x18, 0x62, 0x0a, 0x53, 0x50, 0x4d, 0x16, 0x52, 0x70, 0xc6,
- 0xff, 0xa6, 0xab, 0xb8, 0x95, 0xf0, 0xba, 0xff, 0x2c, 0x32, 0x71, 0xb8,
- 0xb0, 0x7f, 0xc5, 0xc4, 0xb5, 0xe7, 0xcd, 0x29, 0x47, 0xec, 0xc2, 0x83,
- 0xc1, 0x2b, 0x91, 0x82, 0x10, 0xfa, 0xa7, 0x56, 0x0a, 0xd8, 0x5f, 0x3d,
- 0x16, 0x9a, 0xee, 0xe1, 0x3a, 0xa0, 0x3a, 0xf7, 0xd6, 0x03, 0x63, 0x19,
- 0xd9, 0xc4, 0xa7, 0xf6, 0x48, 0xfa, 0x8e, 0x25, 0x81, 0x6e, 0x8f, 0xb9,
- 0x90, 0x40, 0xc1, 0xd7, 0x80, 0x08, 0x64, 0x17, 0x44, 0x22, 0x5b, 0x64,
- 0x18, 0xba, 0x9f, 0x68, 0xe0, 0x6d, 0x6e, 0x6b, 0xa3, 0x52, 0x59, 0xb1,
- 0x16, 0x4f, 0x99, 0x5b, 0x34, 0x5f, 0x10, 0x3a, 0x40, 0x1d, 0xf5, 0xb3,
- 0xb4, 0x99, 0xde, 0x31, 0x97, 0xea, 0x93, 0xed, 0xcb, 0x3d, 0x26, 0xef,
- 0xeb, 0x1c, 0xdb, 0x34, 0xae, 0xb0, 0x80, 0x96, 0xcc, 0x75, 0x34, 0x61,
- 0x97, 0xaa, 0x74, 0x55, 0xb8, 0xdc, 0x76, 0x19, 0xbf, 0xfe, 0xfd, 0x5e,
- 0xb8, 0xad, 0xcd, 0x09, 0x8a, 0xaa, 0xcb, 0x7e, 0x7f, 0xf1, 0xe6, 0x2f,
- 0x6a, 0x76, 0x6f, 0xf7, 0x57, 0x59, 0xc2, 0xda, 0x5b, 0xbf, 0x54, 0xca,
- 0x4b, 0xde, 0x93, 0x8a, 0xf1, 0xd6, 0xc4, 0xbb, 0x7f, 0x84, 0x79, 0xde,
- 0x0c, 0x7b, 0x9a, 0x6c, 0x51, 0x98, 0xcd, 0x3c, 0x35, 0x12, 0x93, 0xee,
- 0xc9, 0xf0, 0x19, 0x3c, 0x22, 0x6f, 0x8e, 0x9e, 0x3d, 0xd9, 0xdf, 0x33,
- 0x56, 0xeb, 0x56, 0x47, 0x5a, 0x6c, 0x3f, 0x38, 0xcc, 0xf6, 0x7a, 0x67,
- 0x9f, 0x16, 0xb4, 0xf7, 0xb6, 0x8e, 0x7f, 0x3c, 0x7f, 0xd7, 0x19, 0x24,
- 0x56, 0x20, 0x08, 0xa4, 0xae, 0x19, 0xa3, 0xbb, 0x6d, 0x83, 0x2d, 0x25,
- 0xec, 0xb6, 0x61, 0xa8, 0xf2, 0x4d, 0x95, 0x93, 0x9e, 0xdb, 0xa3, 0xf9,
- 0xe8, 0x9d, 0x96, 0xc5, 0xd4, 0xdc, 0xfe, 0x67, 0x04, 0xe7, 0x95, 0xf5,
- 0xcc, 0x5d, 0xf2, 0xe0, 0xe8, 0x56, 0x1f, 0x93, 0xb7, 0x7d, 0x1c, 0x95,
- 0x22, 0x4c, 0x49, 0x79, 0x8b, 0x1f, 0x02, 0x3d, 0x95, 0x80, 0x10, 0xb8,
- 0xc6, 0x6c, 0x49, 0x56, 0x0e, 0xb9, 0x77, 0xc9, 0x34, 0x6b, 0x9f, 0xb6,
- 0x4f, 0x20, 0x2f, 0x81, 0xc7, 0xe7, 0x25, 0x1c, 0xda, 0xab, 0x62, 0x21,
- 0x3c, 0x72, 0x8e, 0x84, 0xe0, 0xf1, 0x2d, 0x75, 0xea, 0x6f, 0x7b, 0xd4,
- 0xcf, 0xd0, 0xdf, 0x35, 0xd4, 0x01, 0x45, 0x3d, 0xc6, 0xb0, 0x8d, 0x47,
- 0x9d, 0x61, 0x91, 0xb7, 0x93, 0xd8, 0x71, 0x14, 0x51, 0x39, 0xde, 0x6f,
- 0x03, 0x9d, 0x45, 0x7c, 0xe0, 0x08, 0xf9, 0x83, 0x9d, 0x2b, 0x2d, 0xda,
- 0x98, 0x90, 0x54, 0xf8, 0xcc, 0x16, 0x50, 0xf6, 0x09, 0x84, 0x8b, 0x46,
- 0x45, 0x7c, 0xfe, 0x24, 0x52, 0xc3, 0x85, 0xc1, 0x88, 0x6e, 0x57, 0xf9,
- 0x4a, 0x00, 0xdf, 0xd0, 0xa2, 0xf4, 0xf6, 0xbd, 0x20, 0x04, 0xc5, 0x20,
- 0x60, 0x46, 0x6d, 0x7e, 0xb7, 0x19, 0x8d, 0xbe, 0x71, 0x50, 0x82, 0xc7,
- 0x2a, 0x5e, 0x1d, 0x3a, 0x23, 0x08, 0x4c, 0x48, 0xa4, 0x01, 0x91, 0x08,
- 0x6e, 0xe4, 0xed, 0x66, 0x62, 0x83, 0x11, 0x5d, 0x6b, 0xff, 0xc1, 0xd0,
- 0x44, 0xde, 0xc4, 0x63, 0x11, 0x1c, 0x8c, 0xe8, 0x9a, 0xa0, 0x36, 0x34,
- 0xd1, 0xda, 0x7c, 0xcf, 0x3e, 0x8f, 0x6c, 0xbe, 0x77, 0x67, 0x97, 0xc7,
- 0x07, 0x92, 0x47, 0xed, 0x90, 0x33, 0xd4, 0x52, 0xe0, 0x5c, 0x32, 0xa6,
- 0x7d, 0xe6, 0xca, 0x22, 0xe0, 0x3b, 0xf2, 0xba, 0xf7, 0x23, 0x47, 0x1e,
- 0x49, 0xdd, 0x74, 0x4a, 0xd8, 0xd3, 0xdb, 0xac, 0x44, 0xd3, 0x44, 0x59,
- 0xb0, 0x58, 0x06, 0x1c, 0x94, 0xa4, 0xe5, 0x0f, 0x51, 0x14, 0x08, 0x55,
- 0x02, 0x36, 0x24, 0x81, 0xa6, 0xf2, 0x95, 0x1b, 0x6c, 0x22, 0xbe, 0xcb,
- 0x60, 0x71, 0x69, 0x69, 0x30, 0x71, 0x2f, 0x86, 0x84, 0x81, 0x88, 0xd0,
- 0xbd, 0x11, 0xd2, 0x69, 0xd8, 0x23, 0x16, 0x92, 0x6f, 0xdd, 0x15, 0xe7,
- 0x02, 0x89, 0xdd, 0x43, 0x25, 0xc6, 0x19, 0x79, 0x01, 0x57, 0x20, 0x85,
- 0x90, 0x1b, 0xd0, 0x46, 0x16, 0x75, 0x93, 0x90, 0xaa, 0xa1, 0x56, 0x1a,
- 0x19, 0x95, 0xd6, 0x4a, 0x41, 0xfe, 0x9e, 0x54, 0x21, 0xc6, 0x2e, 0x9c,
- 0x8e, 0x9b, 0xca, 0x99, 0xdc, 0xaa, 0xb0, 0x21, 0xd7, 0x86, 0xe6, 0x56,
- 0xc2, 0x95, 0x50, 0x17, 0xe2, 0xa8, 0x8d, 0x7e, 0x3d, 0x32, 0xb4, 0xcd,
- 0x1e, 0xa5, 0x91, 0x8c, 0xeb, 0x65, 0x35, 0x5d, 0xce, 0x8d, 0xe0, 0xf2,
- 0xeb, 0x06, 0xa0, 0xf8, 0xc1, 0xa2, 0x65, 0x7c, 0x84, 0x48, 0x9c, 0xe0,
- 0xd9, 0x6e, 0xab, 0xb5, 0x21, 0x46, 0xde, 0x89, 0x76, 0x0f, 0xf6, 0x2c,
- 0x6a, 0x47, 0x8e, 0x72, 0x58, 0xc1, 0x7f, 0xfa, 0xe3, 0x02, 0x4d, 0xf3,
- 0xbe, 0xac, 0xd4, 0xda, 0xf4, 0xc3, 0xb7, 0x36, 0xf4, 0x4b, 0x4f, 0x21,
- 0x3c, 0x21, 0x4f, 0xb2, 0xc2, 0x44, 0x3e, 0x35, 0xf6, 0x03, 0xd2, 0x37,
- 0xef, 0x6e, 0xca, 0x99, 0x1f, 0x03, 0x0f, 0x99, 0xb5, 0xa9, 0x5c, 0x2d,
- 0xf1, 0x21, 0x8b, 0xb4, 0x50, 0x48, 0xd6, 0x86, 0xa6, 0x1e, 0x6e, 0xb7,
- 0x31, 0x15, 0xfc, 0x26, 0x7f, 0x2d, 0xc7, 0xe2, 0x89, 0xa1, 0x72, 0xb7,
- 0xeb, 0x28, 0xf6, 0x07, 0x30, 0x22, 0xcd, 0x8d, 0x65, 0x76, 0xdb, 0x74,
- 0xc9, 0x0e, 0x56, 0xea, 0x8f, 0xa4, 0x50, 0x33, 0x5d, 0x2c, 0x05, 0x3e,
- 0x92, 0xeb, 0x92, 0x29, 0x63, 0xc9, 0x6b, 0xc3, 0xa0, 0xd6, 0x61, 0x59,
- 0xe3, 0x7e, 0x17, 0xdf, 0x21, 0x9d, 0x90, 0x57, 0xc4, 0x34, 0x2d, 0xe5,
- 0xd4, 0x0c, 0xd1, 0xe5, 0xf2, 0xcc, 0xd3, 0x49, 0xb3, 0x94, 0x89, 0xef,
- 0xf6, 0xae, 0x54, 0x47, 0xa9, 0x79, 0x17, 0xc0, 0xd1, 0xc8, 0x46, 0x9a,
- 0x98, 0xdd, 0x97, 0x4e, 0xee, 0x55, 0x65, 0x70, 0xf7, 0xab, 0x40, 0xc0,
- 0x39, 0x98, 0xe9, 0x60, 0xb0, 0xb6, 0x13, 0x14, 0xf3, 0xcc, 0xeb, 0x15,
- 0xfc, 0x0e, 0xbf, 0xab, 0xb5, 0xe2, 0xb3, 0xf4, 0xb0, 0xeb, 0x59, 0xa1,
- 0xea, 0x5a, 0x07, 0x3e, 0x6b, 0x52, 0x9a, 0xe3, 0x07, 0x2a, 0xf7, 0x5b,
- 0x7e, 0x01, 0x0e, 0x0d, 0x02, 0x49, 0x8a, 0xea, 0x62, 0x10, 0x0b, 0xd7,
- 0x84, 0x07, 0xca, 0x94, 0x0a, 0xb5, 0x89, 0xb7, 0xf2, 0x15, 0x4d, 0x88,
- 0xd8, 0x82, 0xd0, 0xb2, 0xa5, 0x47, 0x6c, 0x6f, 0x3e, 0xe5, 0xd4, 0xb1,
- 0x67, 0x9f, 0x3f, 0x7b, 0xba, 0xdd, 0x4e, 0x1e, 0xdc, 0x8e, 0xe4, 0x70,
- 0xe3, 0xc0, 0x09, 0x08, 0x3b, 0xee, 0xf7, 0x9c, 0x48, 0xf5, 0x38, 0x30,
- 0x27, 0xde, 0xcd, 0x9c, 0x59, 0x76, 0xc8, 0xcf, 0x0e, 0xbe, 0x2a, 0x89,
- 0x80, 0x06, 0x59, 0x04, 0xe0, 0x56, 0xcd, 0xf8, 0xf5, 0x2d, 0x51, 0x87,
- 0x9c, 0x0c, 0x77, 0x15, 0x3d, 0x8c, 0x06, 0x0e, 0x5d, 0x4d, 0x33, 0xe0,
- 0xb6, 0x29, 0x6d, 0x36, 0x76, 0x8f, 0x62, 0xe6, 0xa1, 0xae, 0x8a, 0x1e,
- 0x43, 0x04, 0xce, 0xa5, 0x77, 0x35, 0x88, 0x77, 0x84, 0x71, 0xa3, 0xe5,
- 0xf2, 0x49, 0x62, 0xd0, 0xb6, 0xa8, 0x4c, 0x17, 0x10, 0x00, 0x37, 0x91,
- 0x68, 0x83, 0xd1, 0x12, 0x69, 0xab, 0x68, 0x0b, 0x92, 0x27, 0x25, 0xeb,
- 0x82, 0x4b, 0x32, 0xb8, 0x96, 0xe7, 0xca, 0x27, 0xc3, 0x0a, 0x48, 0x29,
- 0x49, 0x0e, 0x6c, 0xa9, 0x2b, 0x83, 0xbc, 0xa4, 0xf9, 0xae, 0x82, 0xea,
- 0x50, 0x6f, 0x48, 0xaa, 0xa8, 0x02, 0xad, 0x8e, 0xad, 0x2c, 0x4b, 0xd1,
- 0xdd, 0xa6, 0xe0, 0x1d, 0xdd, 0x6a, 0x14, 0xfd, 0xbb, 0xdd, 0x95, 0x61,
- 0x21, 0x1a, 0x7f, 0xb5, 0x33, 0x0f, 0x2b, 0x7a, 0x0f, 0x7b, 0x8a, 0x91,
- 0xb6, 0xe0, 0x4f, 0x09, 0xe9, 0x24, 0x67, 0xc9, 0x16, 0x3a, 0xbc, 0xb3,
- 0xb3, 0xfd, 0x70, 0xa7, 0xe5, 0xc9, 0x87, 0x3a, 0x79, 0xce, 0x0e, 0x0e,
- 0x46, 0xa0, 0xb7, 0xf0, 0x55, 0xae, 0x17, 0xf4, 0x55, 0x5a, 0x32, 0xc6,
- 0x89, 0xe7, 0x64, 0xc2, 0x4a, 0xd4, 0x13, 0x2a, 0x2d, 0x0e, 0xaf, 0x21,
- 0xc9, 0x4e, 0xc3, 0xf0, 0xda, 0x23, 0x17, 0xc3, 0x97, 0xe1, 0xbf, 0x44,
- 0x80, 0x20, 0x3d, 0x0a, 0x80, 0x4c, 0xc9, 0xa1, 0xd9, 0x85, 0xa1, 0xd6,
- 0xd9, 0x62, 0x2b, 0xf7, 0xc6, 0xc7, 0xc6, 0xae, 0x5f, 0xe3, 0x88, 0xa3,
- 0xd1, 0x72, 0xcc, 0x47, 0x4a, 0x1a, 0xe4, 0x51, 0x9b, 0x64, 0xc9, 0xd4,
- 0xcb, 0xc3, 0x00, 0x42, 0x95, 0x1f, 0xf4, 0x08, 0xb4, 0x23, 0xe5, 0xe9,
- 0x62, 0xc3, 0xa9, 0xa7, 0x90, 0xdb, 0x34, 0x32, 0xf5, 0xa3, 0x1b, 0x37,
- 0x63, 0x98, 0x32, 0xcb, 0xf3, 0x55, 0x0b, 0xef, 0x2d, 0xad, 0x42, 0xdf,
- 0x3b, 0xfa, 0x66, 0xf7, 0x37, 0x53, 0x99, 0x03, 0xbe, 0x63, 0xcc, 0x3f,
- 0x6d, 0x4d, 0x67, 0x9f, 0x8f, 0x29, 0x80, 0x33, 0x62, 0x1a, 0x3b, 0x78,
- 0xd6, 0xc2, 0x92, 0x6d, 0x37, 0x81, 0xae, 0x64, 0xdd, 0xab, 0x49, 0x7f,
- 0x20, 0x17, 0xaf, 0xeb, 0x9f, 0x10, 0x87, 0x9b, 0x36, 0xda, 0xf6, 0x38,
- 0x7c, 0xd6, 0xf6, 0x38, 0xd8, 0xf2, 0xf3, 0xb8, 0x9e, 0xc6, 0x39, 0x98,
- 0x75, 0xf2, 0x4e, 0x1f, 0x4b, 0xb6, 0x46, 0xe7, 0xef, 0x8e, 0xbf, 0x39,
- 0xdb, 0x7e, 0xc8, 0x53, 0xe9, 0xcb, 0x7f, 0x3b, 0xa8, 0x54, 0x53, 0x85,
- 0xa5, 0xef, 0xb0, 0x50, 0xbe, 0x19, 0x8d, 0x06, 0x87, 0xe7, 0x27, 0x30,
- 0x07, 0x46, 0x23, 0xf3, 0x97, 0x55, 0xe8, 0xcd, 0x43, 0xe1, 0x64, 0x1a,
- 0x7c, 0x0f, 0x75, 0x4f, 0x65, 0x3f, 0xac, 0x2e, 0x72, 0x06, 0x62, 0x37,
- 0x72, 0x5a, 0x1e, 0x08, 0xe0, 0xb4, 0x82, 0x9f, 0x3e, 0xd0, 0x35, 0x7c,
- 0xce, 0x4f, 0x76, 0xf0, 0x2d, 0x4a, 0xa0, 0xc6, 0x80, 0xe2, 0x4e, 0x84,
- 0x65, 0xc8, 0x88, 0x47, 0x5a, 0x0f, 0x12, 0x4d, 0x21, 0xa0, 0x35, 0x85,
- 0xdb, 0x58, 0x80, 0x74, 0x9d, 0x50, 0xd4, 0x4e, 0xc2, 0x76, 0xf1, 0x8a,
- 0x19, 0xc6, 0xa9, 0xa1, 0xa2, 0x08, 0x05, 0x5a, 0xec, 0xf8, 0xe0, 0x60,
- 0xaa, 0x31, 0x9c, 0x16, 0x31, 0x9e, 0x8f, 0xc4, 0xea, 0xea, 0xba, 0x46,
- 0x36, 0x07, 0xcb, 0xe4, 0x60, 0x13, 0x79, 0x3a, 0x45, 0xb9, 0xbc, 0xbe,
- 0x09, 0xbd, 0x10, 0x1d, 0x5e, 0x4c, 0xd1, 0xa4, 0xb0, 0x9f, 0x4c, 0x2f,
- 0x83, 0x2d, 0x88, 0x17, 0x55, 0xef, 0xa9, 0x32, 0x0a, 0x11, 0xb1, 0x7a,
- 0xc3, 0xf9, 0x3f, 0xd3, 0x7f, 0x0a, 0x9b, 0xd4, 0x1a, 0x0d, 0x64, 0xcc,
- 0xe1, 0x53, 0x38, 0xd3, 0x8a, 0x66, 0x36, 0x97, 0xbf, 0xa6, 0xc5, 0x3d,
- 0x9c, 0xa6, 0xe2, 0xc5, 0x47, 0xd9, 0xa6, 0xdd, 0xd3, 0xed, 0x8d, 0xde,
- 0x54, 0x13, 0x98, 0xfb, 0x9c, 0x88, 0xca, 0xf5, 0x9a, 0xab, 0xf7, 0x2c,
- 0x38, 0xb0, 0xe7, 0xe6, 0x8e, 0x86, 0x71, 0x37, 0x28, 0xfa, 0xda, 0x46,
- 0xdf, 0x18, 0xc5, 0x12, 0x2c, 0x4b, 0x1b, 0x49, 0x69, 0x93, 0x5d, 0x10,
- 0x13, 0x45, 0x4c, 0xe6, 0xb8, 0x65, 0x2c, 0x88, 0x72, 0xb6, 0x6c, 0x24,
- 0x02, 0x49, 0xee, 0x51, 0xaa, 0x8b, 0xd9, 0xb6, 0xb9, 0x44, 0x68, 0xda,
- 0xe5, 0xa1, 0xc6, 0xd2, 0xf7, 0x1d, 0xa1, 0xe1, 0xd0, 0x85, 0x5b, 0x38,
- 0x9e, 0x28, 0x5e, 0x0a, 0x9a, 0x58, 0xaf, 0xa1, 0x05, 0x92, 0x93, 0x6e,
- 0xcb, 0x38, 0xd5, 0x36, 0xad, 0x9f, 0xae, 0x53, 0x6b, 0x7a, 0xd4, 0xcd,
- 0x4e, 0x92, 0xbb, 0x95, 0xaf, 0xde, 0x56, 0x1b, 0xc3, 0x32, 0xe8, 0xf8,
- 0x36, 0xd1, 0x84, 0x81, 0x31, 0x1d, 0x93, 0xf1, 0xbd, 0xfd, 0x16, 0x7f,
- 0x26, 0x45, 0x42, 0x8f, 0x55, 0x84, 0x1f, 0x8b, 0xa1, 0xe2, 0x96, 0x63,
- 0xb8, 0x2e, 0x25, 0xa5, 0xfd, 0xa5, 0x4e, 0xd3, 0xdf, 0x67, 0x48, 0x3e,
- 0x8b, 0xaf, 0x31, 0xab, 0xf8, 0x1e, 0x70, 0x8a, 0xe4, 0x42, 0x62, 0x4d,
- 0x87, 0x78, 0x28, 0xd8, 0xc0, 0x14, 0x4e, 0xb7, 0xa3, 0x52, 0xf5, 0x88,
- 0xbc, 0x6e, 0x29, 0x13, 0xf0, 0xf1, 0x09, 0xf5, 0x3e, 0x63, 0x2b, 0x78,
- 0xca, 0xf5, 0x1c, 0x99, 0x6e, 0x71, 0x86, 0x8f, 0x98, 0x10, 0x37, 0x7e,
- 0xf7, 0xc3, 0xc0, 0xb2, 0xc3, 0x60, 0x18, 0x85, 0xa5, 0x9e, 0x58, 0xbc,
- 0x2f, 0x1e, 0x98, 0xd9, 0xae, 0x1f, 0xe4, 0x2f, 0xe6, 0x23, 0x3f, 0xe4,
- 0x85, 0xd1, 0x0d, 0xeb, 0x6d, 0x5f, 0x51, 0x0a, 0xcf, 0x6e, 0xb5, 0x59,
- 0x1b, 0x3b, 0xcc, 0x88, 0x1d, 0x97, 0xae, 0x47, 0x9a, 0x33, 0x07, 0x6e,
- 0xd4, 0x11, 0x9a, 0xb8, 0xb0, 0xb2, 0xa5, 0x42, 0xbc, 0x5f, 0x04, 0x65,
- 0x2f, 0x5c, 0x0b, 0xc8, 0xa2, 0xe4, 0x4a, 0x70, 0x1a, 0x4c, 0x47, 0x88,
- 0xd8, 0xca, 0xc5, 0xf9, 0x2d, 0x60, 0x93, 0x1f, 0xe3, 0xcc, 0x8a, 0x08,
- 0x0b, 0x36, 0x24, 0x5b, 0x37, 0x96, 0x45, 0xb3, 0x8b, 0x31, 0x6e, 0x3d,
- 0x33, 0x23, 0x6b, 0x16, 0x5b, 0x7b, 0xdb, 0x8c, 0x7a, 0x2d, 0xec, 0xcb,
- 0xa5, 0xbb, 0xee, 0x43, 0x5f, 0x0e, 0x65, 0x18, 0x26, 0xc9, 0x11, 0x03,
- 0x69, 0xc2, 0xe7, 0x85, 0x3c, 0x7f, 0x80, 0x40, 0xa1, 0x00, 0xef, 0x8a,
- 0x0f, 0x31, 0x2b, 0x0b, 0x92, 0xb0, 0xa8, 0xb5, 0x8d, 0xdd, 0x78, 0x37,
- 0x72, 0x7f, 0x16, 0x84, 0x05, 0x89, 0x82, 0x44, 0x8a, 0xbe, 0x58, 0xc7,
- 0xb8, 0xb0, 0x07, 0x49, 0xc5, 0xb2, 0x99, 0xb9, 0xd9, 0x74, 0x40, 0x02,
- 0xe4, 0xba, 0x2a, 0xcd, 0x15, 0x59, 0x45, 0x10, 0xf3, 0xc4, 0xa4, 0x80,
- 0xaa, 0x9f, 0x15, 0xb7, 0x79, 0x55, 0x16, 0x40, 0x25, 0xbc, 0x4d, 0xab,
- 0x1c, 0xf1, 0xfe, 0xde, 0xb7, 0x67, 0x6f, 0x8f, 0x7b, 0xbe, 0x67, 0xe4,
- 0x2a, 0x17, 0x77, 0xfa, 0x4d, 0x88, 0xbb, 0x6c, 0x57, 0x33, 0xe2, 0x3a,
- 0x34, 0x77, 0xba, 0x51, 0x72, 0x68, 0x59, 0x6f, 0xe5, 0x24, 0x91, 0x5a,
- 0xaf, 0x61, 0x72, 0xa3, 0x4b, 0x4a, 0x22, 0x80, 0x10, 0xb1, 0xe9, 0xe6,
- 0xc2, 0x05, 0x18, 0xe5, 0xcb, 0xf0, 0x50, 0x81, 0x40, 0x9b, 0x51, 0xfa,
- 0x74, 0x60, 0x89, 0x47, 0x19, 0x46, 0x9a, 0x3e, 0x6f, 0x80, 0x55, 0x9c,
- 0xd0, 0x9b, 0xf3, 0x7b, 0x32, 0x6c, 0x36, 0x5b, 0xbb, 0x2e, 0xd9, 0xac,
- 0xc9, 0x18, 0x6f, 0x36, 0x75, 0x7a, 0x91, 0x34, 0xea, 0x24, 0x40, 0xc8,
- 0xd1, 0xba, 0xe2, 0xd3, 0xbc, 0xab, 0xf9, 0x13, 0xae, 0x75, 0x6e, 0xdc,
- 0x9d, 0xbe, 0x03, 0x3e, 0x7d, 0x9f, 0xba, 0xd6, 0x5d, 0x08, 0x5b, 0x93,
- 0xba, 0xba, 0xae, 0x36, 0xbd, 0x6b, 0x3b, 0x56, 0x4f, 0xa8, 0xf4, 0xa1,
- 0x6f, 0xd1, 0x7c, 0xbe, 0x9c, 0x08, 0x80, 0x90, 0x8d, 0xae, 0x4a, 0x46,
- 0xa5, 0x80, 0x50, 0xf0, 0x25, 0xa5, 0x91, 0x13, 0x15, 0xfa, 0xd4, 0xdc,
- 0x2a, 0x88, 0xc2, 0x3e, 0xa3, 0x50, 0x2a, 0x50, 0x5b, 0x6e, 0x54, 0x83,
- 0xbb, 0xc2, 0x8f, 0x24, 0xe3, 0x3b, 0x7d, 0xbf, 0x06, 0xba, 0x9f, 0xac,
- 0x00, 0x2d, 0x75, 0x09, 0x29, 0x76, 0xb5, 0x18, 0xb5, 0x93, 0x71, 0x1f,
- 0x2d, 0xce, 0x93, 0x62, 0x5f, 0x86, 0xfa, 0xf1, 0x41, 0x3f, 0x91, 0xa9,
- 0xd4, 0xf3, 0x46, 0x41, 0xe8, 0x86, 0x61, 0x16, 0xd9, 0xa8, 0xb1, 0x97,
- 0x56, 0x31, 0xe5, 0x3b, 0x91, 0x18, 0x0b, 0x04, 0x98, 0x37, 0x66, 0x5d,
- 0xeb, 0x69, 0x34, 0x23, 0x13, 0xe0, 0xf5, 0x7a, 0x59, 0xdd, 0xa2, 0x54,
- 0x55, 0xf8, 0x7a, 0x18, 0x00, 0xd1, 0x2e, 0x87, 0x5b, 0x87, 0xd8, 0x2d,
- 0xdf, 0xea, 0x22, 0xe5, 0x6f, 0x56, 0x4b, 0x41, 0xe8, 0xfe, 0x46, 0xfa,
- 0x21, 0xfd, 0x53, 0x5b, 0xc7, 0x02, 0x97, 0x04, 0xa9, 0xfa, 0x65, 0x0d,
- 0xa4, 0xcd, 0xa6, 0x4a, 0x27, 0xee, 0x2f, 0x83, 0xb4, 0x9e, 0xe4, 0xb9,
- 0x32, 0xc0, 0x50, 0x94, 0x30, 0xa3, 0xa4, 0xd8, 0x28, 0xac, 0x8d, 0x5d,
- 0x0f, 0x65, 0x5e, 0x98, 0x96, 0xec, 0xe2, 0xe5, 0xbc, 0x93, 0x94, 0xa9,
- 0xc1, 0x28, 0x8b, 0x05, 0x05, 0x72, 0x1a, 0x41, 0x8c, 0x92, 0xe2, 0x28,
- 0xa8, 0xe1, 0x0a, 0xd3, 0xd6, 0x58, 0xdf, 0x7b, 0xbe, 0xf9, 0xad, 0x53,
- 0x30, 0x20, 0x88, 0xf0, 0xba, 0xc1, 0x05, 0x6a, 0x9e, 0xd9, 0xf7, 0x9f,
- 0x59, 0x17, 0x13, 0x7f, 0xde, 0x31, 0x4e, 0x18, 0xa4, 0x29, 0x66, 0x9a,
- 0x8c, 0x8c, 0xea, 0xa4, 0x1c, 0x79, 0x58, 0x82, 0xc3, 0xd3, 0xf3, 0x77,
- 0x80, 0xc6, 0x22, 0xb4, 0xe5, 0x02, 0xfe, 0x31, 0xfe, 0x19, 0x54, 0x64,
- 0xd8, 0xc9, 0xa4, 0x7d, 0x4c, 0xc3, 0xaa, 0x68, 0xe6, 0xcd, 0xbc, 0x8a,
- 0x98, 0x56, 0x9c, 0xe0, 0x56, 0x80, 0x18, 0x27, 0xb1, 0xa6, 0x8b, 0x28,
- 0x7e, 0x6a, 0x5e, 0x74, 0x87, 0x63, 0xbe, 0x39, 0x4c, 0xec, 0xa7, 0x15,
- 0x98, 0xdd, 0x96, 0x23, 0xf1, 0xdb, 0x5d, 0x74, 0x31, 0xca, 0x95, 0x81,
- 0xd6, 0x1a, 0xc8, 0xf3, 0x26, 0xb3, 0x08, 0x64, 0x62, 0xd7, 0x59, 0xf4,
- 0x44, 0xe5, 0xbc, 0xe1, 0x6c, 0x0d, 0xe0, 0x4d, 0x68, 0x59, 0x7b, 0xfd,
- 0x00, 0xf6, 0x55, 0xb1, 0x28, 0xda, 0x08, 0x5c, 0x76, 0xb2, 0x3b, 0xa5,
- 0x60, 0x6a, 0x80, 0x76, 0xfb, 0xf5, 0xa8, 0xe2, 0x30, 0x5a, 0x8f, 0xe1,
- 0x9a, 0x05, 0x7e, 0xd7, 0xe7, 0xef, 0x8e, 0x97, 0x24, 0x21, 0x3a, 0x5f,
- 0x90, 0xd5, 0x65, 0xa5, 0x89, 0x9f, 0xa0, 0xef, 0x89, 0x07, 0x8c, 0x01,
- 0x90, 0xa8, 0x94, 0x33, 0x4b, 0xe7, 0x46, 0x2b, 0x28, 0xb4, 0x5c, 0x80,
- 0xfc, 0xbe, 0x94, 0xd6, 0xd9, 0xed, 0xf0, 0x32, 0x15, 0x91, 0xe5, 0xb4,
- 0x85, 0x4e, 0x09, 0x01, 0x7f, 0x03, 0x62, 0x94, 0x1b, 0x97, 0xd6, 0xa3,
- 0x2c, 0x22, 0x2d, 0x21, 0xa2, 0xd1, 0x1b, 0x25, 0x0b, 0x64, 0xa8, 0x61,
- 0x6e, 0xc4, 0xf2, 0x05, 0x13, 0xd7, 0xcd, 0xcd, 0xb2, 0xf8, 0x68, 0xba,
- 0x10, 0x56, 0x31, 0x6b, 0xca, 0x6f, 0x0e, 0x4a, 0xf7, 0x94, 0x41, 0xb2,
- 0xb5, 0x42, 0x14, 0xaf, 0x13, 0xc4, 0xf1, 0x2d, 0xbc, 0x78, 0x02, 0xfa,
- 0xdb, 0x32, 0xbe, 0x62, 0xbd, 0x9b, 0x5a, 0x0a, 0xc9, 0xb4, 0x71, 0x13,
- 0x18, 0x4d, 0x6a, 0x77, 0xde, 0x06, 0x61, 0xf3, 0x66, 0x93, 0xe4, 0xda,
- 0xcb, 0xaa, 0x62, 0x25, 0x4e, 0x91, 0x9f, 0xc8, 0x3b, 0x23, 0x26, 0x48,
- 0x20, 0x0e, 0x97, 0x35, 0xd7, 0x82, 0xc9, 0xb2, 0x02, 0x72, 0xc5, 0xe3,
- 0xab, 0x89, 0xf4, 0xa4, 0x5d, 0x52, 0xbf, 0x6e, 0x1f, 0x88, 0xbb, 0xd6,
- 0x95, 0xdf, 0x4b, 0x32, 0x4a, 0xed, 0x68, 0xab, 0x89, 0x48, 0xb2, 0x45,
- 0x65, 0x17, 0x91, 0x5b, 0xae, 0xa0, 0x2b, 0x2b, 0x6c, 0xe3, 0x73, 0x96,
- 0x0f, 0x90, 0x07, 0xff, 0xc4, 0x59, 0x72, 0x63, 0xf1, 0x26, 0xca, 0xfe,
- 0xb0, 0x33, 0x49, 0xc5, 0x4a, 0x69, 0xe8, 0x13, 0x86, 0xbe, 0x0b, 0x45,
- 0xe1, 0xbb, 0x88, 0x24, 0xc4, 0x48, 0x83, 0x6a, 0xea, 0x64, 0x8d, 0x20,
- 0xf4, 0x8a, 0xbd, 0x3b, 0x72, 0xec, 0x1d, 0x49, 0x3d, 0xf3, 0x9f, 0xb0,
- 0xd6, 0xfb, 0x91, 0x12, 0x10, 0x6a, 0x9f, 0xb5, 0xdc, 0x15, 0xe1, 0x71,
- 0x85, 0x6b, 0xeb, 0xb7, 0x8b, 0x40, 0x9b, 0xca, 0xaa, 0xe2, 0x2e, 0x94,
- 0x82, 0x45, 0x20, 0x04, 0xb9, 0x1e, 0xf6, 0x0f, 0x11, 0x81, 0xf4, 0x41,
- 0xe9, 0x70, 0x3e, 0x8d, 0x02, 0x2f, 0xe8, 0xc2, 0x0a, 0x8d, 0xa4, 0x9c,
- 0x00, 0x5a, 0x09, 0x45, 0x7c, 0x39, 0x79, 0x6d, 0x76, 0x18, 0x69, 0xaa,
- 0xe4, 0xb0, 0xfd, 0x9a, 0xb0, 0xfc, 0xa3, 0x4b, 0x0b, 0x4c, 0x6a, 0x1b,
- 0xd9, 0x85, 0x79, 0x3f, 0x25, 0x63, 0xde, 0x83, 0xe3, 0x22, 0x7c, 0xbe,
- 0xa1, 0x57, 0x2d, 0xc1, 0x61, 0x77, 0xe1, 0xac, 0x88, 0xbb, 0x23, 0x48,
- 0x99, 0x44, 0xc1, 0xed, 0xcd, 0xd2, 0x8c, 0x96, 0xd6, 0x99, 0x39, 0x66,
- 0x58, 0x44, 0x95, 0xa4, 0xaa, 0xa1, 0xac, 0x01, 0x57, 0xa8, 0xeb, 0x71,
- 0x80, 0x2f, 0xc7, 0x2e, 0xec, 0x3a, 0x33, 0xc7, 0x90, 0xeb, 0x85, 0xc6,
- 0x55, 0xf9, 0x31, 0xe3, 0x2d, 0x07, 0xcb, 0x02, 0x80, 0x49, 0xaa, 0x44,
- 0x71, 0xc4, 0x31, 0x9f, 0x4d, 0x6d, 0xf2, 0x62, 0x90, 0x46, 0xcc, 0x9c,
- 0x76, 0x82, 0xb4, 0xe0, 0x64, 0x61, 0xee, 0x80, 0x0e, 0x14, 0xf9, 0x9d,
- 0x97, 0x6b, 0x42, 0xf8, 0x6c, 0xf1, 0x73, 0x2f, 0x9b, 0x40, 0x2c, 0xd6,
- 0x15, 0x87, 0xbe, 0x75, 0xea, 0x6d, 0xa2, 0xe6, 0xea, 0x73, 0x6f, 0x57,
- 0xdd, 0x3f, 0xf7, 0x91, 0x25, 0x7d, 0x3c, 0x55, 0x9d, 0xd9, 0x4b, 0x70,
- 0x80, 0x25, 0x2f, 0xcd, 0xa6, 0x62, 0x57, 0x18, 0xc5, 0xb2, 0xba, 0x5e,
- 0x2e, 0x50, 0x2e, 0x0e, 0xd4, 0xe2, 0x98, 0x72, 0xfd, 0x60, 0xc2, 0x06,
- 0x1b, 0xe9, 0xe1, 0x5c, 0xde, 0x30, 0x75, 0x24, 0xa8, 0x02, 0xba, 0x0e,
- 0x94, 0x09, 0xb3, 0x61, 0xc2, 0x23, 0xee, 0xdc, 0x37, 0x6c, 0x78, 0x42,
- 0x01, 0xa7, 0xd5, 0x01, 0xd4, 0x4e, 0x5e, 0xbb, 0x34, 0xb5, 0x7f, 0xa3,
- 0x74, 0x60, 0xa3, 0xd0, 0x36, 0x94, 0x0b, 0xc6, 0x5f, 0x0a, 0x54, 0x4e,
- 0xa6, 0x1f, 0xb3, 0xd5, 0x22, 0x8c, 0x2a, 0x61, 0xa1, 0x64, 0x08, 0xb0,
- 0xd8, 0xbf, 0x11, 0x18, 0x0f, 0x3e, 0x39, 0x26, 0x73, 0x25, 0x62, 0x08,
- 0x2a, 0x70, 0x06, 0xc6, 0x98, 0x0b, 0x96, 0x34, 0x27, 0x6d, 0x89, 0x55,
- 0x9d, 0x6a, 0x42, 0x96, 0x42, 0x52, 0x5a, 0x84, 0xbb, 0x88, 0xb5, 0x4e,
- 0x3d, 0x12, 0x9c, 0x44, 0xa5, 0x48, 0xd4, 0x1f, 0x59, 0xe6, 0xb1, 0x96,
- 0x0e, 0x0e, 0xeb, 0x84, 0xed, 0xd5, 0x08, 0x79, 0x18, 0x7a, 0x93, 0xb8,
- 0x87, 0xfa, 0xde, 0xdf, 0x0f, 0x3e, 0xdf, 0xd5, 0x3a, 0x77, 0x0a, 0x72,
- 0xf9, 0xcf, 0x90, 0x73, 0x2a, 0x89, 0x68, 0x11, 0xf4, 0x9c, 0xf9, 0xa9,
- 0x7d, 0x34, 0x94, 0x80, 0x00, 0xbb, 0xa4, 0xa4, 0x97, 0x27, 0x14, 0xeb,
- 0x6e, 0x03, 0x4f, 0x39, 0x6f, 0x52, 0xb3, 0xc2, 0x79, 0x50, 0xc7, 0x72,
- 0x3e, 0xa7, 0xde, 0xc5, 0x23, 0x8b, 0xc1, 0xf9, 0xea, 0x15, 0xd1, 0x97,
- 0x03, 0xc9, 0x2e, 0xe2, 0x86, 0xa0, 0xd7, 0x22, 0xbe, 0x0b, 0x4e, 0x63,
- 0x93, 0xed, 0x66, 0x99, 0xe3, 0xc0, 0x9b, 0xc3, 0x5b, 0x1b, 0xeb, 0x68,
- 0x0e, 0x4c, 0x0f, 0xb4, 0x17, 0xda, 0x65, 0x33, 0xf7, 0x6b, 0xcf, 0xc9,
- 0x8b, 0xe1, 0xd3, 0xd6, 0x39, 0x69, 0x66, 0xf3, 0xc1, 0xdd, 0xf8, 0x81,
- 0x90, 0xc7, 0xe5, 0xe9, 0xdb, 0x64, 0xbe, 0x04, 0x1d, 0xbb, 0x80, 0xf7,
- 0xde, 0xcf, 0x32, 0xf5, 0x3e, 0x93, 0x57, 0x87, 0xbd, 0x84, 0x37, 0x30,
- 0x39, 0xc3, 0x4c, 0xee, 0x88, 0x6f, 0xdf, 0xd6, 0x8d, 0x8a, 0xb1, 0x2f,
- 0x38, 0x75, 0x09, 0xb5, 0x08, 0x2f, 0x36, 0xd5, 0x7d, 0xcf, 0xf2, 0x68,
- 0x79, 0x8f, 0xe6, 0xd7, 0x66, 0x9f, 0xb2, 0xc9, 0x12, 0xf1, 0x69, 0x52,
- 0x0f, 0x09, 0xfa, 0x69, 0xbd, 0xdf, 0xdc, 0xf3, 0x95, 0x8b, 0x77, 0xdc,
- 0xfc, 0xa0, 0x3b, 0x19, 0x8e, 0xc0, 0x47, 0x06, 0xcf, 0xa3, 0x0f, 0x33,
- 0xc0, 0x91, 0x10, 0x85, 0xdf, 0xb5, 0x7f, 0x15, 0x84, 0x88, 0x91, 0xd6,
- 0x4f, 0x17, 0xa2, 0xd9, 0x4f, 0xf9, 0x75, 0xc1, 0x2a, 0xc0, 0xdb, 0x7c,
- 0x52, 0x95, 0x75, 0x79, 0xc5, 0xf9, 0x6a, 0x9e, 0x6e, 0x70, 0x72, 0x32,
- 0x4a, 0xee, 0xb2, 0xb1, 0xd6, 0xc6, 0x0e, 0x43, 0x1f, 0x32, 0x4b, 0x11,
- 0x8a, 0x8b, 0x54, 0x79, 0xd6, 0xd0, 0xac, 0x69, 0x24, 0x94, 0xa0, 0x9d,
- 0x40, 0x65, 0x25, 0x38, 0x2a, 0x50, 0xe1, 0x89, 0x0d, 0x70, 0x86, 0xab,
- 0x69, 0x91, 0x95, 0x91, 0x78, 0x38, 0x77, 0x40, 0xaf, 0x15, 0xde, 0x27,
- 0xb8, 0xc3, 0xc7, 0xa9, 0xf0, 0x2c, 0xb1, 0x6f, 0xc0, 0x88, 0x1d, 0x52,
- 0x52, 0xc4, 0x5f, 0xf9, 0x91, 0x3c, 0x65, 0x41, 0xc5, 0xca, 0x38, 0x23,
- 0x66, 0x42, 0x12, 0x07, 0x3e, 0x59, 0x0e, 0x78, 0x01, 0xa7, 0x65, 0x85,
- 0x3c, 0x24, 0x8f, 0x03, 0x85, 0xc8, 0x02, 0x97, 0x15, 0xb9, 0x8a, 0x81,
- 0x3a, 0x1a, 0xca, 0xd3, 0xbb, 0x9b, 0x92, 0x19, 0xa3, 0x30, 0xcd, 0x74,
- 0x35, 0xa1, 0xd2, 0x96, 0x8b, 0x7b, 0x04, 0x65, 0x5f, 0x68, 0xb2, 0xf5,
- 0xbe, 0xf1, 0x17, 0x2a, 0x8a, 0x50, 0x28, 0xeb, 0xe1, 0x0a, 0x4b, 0x25,
- 0x45, 0xe1, 0x75, 0x7e, 0xbd, 0x82, 0x10, 0x93, 0x5d, 0x46, 0x00, 0x78,
- 0xc0, 0xf5, 0x84, 0x43, 0x8b, 0x1e, 0xc9, 0xa5, 0x59, 0xf1, 0x29, 0x0d,
- 0x68, 0x5e, 0xe9, 0x5f, 0xa1, 0x03, 0x76, 0xc5, 0xee, 0xfb, 0x55, 0x89,
- 0x2b, 0xbf, 0x8e, 0x80, 0x73, 0xad, 0xf2, 0xe7, 0xf5, 0xc5, 0x1e, 0x81,
- 0x68, 0xe8, 0xd5, 0x45, 0x5e, 0x03, 0x18, 0x8a, 0x87, 0x74, 0xbe, 0xb8,
- 0xa3, 0x5e, 0x23, 0x59, 0x91, 0x7c, 0x14, 0x2f, 0x18, 0x6b, 0x89, 0xe0,
- 0x69, 0x79, 0xda, 0x91, 0x2e, 0xff, 0xe8, 0x96, 0xf4, 0x83, 0xfd, 0xc1,
- 0x38, 0x4b, 0x89, 0x93, 0xe5, 0x65, 0x43, 0x0a, 0x53, 0xbc, 0x3e, 0x85,
- 0x6b, 0x32, 0x22, 0x15, 0x2a, 0x5f, 0xf3, 0xbb, 0x97, 0xd0, 0xb5, 0x68,
- 0x69, 0xcf, 0x0e, 0xdf, 0x5f, 0x7e, 0x9b, 0xec, 0x0f, 0x77, 0x1f, 0x55,
- 0x9f, 0x02, 0x81, 0xd0, 0x6a, 0x43, 0x17, 0x0f, 0xd4, 0xae, 0xc5, 0x5f,
- 0x97, 0x45, 0x9b, 0xf2, 0x21, 0xe6, 0x9b, 0x17, 0xfd, 0x49, 0xaf, 0x5f,
- 0x72, 0xb8, 0x8c, 0xb3, 0x76, 0x82, 0xb5, 0x4f, 0x0a, 0x34, 0x18, 0xc0,
- 0x84, 0xab, 0x1e, 0x0a, 0x63, 0xd6, 0x51, 0x90, 0x8e, 0x56, 0x67, 0x05,
- 0x43, 0x48, 0x53, 0xb5, 0x41, 0xbf, 0x42, 0xde, 0x7d, 0x3e, 0x53, 0x96,
- 0xce, 0x13, 0x7a, 0xec, 0xc5, 0x9b, 0xa3, 0x4e, 0x73, 0xcf, 0x3f, 0x7b,
- 0xb6, 0xfb, 0x07, 0x26, 0xe9, 0x95, 0xe4, 0x1d, 0x11, 0x2f, 0x42, 0x14,
- 0x3b, 0xe7, 0x87, 0x8a, 0xaa, 0x57, 0xd5, 0xcf, 0x50, 0xca, 0x43, 0x7e,
- 0x79, 0x7d, 0xdd, 0x4c, 0x29, 0x5b, 0x4b, 0xe9, 0xab, 0x38, 0x17, 0x83,
- 0x46, 0xf4, 0x5f, 0xff, 0x1d, 0x16, 0xd7, 0xfe, 0xf4, 0x0b, 0xa2, 0x01,
- 0x20, 0xc1, 0xb3, 0xb9, 0xfe, 0x2a, 0x64, 0x6a, 0x77, 0x1d, 0xd3, 0x71,
- 0xde, 0xfc, 0xd3, 0x66, 0x62, 0xa9, 0x6a, 0x50, 0x8f, 0x15, 0x44, 0xa8,
- 0x35, 0xab, 0x53, 0x50, 0x0d, 0xb4, 0x77, 0xba, 0xac, 0x40, 0x13, 0x4f,
- 0x3d, 0x8d, 0x40, 0x67, 0x41, 0x08, 0x5c, 0xa6, 0xab, 0xa8, 0xa6, 0x94,
- 0x73, 0x45, 0x50, 0xbc, 0xd4, 0x4d, 0x4e, 0xde, 0x6c, 0x4e, 0xad, 0xc2,
- 0x08, 0x48, 0x17, 0x45, 0x0d, 0x73, 0x5e, 0xac, 0xf0, 0x5d, 0x4a, 0x02,
- 0xd1, 0x7f, 0x99, 0x15, 0xe8, 0x37, 0x77, 0xe5, 0x7f, 0xb7, 0xfd, 0x98,
- 0x46, 0xc3, 0xa0, 0xfe, 0x7e, 0xf8, 0xd3, 0x1e, 0xd5, 0x05, 0xf5, 0xba,
- 0x4d, 0x70, 0x8a, 0xbf, 0x5d, 0x55, 0xab, 0x20, 0xad, 0xc3, 0xd4, 0xd5,
- 0x0f, 0x52, 0xcd, 0x71, 0x9f, 0xb4, 0xc6, 0xff, 0x1e, 0xd2, 0x7f, 0x7f,
- 0xda, 0x1b, 0x3c, 0xfb, 0xc5, 0x7e, 0xf4, 0x4f, 0x7b, 0x1f, 0xfe, 0xb4,
- 0xdf, 0x8b, 0x95, 0x7d, 0x39, 0x00, 0x00, 0x2f, 0x41, 0x91, 0x14, 0xda,
- 0xe2, 0x5e, 0x6a, 0x35, 0x24, 0xc0, 0xe8, 0xc8, 0xf1, 0x40, 0xb5, 0x1b,
- 0x41, 0x49, 0x22, 0xbf, 0xd5, 0x90, 0x9d, 0xc5, 0x4e, 0x53, 0x55, 0x82,
- 0x3c, 0x15, 0x0e, 0x77, 0x25, 0xbf, 0xaf, 0x30, 0x09, 0x74, 0x42, 0xa4,
- 0x8a, 0x20, 0x90, 0x85, 0x45, 0xd6, 0xde, 0x1e, 0x84, 0x99, 0xa2, 0x40,
- 0x1b, 0xe1, 0x6c, 0x48, 0x5a, 0x94, 0xb9, 0xcf, 0xd2, 0xa4, 0x33, 0xe9,
- 0xe3, 0xb1, 0xfd, 0x49, 0x91, 0x05, 0xe5, 0x58, 0x5a, 0xb9, 0xc9, 0xd6,
- 0x9b, 0x8a, 0x83, 0xb2, 0xe5, 0xfc, 0xe7, 0xfb, 0x81, 0x47, 0xae, 0xa1,
- 0xb7, 0x04, 0x47, 0x3a, 0xc8, 0x3c, 0xfa, 0x2b, 0xe0, 0xc2, 0x3c, 0x37,
- 0x27, 0xdf, 0x2a, 0xa6, 0xc1, 0xbc, 0x76, 0xe1, 0x17, 0xfc, 0x4c, 0x42,
- 0x2f, 0x54, 0xe7, 0x0f, 0x76, 0xb6, 0x32, 0x22, 0xcb, 0xd2, 0x31, 0x71,
- 0xd7, 0xb5, 0xa8, 0x80, 0x2c, 0xaf, 0xcb, 0xd8, 0x41, 0x4e, 0xa5, 0xf5,
- 0x8a, 0x09, 0xf1, 0xa7, 0xc2, 0x9b, 0x04, 0x99, 0x28, 0x4c, 0xce, 0x7a,
- 0xda, 0xae, 0x01, 0xe5, 0x8e, 0x36, 0xd9, 0xc0, 0xab, 0x8c, 0x45, 0x21,
- 0x2e, 0x7e, 0xca, 0x23, 0xe4, 0x60, 0x89, 0x86, 0xf5, 0x06, 0x41, 0x2c,
- 0x92, 0x6e, 0xa8, 0xe9, 0xbd, 0x91, 0x86, 0x0c, 0xc8, 0x3a, 0xb4, 0x15,
- 0x10, 0xea, 0x22, 0x10, 0x69, 0x63, 0xb6, 0xda, 0xe6, 0x60, 0x33, 0xd9,
- 0xb2, 0x86, 0xdd, 0x34, 0xad, 0x6f, 0xb6, 0x63, 0x5e, 0x48, 0xe7, 0xf8,
- 0x73, 0x82, 0x6a, 0x2c, 0x9e, 0x07, 0xba, 0x32, 0x59, 0x42, 0xad, 0x56,
- 0x60, 0xcf, 0x18, 0x59, 0x83, 0x52, 0x04, 0x07, 0x36, 0x8e, 0xdc, 0xfa,
- 0xc9, 0x80, 0x4c, 0x45, 0x46, 0xd4, 0xfd, 0x4f, 0x44, 0x61, 0xc2, 0xa0,
- 0x16, 0x9e, 0xe5, 0x24, 0xaf, 0x01, 0x97, 0x41, 0xb9, 0x4b, 0x94, 0xe2,
- 0x77, 0xc9, 0xcb, 0xc5, 0x4d, 0x65, 0x34, 0xbf, 0xb0, 0xda, 0x6a, 0xf4,
- 0x6d, 0xc2, 0xf0, 0x97, 0xe6, 0x29, 0x7e, 0xc6, 0xee, 0x0c, 0x0f, 0x72,
- 0xf0, 0x0f, 0x44, 0xc9, 0xa3, 0xfc, 0x91, 0x41, 0x5a, 0x0f, 0x02, 0x2d,
- 0x87, 0xc2, 0x88, 0x7e, 0xc8, 0x94, 0x94, 0x4e, 0xb2, 0x45, 0x28, 0x77,
- 0x91, 0x42, 0x6a, 0xc5, 0x04, 0x24, 0xde, 0xc9, 0xce, 0x70, 0xb8, 0x43,
- 0xf2, 0x6a, 0xc7, 0xfc, 0x21, 0x96, 0x0c, 0x32, 0x6d, 0xbb, 0x3c, 0x57,
- 0x66, 0x87, 0xd3, 0xb7, 0xc8, 0xfd, 0x23, 0x9c, 0x90, 0x1e, 0x6f, 0xd0,
- 0xdf, 0x96, 0xc8, 0x3e, 0xad, 0x8c, 0x26, 0x59, 0x71, 0x31, 0xef, 0xbc,
- 0x73, 0x41, 0x06, 0xec, 0x52, 0xec, 0x55, 0xaf, 0x05, 0x32, 0xa2, 0xc3,
- 0x98, 0x46, 0x26, 0x1d, 0x3c, 0x2f, 0x34, 0x88, 0xbc, 0x51, 0xac, 0x2e,
- 0x54, 0x51, 0xa7, 0x6b, 0x6d, 0xb9, 0xa7, 0xfb, 0x6d, 0x9f, 0xc7, 0x22,
- 0x2f, 0x8c, 0x75, 0x61, 0xf4, 0x62, 0x60, 0x72, 0x52, 0xf6, 0x5d, 0x58,
- 0xc5, 0xc3, 0x8e, 0xb4, 0x90, 0x7b, 0x66, 0xa9, 0xf8, 0x44, 0x9e, 0xb2,
- 0xe1, 0x11, 0x59, 0x71, 0xfc, 0x7e, 0x2b, 0xb8, 0x28, 0xf9, 0x23, 0xdb,
- 0xd4, 0x84, 0x97, 0x9f, 0xbb, 0xc8, 0x2c, 0x43, 0x86, 0x60, 0xbe, 0xa4,
- 0x9c, 0xfc, 0x03, 0xc5, 0x5d, 0xd2, 0x96, 0x63, 0x1e, 0x0f, 0xeb, 0x6f,
- 0xb0, 0x87, 0xc9, 0xeb, 0x82, 0x19, 0x33, 0xc1, 0x9a, 0x9a, 0x99, 0x7f,
- 0x7d, 0x7c, 0x21, 0xda, 0x09, 0x0a, 0xc3, 0x1d, 0x0d, 0x6a, 0xc8, 0x12,
- 0x4c, 0x46, 0xcc, 0xf3, 0xa7, 0x96, 0x97, 0xbc, 0xbe, 0x49, 0xf7, 0x9f,
- 0x3d, 0x97, 0x6e, 0x2b, 0x66, 0x16, 0x6c, 0xa4, 0x4d, 0xfe, 0xd5, 0xce,
- 0x0e, 0x07, 0xca, 0xc9, 0x30, 0x0d, 0x64, 0x42, 0x2a, 0xec, 0xea, 0x9b,
- 0x5f, 0x6c, 0x46, 0x53, 0xe4, 0xac, 0xd3, 0x56, 0xc9, 0x38, 0xc9, 0xf3,
- 0x8c, 0xbc, 0xba, 0x16, 0x9f, 0x42, 0xdf, 0xf7, 0xd7, 0x32, 0x00, 0x42,
- 0xba, 0x86, 0x66, 0x40, 0x50, 0x26, 0x84, 0x8a, 0x29, 0xd1, 0x82, 0x54,
- 0xc2, 0xef, 0xf4, 0x66, 0x07, 0x29, 0x67, 0xa0, 0x80, 0x9d, 0x84, 0x50,
- 0x26, 0x9a, 0xf0, 0x46, 0x0b, 0xe2, 0xb5, 0x2c, 0x69, 0x9f, 0x04, 0x58,
- 0x4d, 0xe8, 0x7e, 0xb4, 0xf3, 0x34, 0xe2, 0xc2, 0xee, 0x18, 0x2c, 0xe6,
- 0x72, 0x1c, 0x64, 0x28, 0xc8, 0x37, 0x2d, 0xd8, 0x26, 0xac, 0x79, 0x2f,
- 0x31, 0xd0, 0x1d, 0x17, 0x73, 0x13, 0x54, 0xec, 0x35, 0xf6, 0x26, 0x20,
- 0xb0, 0x1a, 0x01, 0xc7, 0xac, 0x08, 0x2a, 0x84, 0x7b, 0x63, 0xd6, 0x25,
- 0x67, 0xf0, 0x25, 0xb3, 0xb6, 0x14, 0xf4, 0x09, 0xce, 0x81, 0xd9, 0x0a,
- 0x3b, 0xb4, 0x0f, 0xc4, 0xd0, 0x08, 0x78, 0x0f, 0xc8, 0xbf, 0xfc, 0x62,
- 0xb8, 0x7b, 0xa0, 0xc8, 0xac, 0xfd, 0xe4, 0x9b, 0x62, 0x49, 0xeb, 0x41,
- 0x83, 0xfe, 0x66, 0xf4, 0x5d, 0x50, 0x62, 0x45, 0x6f, 0x3c, 0x7d, 0x42,
- 0x6f, 0xbc, 0x1b, 0xf1, 0x53, 0x77, 0xe5, 0xec, 0xca, 0xbc, 0xb9, 0x73,
- 0x74, 0x9f, 0x9a, 0x3f, 0x62, 0x8f, 0x7f, 0x46, 0x8f, 0x9b, 0x8d, 0x37,
- 0x6d, 0x02, 0x4e, 0xf2, 0x44, 0x08, 0x7c, 0x0e, 0x92, 0xf3, 0x72, 0x96,
- 0x56, 0x70, 0x52, 0xf3, 0xe6, 0x5b, 0xd3, 0xe3, 0xa7, 0x4f, 0x23, 0x3d,
- 0xee, 0xaf, 0xe8, 0xd0, 0xf0, 0x1f, 0xef, 0xd1, 0x19, 0xdc, 0x7e, 0xf4,
- 0xb7, 0x71, 0x3a, 0xf9, 0x88, 0x9d, 0x88, 0x3c, 0x76, 0x0b, 0x34, 0xfc,
- 0x47, 0x4a, 0x73, 0xc6, 0x1f, 0x78, 0x0c, 0x9f, 0x51, 0x05, 0x00, 0xb6,
- 0x06, 0x85, 0xed, 0x9f, 0xed, 0x3f, 0xd9, 0xdb, 0x79, 0x3e, 0x7c, 0x3a,
- 0xdc, 0xb7, 0x79, 0x65, 0x66, 0x63, 0xdd, 0x12, 0x7b, 0x06, 0x05, 0xf2,
- 0x23, 0xbe, 0x6f, 0x64, 0x54, 0xe4, 0x85, 0x69, 0x87, 0x62, 0xfe, 0xf6,
- 0x27, 0x70, 0x1a, 0xb9, 0x8c, 0x92, 0x94, 0xc0, 0x26, 0xfc, 0x02, 0xa5,
- 0x61, 0x84, 0x28, 0x90, 0x50, 0x1b, 0xa8, 0x13, 0xea, 0xe8, 0x20, 0x4a,
- 0x63, 0xa4, 0x7a, 0x8e, 0x73, 0x63, 0x30, 0x37, 0xe5, 0x12, 0x1e, 0x75,
- 0x72, 0xdf, 0x28, 0xdc, 0x3a, 0x14, 0x24, 0x8c, 0x83, 0x8e, 0x58, 0xc4,
- 0x2f, 0xc6, 0x9d, 0x47, 0xf6, 0xee, 0xb8, 0x45, 0xe9, 0x4e, 0x8e, 0xd8,
- 0x06, 0xce, 0x58, 0xd0, 0x9c, 0x18, 0x43, 0xa6, 0x98, 0x90, 0x16, 0xf2,
- 0xad, 0xb1, 0x33, 0x6e, 0xe1, 0x33, 0x8e, 0xf1, 0x84, 0x93, 0x99, 0x41,
- 0xea, 0xb1, 0xf5, 0xfa, 0x6b, 0x82, 0x83, 0xc3, 0x44, 0x97, 0x1f, 0x70,
- 0xcd, 0x04, 0xbb, 0x3f, 0x30, 0xee, 0x40, 0xdc, 0xb5, 0x98, 0xd5, 0xdd,
- 0x8a, 0x0b, 0x9a, 0x38, 0x55, 0x2c, 0xb1, 0x77, 0xdb, 0x65, 0x07, 0xfb,
- 0xe5, 0x67, 0x31, 0xef, 0xcb, 0x03, 0xae, 0x08, 0x81, 0xa1, 0x68, 0xe3,
- 0x50, 0xf0, 0xbf, 0x3a, 0xf4, 0x9e, 0x7a, 0x0b, 0x06, 0x95, 0x4b, 0x5d,
- 0xfe, 0x43, 0x69, 0xf3, 0x37, 0xef, 0xb2, 0x27, 0xbf, 0xff, 0x2e, 0xdb,
- 0x7f, 0xec, 0x2e, 0x73, 0x9b, 0x8c, 0xce, 0xd9, 0x9a, 0x2d, 0x46, 0x7b,
- 0x4c, 0x79, 0xcf, 0xe3, 0xbb, 0xcc, 0xdf, 0x66, 0x30, 0x51, 0x63, 0x1b,
- 0xad, 0xb5, 0xcf, 0xec, 0x36, 0x5b, 0xb1, 0xcb, 0x18, 0xaa, 0x8a, 0xf7,
- 0xd8, 0xfa, 0x2d, 0xc6, 0x7b, 0x8c, 0xb9, 0xa9, 0xd7, 0xec, 0xb2, 0xb6,
- 0x07, 0x7e, 0xfd, 0x3e, 0x73, 0xdb, 0xe1, 0xd1, 0xbb, 0x4c, 0xd9, 0x6c,
- 0x58, 0xea, 0xac, 0xd8, 0x62, 0xad, 0x3d, 0xb6, 0x86, 0xf6, 0x6f, 0xef,
- 0x45, 0x6c, 0x97, 0x3d, 0x79, 0xcc, 0x2e, 0x33, 0x0b, 0x3a, 0xa3, 0xbb,
- 0xb7, 0xb5, 0xcb, 0x9e, 0xfe, 0xbe, 0xbb, 0x8c, 0xa0, 0x72, 0x92, 0x4e,
- 0xb1, 0x65, 0x72, 0xf8, 0x8f, 0xae, 0x63, 0x8a, 0x66, 0xb5, 0xd5, 0xa0,
- 0x06, 0xf1, 0xd7, 0x49, 0x8a, 0xce, 0x81, 0x7e, 0x70, 0xc5, 0xda, 0xe0,
- 0x34, 0x7b, 0xbf, 0x7a, 0xc5, 0xf6, 0x3b, 0xf1, 0x41, 0xa3, 0xfa, 0xb1,
- 0xd3, 0xf6, 0x27, 0x75, 0x9e, 0x1f, 0xec, 0xec, 0xfc, 0x02, 0x27, 0xc4,
- 0x01, 0xdd, 0x7d, 0xbf, 0x04, 0xdc, 0xb7, 0x11, 0xfd, 0x78, 0x74, 0x76,
- 0xf4, 0xdd, 0x48, 0x9c, 0xbf, 0xa2, 0xc4, 0xa8, 0x92, 0x03, 0x54, 0x3b,
- 0x0a, 0xf9, 0xa0, 0x88, 0x38, 0xd0, 0x9b, 0x99, 0x33, 0x71, 0xf0, 0xa9,
- 0xaf, 0x1e, 0x58, 0xe4, 0xed, 0x88, 0x30, 0x06, 0x56, 0x1a, 0x1f, 0x67,
- 0x71, 0xee, 0x4a, 0xab, 0x2b, 0x61, 0xb1, 0xb8, 0x23, 0xd2, 0x13, 0x6b,
- 0xfb, 0x17, 0xde, 0x8b, 0x5b, 0xcd, 0x4d, 0x85, 0xe2, 0x08, 0x3c, 0xba,
- 0xad, 0xf1, 0x97, 0x75, 0xbd, 0x93, 0x7e, 0x7d, 0x0b, 0x4c, 0xd9, 0x45,
- 0x95, 0xad, 0xe0, 0x9b, 0xbe, 0xbc, 0xf1, 0x7e, 0xab, 0xae, 0x28, 0x87,
- 0x2d, 0xee, 0xa6, 0x4b, 0x30, 0xd2, 0xbc, 0xf9, 0xa6, 0xf7, 0x82, 0x1c,
- 0x34, 0x02, 0x01, 0x46, 0x19, 0x8b, 0x85, 0x28, 0x99, 0x81, 0x6d, 0xb4,
- 0x51, 0x7a, 0x8e, 0x4f, 0xf7, 0x8e, 0x1e, 0xb2, 0x96, 0x42, 0x18, 0x22,
- 0xc0, 0xa8, 0x9f, 0x9a, 0x26, 0xbb, 0x8e, 0x0d, 0xfe, 0x45, 0x4a, 0xbf,
- 0xe1, 0xbf, 0x3f, 0xa3, 0xef, 0x22, 0x42, 0x81, 0x7f, 0xdd, 0xd0, 0x3f,
- 0x25, 0x38, 0x2f, 0x40, 0x4c, 0xfe, 0x2a, 0x4f, 0xe2, 0x13, 0xed, 0xd7,
- 0xdb, 0x58, 0x90, 0x80, 0x77, 0x65, 0x00, 0x34, 0x84, 0x51, 0xfb, 0x60,
- 0x6e, 0x41, 0xde, 0x84, 0x95, 0xc2, 0x68, 0xf9, 0x69, 0x5c, 0xe1, 0xca,
- 0x7c, 0xac, 0x46, 0x2d, 0xbd, 0xf7, 0x29, 0xb3, 0x5c, 0xc4, 0x51, 0x16,
- 0xa0, 0x0f, 0x8a, 0xa8, 0x08, 0x98, 0x32, 0x13, 0x42, 0x48, 0xbf, 0xf7,
- 0x76, 0x3f, 0x0f, 0xbd, 0xb6, 0xef, 0xb5, 0x20, 0xcc, 0x01, 0x16, 0x22,
- 0xaf, 0x00, 0xc9, 0xd9, 0x63, 0x57, 0x07, 0x11, 0xfb, 0x6c, 0xa4, 0x6a,
- 0x8c, 0x8c, 0xe9, 0x69, 0xc6, 0xd6, 0xd7, 0x98, 0x0d, 0x69, 0x91, 0x13,
- 0x69, 0x9b, 0x00, 0x82, 0x7c, 0x0f, 0xb9, 0x24, 0xd6, 0x92, 0x63, 0x86,
- 0xa3, 0xe3, 0x81, 0x7c, 0x07, 0xcd, 0xb6, 0xc4, 0x6c, 0xbe, 0x72, 0xe8,
- 0x57, 0x7f, 0x7e, 0xba, 0x4b, 0xab, 0xaa, 0xad, 0x10, 0x29, 0xcc, 0x4c,
- 0x7d, 0xed, 0x7f, 0x7e, 0x92, 0x0e, 0xff, 0x89, 0x70, 0x46, 0xcf, 0xda,
- 0x66, 0xf9, 0x9f, 0xe4, 0x8c, 0x5f, 0x13, 0xe8, 0xca, 0x60, 0x9c, 0x56,
- 0x91, 0x02, 0x04, 0xd1, 0x10, 0x15, 0xaa, 0x43, 0x71, 0x2e, 0xf4, 0x2d,
- 0xe6, 0x57, 0x90, 0xac, 0x72, 0xfb, 0x43, 0xd3, 0x54, 0x12, 0x92, 0x36,
- 0x58, 0x87, 0xb7, 0x4f, 0xb2, 0xda, 0x0f, 0xf0, 0xa5, 0xd2, 0x59, 0x9f,
- 0x42, 0x61, 0x11, 0x14, 0x22, 0xac, 0x4d, 0xeb, 0x23, 0xd3, 0x2a, 0xbd,
- 0xf3, 0x4c, 0x72, 0x06, 0x78, 0xbf, 0x62, 0xc7, 0xb7, 0xcd, 0x61, 0xa0,
- 0x14, 0x6b, 0x0a, 0x69, 0xc6, 0xb4, 0x8f, 0x7a, 0x52, 0x65, 0x12, 0x62,
- 0x20, 0xb4, 0x40, 0x84, 0x2f, 0x09, 0x66, 0xcf, 0xa8, 0x1d, 0xd7, 0x99,
- 0x16, 0x1e, 0xda, 0x51, 0x2b, 0xbe, 0x04, 0x40, 0x25, 0x86, 0x91, 0xac,
- 0x5e, 0x97, 0xb8, 0xa3, 0xa4, 0xb7, 0xa9, 0x20, 0x50, 0xd0, 0xab, 0x5a,
- 0x02, 0x2a, 0xe9, 0xd1, 0x0c, 0xde, 0x42, 0xe4, 0x6d, 0xe6, 0xdb, 0x79,
- 0x97, 0xd2, 0x7c, 0x6b, 0xf0, 0xaa, 0x7c, 0x35, 0xd8, 0x56, 0xd7, 0x27,
- 0xa1, 0x3f, 0xd6, 0xb0, 0x85, 0xd0, 0x59, 0x0a, 0x78, 0xde, 0xc0, 0x6b,
- 0x23, 0xd7, 0x17, 0x8a, 0x18, 0x90, 0xc1, 0x28, 0xe8, 0x4e, 0x01, 0xad,
- 0x08, 0xf7, 0xac, 0xa2, 0x48, 0xa7, 0xc8, 0x3b, 0xf2, 0xef, 0x98, 0xd9,
- 0xba, 0xe2, 0x04, 0x29, 0xd4, 0x44, 0x52, 0x18, 0x58, 0xe0, 0x88, 0xd9,
- 0xa9, 0x5c, 0x2e, 0xda, 0x77, 0x13, 0x95, 0xd7, 0xaa, 0x6c, 0x78, 0xa9,
- 0x42, 0xe5, 0xcb, 0x07, 0x93, 0xe7, 0xad, 0xf8, 0xb9, 0x12, 0xaf, 0x08,
- 0x1d, 0x3e, 0x14, 0x53, 0x30, 0x8c, 0xf1, 0xe4, 0x26, 0x9b, 0x0b, 0xfd,
- 0xca, 0x8a, 0x52, 0xe4, 0x95, 0x75, 0xbb, 0xed, 0x3e, 0x71, 0x76, 0xd9,
- 0x55, 0xb3, 0x18, 0xce, 0xcb, 0xbf, 0x9b, 0x69, 0x4e, 0x89, 0xcf, 0x2d,
- 0x38, 0x12, 0xe6, 0xae, 0x2f, 0x78, 0x5d, 0x28, 0x46, 0x50, 0x58, 0xab,
- 0xd2, 0x89, 0xef, 0x44, 0xe1, 0xa6, 0xb9, 0x62, 0x3c, 0x49, 0x8e, 0x4c,
- 0x8f, 0x8f, 0x3f, 0xbc, 0x7f, 0x37, 0x7a, 0x7f, 0xde, 0xdd, 0xd8, 0xe7,
- 0x67, 0x17, 0x97, 0xc7, 0xaf, 0x3f, 0x9c, 0x5f, 0x9c, 0x5d, 0x9e, 0x1d,
- 0x9d, 0x9d, 0x26, 0x5b, 0x7b, 0xdb, 0x6b, 0x4b, 0xa4, 0xac, 0x4b, 0xc3,
- 0x43, 0xdd, 0xd3, 0xfe, 0xb3, 0xcc, 0xb2, 0xbd, 0xd8, 0xa2, 0xf1, 0x84,
- 0xad, 0xfd, 0x20, 0xbb, 0xab, 0x5d, 0xdb, 0xc7, 0xbe, 0x0d, 0x5c, 0x6f,
- 0x10, 0xeb, 0x69, 0x72, 0xbd, 0xe4, 0x93, 0xe2, 0xc2, 0xe5, 0x8c, 0x37,
- 0x19, 0x28, 0x5c, 0x1a, 0xb0, 0xf3, 0xaa, 0x6b, 0xd6, 0xfa, 0xf7, 0x9e,
- 0x75, 0x75, 0x16, 0x5a, 0x03, 0x28, 0x60, 0x6e, 0x57, 0xd4, 0xeb, 0xb7,
- 0x05, 0x63, 0x72, 0x00, 0xcd, 0xd9, 0xbe, 0x01, 0xac, 0x7b, 0x09, 0xa1,
- 0xa0, 0x24, 0x95, 0x35, 0x3a, 0x73, 0x95, 0x9e, 0x87, 0x1c, 0x45, 0xf2,
- 0x0a, 0x11, 0x99, 0x0b, 0x53, 0xa6, 0x74, 0x04, 0x21, 0x34, 0x9a, 0x5f,
- 0x89, 0xe8, 0x9a, 0x07, 0xe8, 0xb7, 0x9e, 0x54, 0x45, 0x69, 0x51, 0x10,
- 0x96, 0xe4, 0x97, 0xaf, 0xc0, 0xd2, 0x78, 0xe7, 0x75, 0x8a, 0x9a, 0x23,
- 0xa5, 0x0c, 0x98, 0x7a, 0x11, 0x09, 0x7b, 0xac, 0xd1, 0x19, 0xc6, 0xd9,
- 0xc0, 0x89, 0x84, 0xfa, 0xa2, 0x50, 0x2d, 0x23, 0x7f, 0x30, 0x0f, 0x6c,
- 0x64, 0x9e, 0x44, 0x72, 0x97, 0xf7, 0x69, 0xed, 0xfb, 0xbc, 0xa1, 0x25,
- 0x2c, 0xb5, 0x26, 0x43, 0xdf, 0x41, 0x9e, 0xf8, 0x3e, 0x2e, 0x74, 0x88,
- 0x5c, 0xef, 0x6e, 0x34, 0x5e, 0x57, 0xb4, 0x48, 0xd2, 0xdc, 0x2d, 0xdd,
- 0xc9, 0xc5, 0x5d, 0x63, 0x8b, 0xd7, 0x05, 0xc3, 0xc3, 0xa2, 0xf8, 0x12,
- 0xfc, 0x85, 0xd1, 0xdd, 0x0f, 0x24, 0x57, 0x89, 0x93, 0x77, 0xb8, 0xf6,
- 0x1d, 0x90, 0x82, 0x47, 0xe7, 0x11, 0xec, 0x05, 0x57, 0x09, 0x0f, 0x71,
- 0xab, 0x94, 0xbe, 0xbb, 0xc3, 0xdd, 0x64, 0xf4, 0xf6, 0x6b, 0xc1, 0x22,
- 0xfc, 0x7a, 0xc4, 0x38, 0x0d, 0x6c, 0x79, 0xeb, 0x2b, 0xc3, 0x38, 0xe2,
- 0x13, 0x3b, 0x33, 0x49, 0x96, 0x52, 0xef, 0xfe, 0x3d, 0xb5, 0xc5, 0x65,
- 0xf5, 0xea, 0x31, 0xf7, 0x23, 0x37, 0x93, 0x16, 0xac, 0x9b, 0x43, 0x55,
- 0xbb, 0x7e, 0x0a, 0xcb, 0x2b, 0x0f, 0x79, 0xb8, 0x1e, 0xf9, 0x6a, 0x3f,
- 0x38, 0x0d, 0xbf, 0xdb, 0x39, 0xd0, 0xd0, 0xac, 0x15, 0xe1, 0xdd, 0xc9,
- 0x38, 0xb7, 0x6f, 0x61, 0xea, 0x32, 0x2a, 0x95, 0x81, 0x3f, 0x78, 0x96,
- 0x5d, 0x41, 0x81, 0x43, 0xf5, 0x5a, 0x1f, 0xbf, 0x44, 0xe0, 0xcb, 0xe6,
- 0x36, 0x45, 0x61, 0x90, 0xd0, 0x46, 0x3a, 0xf1, 0x15, 0x62, 0x45, 0x4c,
- 0xeb, 0xce, 0xc1, 0xbf, 0x83, 0x3c, 0x95, 0xc1, 0x62, 0xf9, 0x6a, 0x16,
- 0xd8, 0x03, 0x40, 0xb9, 0xe5, 0x1a, 0xdb, 0xf2, 0x4e, 0xd2, 0x8c, 0xca,
- 0xe1, 0xee, 0xb9, 0x92, 0x2e, 0x30, 0xd4, 0xa0, 0x44, 0x4d, 0xc9, 0x20,
- 0x70, 0x49, 0x9c, 0xba, 0xa7, 0xc1, 0x7b, 0xe4, 0x30, 0xb0, 0x44, 0x2b,
- 0x0a, 0x25, 0xe3, 0x20, 0x49, 0x5e, 0x67, 0xc5, 0xbd, 0x4a, 0x46, 0x97,
- 0x7f, 0x04, 0x04, 0x8b, 0x5b, 0x76, 0x55, 0xb3, 0xd7, 0x99, 0x81, 0x81,
- 0x6a, 0xdc, 0x81, 0xb6, 0x8b, 0x61, 0x97, 0xda, 0x7d, 0x8e, 0x9d, 0xff,
- 0x57, 0x76, 0x1a, 0xa4, 0x86, 0xda, 0x9f, 0x8b, 0x2d, 0x00, 0x25, 0x68,
- 0x64, 0x0e, 0xdf, 0xd3, 0x16, 0xd7, 0x4e, 0xc3, 0x76, 0x9f, 0xc6, 0x00,
- 0xc3, 0xa8, 0x5e, 0x8e, 0xff, 0xca, 0xb0, 0xdb, 0x09, 0x19, 0xe8, 0x95,
- 0x4c, 0x83, 0xe4, 0xab, 0x19, 0xc9, 0x66, 0x1e, 0xe0, 0x68, 0x92, 0x39,
- 0xd1, 0x45, 0xac, 0x39, 0xc4, 0x0c, 0x15, 0xef, 0xba, 0xbd, 0x05, 0xd0,
- 0xa5, 0x75, 0x25, 0x4a, 0x07, 0x1b, 0x2b, 0x04, 0xe5, 0xe0, 0x8a, 0x24,
- 0x13, 0xa7, 0x41, 0x75, 0xae, 0x30, 0x9e, 0x4b, 0x4e, 0xbd, 0xb3, 0x89,
- 0xa0, 0xf4, 0xf8, 0xca, 0xb6, 0x54, 0xde, 0xd5, 0xfd, 0x7f, 0xa7, 0x3f,
- 0xc2, 0x31, 0xb4, 0xa2, 0x27, 0x34, 0xcd, 0x7a, 0xd2, 0xe9, 0x71, 0x08,
- 0x0f, 0xbc, 0xbe, 0xea, 0x03, 0xaf, 0x9c, 0x30, 0x5d, 0xdf, 0x36, 0x04,
- 0xcf, 0x63, 0x3e, 0xf0, 0xbe, 0x50, 0x6c, 0x31, 0xdd, 0xdd, 0x0b, 0x0b,
- 0x77, 0x7e, 0x97, 0x56, 0x05, 0x32, 0xbd, 0x7d, 0x73, 0x82, 0xe0, 0x28,
- 0x16, 0xc2, 0x84, 0x90, 0x5e, 0x51, 0x8e, 0x6c, 0x95, 0x39, 0x74, 0x56,
- 0x5a, 0x49, 0x06, 0x9d, 0x11, 0xc0, 0x67, 0x4d, 0xd9, 0x5c, 0x94, 0x0d,
- 0x43, 0x4f, 0x53, 0x52, 0x2d, 0xe9, 0x0b, 0x15, 0x79, 0xda, 0xbc, 0x49,
- 0x56, 0x55, 0x93, 0x5a, 0xb3, 0x8b, 0x4f, 0x2d, 0x2d, 0x17, 0x14, 0xc4,
- 0x93, 0x74, 0x27, 0x0e, 0x88, 0x7a, 0x42, 0x46, 0x3e, 0xc7, 0x79, 0x51,
- 0x70, 0xdc, 0xb8, 0x98, 0x5b, 0x7a, 0x5b, 0xe6, 0x94, 0x5c, 0x63, 0xbd,
- 0x15, 0x50, 0x82, 0xdc, 0x2e, 0xb9, 0x0c, 0xb9, 0x13, 0x60, 0xa4, 0xd8,
- 0x8c, 0x14, 0xb1, 0x52, 0xc8, 0x1f, 0x88, 0x84, 0x21, 0x38, 0x0e, 0xbc,
- 0x22, 0x1c, 0x3e, 0xdd, 0xda, 0x1c, 0xd2, 0x16, 0x52, 0x86, 0x3e, 0x33,
- 0x7b, 0xb2, 0x48, 0x1b, 0x3d, 0x2f, 0x9e, 0x44, 0xa4, 0x1e, 0x02, 0x94,
- 0xa0, 0x20, 0xdb, 0x61, 0x62, 0x11, 0x81, 0xba, 0xe8, 0xd2, 0x6d, 0x82,
- 0x68, 0x7b, 0xa3, 0xda, 0xec, 0x4a, 0xa7, 0x2c, 0x0e, 0x1f, 0x10, 0xe2,
- 0x9f, 0xee, 0x35, 0x9f, 0x6b, 0xad, 0x00, 0x5f, 0xa0, 0xc2, 0xd6, 0x4c,
- 0x74, 0xde, 0x60, 0xc1, 0x3a, 0xf9, 0xa4, 0x9a, 0x66, 0x29, 0x5e, 0x8f,
- 0xf9, 0x7c, 0x19, 0xb2, 0xd9, 0x49, 0x10, 0x4d, 0xe0, 0xd0, 0x21, 0xed,
- 0x19, 0x68, 0x09, 0x6a, 0x84, 0xb8, 0x3b, 0x18, 0x71, 0xdf, 0x63, 0x21,
- 0xa0, 0xb4, 0x5d, 0x0a, 0xab, 0xc5, 0xbd, 0x71, 0x3b, 0x16, 0x5f, 0xc5,
- 0x6c, 0x98, 0x62, 0x3a, 0x30, 0x42, 0x60, 0xb1, 0xc6, 0x9b, 0xe5, 0x1c,
- 0x3e, 0xad, 0x44, 0x54, 0x1f, 0xd1, 0x81, 0x7f, 0xc2, 0xf9, 0x6e, 0x32,
- 0x77, 0x61, 0x22, 0xb7, 0xd1, 0x05, 0x9e, 0xc4, 0x66, 0x32, 0x96, 0x50,
- 0xd7, 0x8d, 0xf5, 0xd2, 0xa0, 0x56, 0xc2, 0xf0, 0xf3, 0x0c, 0x62, 0x02,
- 0x75, 0xc2, 0x56, 0x65, 0x1f, 0xf1, 0xdc, 0xc9, 0xb4, 0xbd, 0xe7, 0x32,
- 0x27, 0xb4, 0x88, 0xea, 0xd5, 0x42, 0x52, 0x98, 0xbd, 0x2f, 0xb1, 0x41,
- 0x14, 0xcc, 0x23, 0x20, 0x8f, 0x14, 0xd0, 0x9d, 0x9f, 0x44, 0x50, 0xc5,
- 0x97, 0x76, 0xf1, 0xd5, 0x8e, 0x78, 0x54, 0x20, 0x27, 0xf1, 0x21, 0xea,
- 0x58, 0xbe, 0x16, 0x4c, 0x60, 0xc5, 0x62, 0xc4, 0x70, 0x34, 0xa6, 0x9d,
- 0xec, 0x50, 0xfd, 0x39, 0xf3, 0xa0, 0xc7, 0x73, 0xd2, 0x46, 0x72, 0xde,
- 0x94, 0x2d, 0x1d, 0x72, 0x5a, 0x13, 0x02, 0x3d, 0x17, 0x1b, 0x53, 0x02,
- 0x7d, 0x5a, 0x93, 0xf9, 0xe1, 0x7d, 0x8e, 0x31, 0x34, 0x84, 0x34, 0x59,
- 0xda, 0x75, 0xff, 0xf4, 0x7f, 0xfb, 0xa9, 0x1f, 0x13, 0xd2, 0xb4, 0x56,
- 0xab, 0x7d, 0x15, 0xed, 0xcf, 0xbc, 0x34, 0x27, 0x7a, 0xdd, 0xa0, 0xf0,
- 0xd0, 0x6f, 0x19, 0x54, 0x30, 0x2a, 0x0c, 0x03, 0xf3, 0x1d, 0xac, 0x09,
- 0x7f, 0x66, 0x4d, 0xc4, 0x67, 0xc5, 0x10, 0x4c, 0x8b, 0x6b, 0x88, 0x5c,
- 0xbd, 0x61, 0xd8, 0x07, 0x7f, 0xed, 0x48, 0x1e, 0x9e, 0x46, 0x6c, 0x0d,
- 0xfa, 0xef, 0x4f, 0x07, 0x70, 0xa6, 0x4d, 0x7f, 0x59, 0xd9, 0x8f, 0xe3,
- 0xbe, 0xf4, 0xe5, 0x0f, 0xe8, 0x46, 0xbe, 0xb8, 0x21, 0x67, 0xc9, 0xcb,
- 0x58, 0x05, 0x8c, 0x37, 0x11, 0xf2, 0xd8, 0xef, 0xff, 0xfd, 0x6a, 0xe6,
- 0xb0, 0x66, 0xd6, 0x7c, 0x5f, 0x1e, 0xfb, 0xdd, 0xbf, 0xcf, 0x67, 0xf7,
- 0x41, 0xe7, 0x09, 0x04, 0xd5, 0x6b, 0x49, 0x33, 0x8e, 0xc8, 0xc4, 0xdf,
- 0x2c, 0x14, 0x25, 0x75, 0x39, 0x94, 0x8a, 0xf2, 0xb1, 0x28, 0x2d, 0x82,
- 0x88, 0x45, 0x48, 0xc5, 0xdf, 0x45, 0x82, 0x41, 0x34, 0x87, 0x93, 0x23,
- 0x3c, 0x25, 0x2f, 0xf9, 0xcf, 0x9d, 0xaf, 0x62, 0x6b, 0xa4, 0xd5, 0x20,
- 0x74, 0x0b, 0x2a, 0xb1, 0x09, 0xb8, 0x32, 0xb8, 0x7e, 0x5f, 0x34, 0x5e,
- 0xcb, 0xf2, 0x40, 0x93, 0x65, 0x99, 0xb5, 0xe9, 0xd5, 0x18, 0x9d, 0x8a,
- 0xcc, 0x90, 0x66, 0x73, 0x5a, 0xd8, 0x6b, 0x9b, 0xca, 0x43, 0x8a, 0x47,
- 0xe6, 0x7d, 0xb1, 0xb6, 0x40, 0x29, 0x11, 0x07, 0xa3, 0xcf, 0x49, 0xe9,
- 0xb0, 0x44, 0xbf, 0xed, 0x0b, 0x9b, 0x89, 0x69, 0x8d, 0x76, 0x95, 0xa4,
- 0x32, 0x4a, 0x08, 0x41, 0x96, 0x33, 0x44, 0x5c, 0x11, 0xea, 0x79, 0x64,
- 0xd8, 0x23, 0x75, 0x93, 0x46, 0x78, 0x74, 0xf6, 0xee, 0xdd, 0xf1, 0x51,
- 0x37, 0xe4, 0x66, 0x99, 0x1f, 0x9d, 0xaa, 0x1f, 0x90, 0xe9, 0xe1, 0xf3,
- 0x00, 0x4a, 0x97, 0x98, 0x0b, 0x7f, 0x1f, 0x4c, 0x3b, 0x5c, 0xc7, 0xa2,
- 0xbf, 0x64, 0x95, 0x44, 0x90, 0x34, 0x65, 0x07, 0x44, 0x8a, 0xae, 0x82,
- 0xfd, 0x30, 0xf1, 0xd0, 0x57, 0x98, 0xc7, 0xaa, 0x06, 0x75, 0x13, 0x14,
- 0x51, 0x18, 0x99, 0xd2, 0x0b, 0x24, 0x3e, 0x4f, 0xa7, 0x3b, 0x92, 0x57,
- 0xac, 0xdf, 0x5e, 0xb5, 0x97, 0x19, 0x7a, 0x8b, 0x6a, 0x37, 0x06, 0xe5,
- 0x15, 0xf3, 0x7a, 0xce, 0xd3, 0xea, 0x23, 0x05, 0x85, 0xbd, 0x2a, 0x0e,
- 0xd4, 0xf1, 0x01, 0x0b, 0x78, 0x3a, 0x8d, 0x95, 0x87, 0xc3, 0x77, 0xed,
- 0x27, 0xad, 0x4b, 0x67, 0x84, 0x08, 0xef, 0x40, 0xcb, 0xeb, 0xe8, 0xf5,
- 0x22, 0xbb, 0xa3, 0xcf, 0x30, 0x26, 0x06, 0x95, 0x79, 0x87, 0xe0, 0xfa,
- 0x0c, 0xe8, 0xcc, 0xbe, 0xf9, 0x7b, 0x29, 0x2f, 0xa7, 0xa5, 0x9a, 0x33,
- 0x78, 0x3d, 0x20, 0x72, 0x89, 0x0f, 0x8a, 0x4b, 0x33, 0x82, 0xb9, 0xfa,
- 0x56, 0xe0, 0xed, 0x3a, 0x61, 0xa9, 0x80, 0x7e, 0x47, 0xea, 0x56, 0x2c,
- 0xe6, 0x1d, 0x1c, 0x04, 0xab, 0x20, 0x42, 0x1c, 0x4e, 0x15, 0xfc, 0xd0,
- 0x75, 0xab, 0x09, 0x5d, 0xdd, 0x74, 0x45, 0xfc, 0x6c, 0x44, 0xa8, 0xd5,
- 0x38, 0x2b, 0xf4, 0x09, 0x23, 0xc4, 0x9e, 0x75, 0xb1, 0x57, 0x81, 0x19,
- 0x0a, 0x57, 0x23, 0xe1, 0x91, 0x5d, 0x23, 0x09, 0x9d, 0x1e, 0xc6, 0x61,
- 0x0d, 0xd4, 0x5c, 0x12, 0xa8, 0xa8, 0xcf, 0xea, 0x2b, 0x13, 0x39, 0x98,
- 0x79, 0xa6, 0x94, 0x65, 0xa6, 0x73, 0xaf, 0xf8, 0x22, 0xec, 0xcb, 0x97,
- 0x03, 0x6c, 0xfe, 0x5c, 0x2c, 0x9b, 0x20, 0x1c, 0x47, 0x48, 0x4b, 0x5c,
- 0x66, 0xff, 0xd5, 0x20, 0xa4, 0x26, 0x4a, 0xa7, 0xfe, 0x9a, 0x42, 0x80,
- 0xc3, 0xec, 0xaf, 0x1b, 0x73, 0xfe, 0xe3, 0xfe, 0x59, 0x8b, 0x23, 0xa5,
- 0xe5, 0x0d, 0x31, 0xab, 0x06, 0x33, 0xe6, 0xb6, 0xea, 0x0e, 0xfc, 0x0a,
- 0xdd, 0xbd, 0x60, 0x5f, 0x51, 0x11, 0xb1, 0x0e, 0x50, 0x03, 0x68, 0x7f,
- 0x1d, 0xe9, 0x67, 0xac, 0x1c, 0xf2, 0x3c, 0x65, 0xab, 0x2e, 0xa5, 0x8f,
- 0x0c, 0xdf, 0xc8, 0x0f, 0xfd, 0xfe, 0x37, 0xd3, 0x7a, 0xb2, 0x79, 0x77,
- 0x35, 0xda, 0xe7, 0xfe, 0x88, 0x1e, 0x44, 0xd9, 0xdb, 0x5b, 0xdf, 0x7e,
- 0xfc, 0x67, 0x03, 0xd8, 0xb9, 0xc7, 0xdd, 0xba, 0x0e, 0x52, 0xd1, 0x61,
- 0x2a, 0x76, 0xef, 0x60, 0x08, 0xdc, 0x20, 0x5d, 0xd4, 0xbb, 0x91, 0xd7,
- 0xde, 0xc1, 0xae, 0x9c, 0xc8, 0xbf, 0x86, 0x23, 0x61, 0xef, 0x18, 0xbc,
- 0xa3, 0x04, 0x72, 0x1e, 0x77, 0x25, 0x3f, 0x78, 0x05, 0xb7, 0xaa, 0x31,
- 0xbb, 0xd9, 0x4a, 0xb6, 0x18, 0xeb, 0x91, 0x13, 0x17, 0x29, 0x4d, 0x4c,
- 0xfe, 0x41, 0x75, 0x05, 0x15, 0x60, 0x2d, 0x65, 0x05, 0x5f, 0x69, 0x4d,
- 0xc2, 0x63, 0x6e, 0xa5, 0x60, 0x4a, 0xba, 0x25, 0x5d, 0xad, 0x89, 0x0a,
- 0x67, 0x61, 0x5d, 0x32, 0xba, 0xdb, 0x9e, 0x78, 0xea, 0x77, 0x3f, 0x16,
- 0x8f, 0xcf, 0xa4, 0x6e, 0x2f, 0xcc, 0xda, 0x34, 0x6a, 0x4e, 0xd3, 0x15,
- 0xcc, 0xe6, 0x95, 0x99, 0xd4, 0xdd, 0x54, 0x6a, 0xcf, 0x2b, 0x11, 0xc9,
- 0xa5, 0x46, 0x6b, 0xff, 0x2f, 0xcc, 0xa4, 0xf6, 0x13, 0xa9, 0x53, 0xa4,
- 0x51, 0x47, 0xb2, 0xa8, 0x65, 0xa2, 0x25, 0xeb, 0x51, 0x98, 0xe4, 0xd6,
- 0x65, 0x52, 0xfb, 0xa9, 0xd4, 0xeb, 0x72, 0xa9, 0x51, 0x5b, 0xbc, 0x26,
- 0x93, 0xfa, 0xb7, 0x25, 0x52, 0xaf, 0xca, 0xa4, 0xfe, 0xf5, 0xa9, 0xd4,
- 0xbf, 0x6f, 0x26, 0xf5, 0xef, 0x99, 0xd3, 0x8b, 0xd3, 0x43, 0x2b, 0x92,
- 0x4f, 0xa4, 0x46, 0xe5, 0xe5, 0x43, 0xe8, 0xa2, 0xed, 0x34, 0x10, 0x2f,
- 0x58, 0x2b, 0xcd, 0xb0, 0x46, 0xe3, 0x29, 0xee, 0x45, 0xa0, 0xf3, 0xc8,
- 0x5e, 0x89, 0xe4, 0x91, 0xf9, 0xd1, 0xd4, 0x27, 0xb1, 0x93, 0x5e, 0xd7,
- 0xb3, 0x01, 0x7a, 0x40, 0xa5, 0xa3, 0x81, 0x95, 0xe8, 0xe4, 0x4c, 0xe7,
- 0xb9, 0xdf, 0x5f, 0xe4, 0x34, 0xb3, 0x7a, 0xef, 0x89, 0xb3, 0xd5, 0xe5,
- 0x2f, 0x4b, 0x2a, 0x6b, 0x8c, 0xd9, 0xed, 0x52, 0xc7, 0x31, 0x12, 0x29,
- 0xa3, 0x50, 0x15, 0xfc, 0x1a, 0xbc, 0xa4, 0x99, 0x65, 0x59, 0xb3, 0x21,
- 0x09, 0xcb, 0x99, 0x1a, 0xd4, 0xa8, 0xa0, 0x8a, 0xd9, 0x1f, 0x07, 0xee,
- 0x10, 0xaa, 0x46, 0x51, 0xa1, 0x5d, 0xe3, 0x14, 0xee, 0x0d, 0x9f, 0x70,
- 0xa1, 0xab, 0x86, 0x74, 0xa4, 0x9f, 0x01, 0x38, 0x0d, 0xbe, 0xcf, 0xe0,
- 0xc0, 0x2e, 0x93, 0x8b, 0x49, 0x8c, 0xf4, 0x9d, 0x61, 0x72, 0x41, 0xea,
- 0xa3, 0x51, 0xd6, 0x4d, 0x8f, 0xa4, 0x71, 0xf9, 0x5d, 0xac, 0xb9, 0x36,
- 0x1e, 0xa5, 0xd9, 0x3f, 0xef, 0x2f, 0x4e, 0xc3, 0x28, 0x2f, 0xa2, 0x07,
- 0x07, 0x3b, 0x3b, 0xc8, 0x33, 0xba, 0x49, 0x3f, 0x7d, 0x1a, 0xd6, 0xd9,
- 0xce, 0xb4, 0x9c, 0xd4, 0x3b, 0xb4, 0x82, 0xfa, 0xe5, 0x9b, 0x66, 0x3e,
- 0xfb, 0xc3, 0x8f, 0x81, 0x59, 0x51, 0xba, 0xd9, 0x1e, 0xa3, 0xe0, 0xf9,
- 0x8f, 0xfe, 0x11, 0x3b, 0xcb, 0xa6, 0x72, 0xbd, 0xe4, 0x3c, 0xad, 0xb5,
- 0x3d, 0xb1, 0x0f, 0xff, 0x11, 0x3d, 0x41, 0x89, 0x71, 0x54, 0x26, 0xb4,
- 0xfa, 0x80, 0xc7, 0xfe, 0x88, 0xef, 0xdf, 0xee, 0xad, 0xfa, 0x2c, 0x98,
- 0x10, 0xf1, 0xc4, 0xef, 0xf8, 0xe1, 0xf7, 0xd6, 0x41, 0xc3, 0xe5, 0xd8,
- 0x2f, 0xe9, 0xbf, 0x07, 0x3a, 0xc3, 0xeb, 0x28, 0x96, 0x5a, 0xb4, 0x59,
- 0x2d, 0xf2, 0x60, 0x65, 0x77, 0xd6, 0x6c, 0xcf, 0xb5, 0x78, 0x07, 0x2b,
- 0x01, 0x0d, 0x18, 0xcd, 0x46, 0x10, 0x6d, 0x01, 0x36, 0x3e, 0x50, 0x44,
- 0x2c, 0x46, 0x7f, 0x60, 0x40, 0x0e, 0xfa, 0xb8, 0x31, 0xd0, 0x05, 0x20,
- 0xe6, 0xdd, 0x0a, 0xd1, 0x0b, 0x62, 0x87, 0x08, 0x16, 0x06, 0xdb, 0x9e,
- 0xf7, 0x31, 0x3e, 0x4c, 0x73, 0xb0, 0x66, 0x46, 0x1a, 0x45, 0x9c, 0x39,
- 0x2b, 0x46, 0x8e, 0x9b, 0x17, 0x72, 0xca, 0x47, 0x51, 0x19, 0x5b, 0xdf,
- 0x51, 0x0c, 0x1a, 0x5c, 0x54, 0x1f, 0x2f, 0x17, 0xd0, 0x3b, 0xe2, 0x07,
- 0x49, 0x6f, 0xf0, 0x3e, 0x39, 0xe8, 0xfd, 0x81, 0x17, 0xa2, 0xe7, 0x9f,
- 0xfb, 0x15, 0x79, 0xc6, 0x6d, 0x3e, 0x94, 0x75, 0x59, 0xb7, 0x5e, 0xe6,
- 0xa5, 0x28, 0x87, 0x0f, 0xa5, 0xdb, 0x5e, 0x11, 0x70, 0x70, 0xf2, 0xae,
- 0x2b, 0xff, 0x23, 0x89, 0xab, 0x94, 0xa0, 0xc3, 0xf9, 0x30, 0x76, 0x74,
- 0x0d, 0xca, 0x67, 0x81, 0x42, 0xe0, 0x87, 0xcc, 0xde, 0x07, 0x3c, 0xac,
- 0x2e, 0x1d, 0x77, 0x75, 0x02, 0xae, 0x97, 0x7f, 0x8b, 0x84, 0x73, 0xf6,
- 0x1e, 0x82, 0xb6, 0x3e, 0x64, 0x9d, 0x23, 0xa4, 0x55, 0xce, 0xbd, 0xd5,
- 0xd4, 0x5b, 0x3f, 0xf3, 0xd6, 0xdc, 0x86, 0x5e, 0x14, 0xd3, 0x41, 0xa3,
- 0x91, 0xeb, 0x29, 0x1e, 0x3f, 0xc3, 0x2e, 0x04, 0x48, 0xf6, 0x67, 0x01,
- 0xe1, 0x95, 0x7f, 0xe2, 0xb5, 0xa9, 0xdb, 0x3c, 0xb5, 0x57, 0x8b, 0xfb,
- 0x10, 0xcf, 0x67, 0x82, 0x0f, 0xf1, 0x97, 0x92, 0x55, 0x11, 0x0a, 0x06,
- 0x94, 0x88, 0x94, 0xa2, 0xbd, 0x1b, 0x8d, 0xc2, 0x14, 0xdc, 0xc2, 0xa8,
- 0x6d, 0xe5, 0x75, 0x91, 0xff, 0x1d, 0xe0, 0x0b, 0x14, 0xce, 0xe9, 0xa6,
- 0xcf, 0xb5, 0x92, 0xa0, 0x13, 0x2f, 0x54, 0x49, 0x21, 0xe4, 0xf0, 0x14,
- 0x20, 0x09, 0x08, 0xb2, 0x89, 0x32, 0x59, 0x08, 0xa1, 0x45, 0xe6, 0x91,
- 0xd9, 0xc5, 0x99, 0x66, 0x42, 0xb4, 0x54, 0x9b, 0x9b, 0xc7, 0x1f, 0x0e,
- 0x16, 0x57, 0x77, 0x85, 0x80, 0x2b, 0xac, 0x40, 0xc3, 0xcf, 0x92, 0xdf,
- 0x90, 0xb4, 0x0c, 0xfa, 0xa8, 0x5f, 0x9f, 0xb2, 0x1c, 0xc7, 0x17, 0xc9,
- 0x3e, 0x19, 0x1d, 0x85, 0x8e, 0x86, 0x2f, 0x2f, 0x3c, 0x7c, 0x02, 0x05,
- 0x2f, 0xcd, 0x9a, 0x28, 0x58, 0x3d, 0xcf, 0x31, 0xcb, 0xdb, 0x47, 0xe1,
- 0x38, 0x99, 0x86, 0x9a, 0x98, 0x10, 0x8a, 0x40, 0x38, 0x59, 0x17, 0xf0,
- 0x23, 0xb0, 0x9b, 0xc8, 0xc1, 0xa9, 0xd0, 0xbb, 0xe2, 0x69, 0x04, 0x1c,
- 0x3d, 0x93, 0x1d, 0x66, 0x0c, 0xb8, 0x64, 0x2b, 0x0d, 0x44, 0x7b, 0xa3,
- 0x03, 0x1b, 0xe5, 0x4b, 0x5b, 0x10, 0xa1, 0x01, 0xd9, 0x25, 0x70, 0xbc,
- 0x49, 0xb5, 0x49, 0x06, 0xda, 0x61, 0x34, 0x40, 0x14, 0x3c, 0xa8, 0xdb,
- 0x50, 0xa7, 0xa6, 0xf9, 0x35, 0x55, 0x82, 0xe8, 0xae, 0xe8, 0x6e, 0x2d,
- 0x07, 0x83, 0x6c, 0xbb, 0xc8, 0xc1, 0x73, 0xf1, 0x7e, 0x5a, 0x72, 0x1f,
- 0x87, 0x73, 0x8e, 0x02, 0x67, 0xa1, 0x84, 0x0f, 0x21, 0x17, 0xed, 0x65,
- 0xb1, 0x34, 0xda, 0x2a, 0x01, 0x24, 0x72, 0xd9, 0x82, 0xdd, 0x2b, 0x7d,
- 0x92, 0x3e, 0x2c, 0x72, 0xc5, 0x87, 0x31, 0x58, 0xa8, 0x94, 0xed, 0x0e,
- 0xf6, 0x5e, 0x1a, 0x59, 0x41, 0x8d, 0xfd, 0x07, 0x64, 0xba, 0xff, 0xa6,
- 0x54, 0xf7, 0x3f, 0x36, 0xd3, 0xdd, 0xdd, 0x14, 0x74, 0xeb, 0x84, 0xf7,
- 0x04, 0xe2, 0x27, 0x64, 0xac, 0x72, 0x82, 0xc8, 0x5d, 0x6a, 0xe1, 0xf9,
- 0xf9, 0xb5, 0x6e, 0xca, 0x62, 0xf4, 0x30, 0xf5, 0x13, 0x8f, 0x91, 0xc6,
- 0x4f, 0x29, 0x51, 0x19, 0xb9, 0x25, 0x52, 0x63, 0x7b, 0x05, 0x8e, 0x45,
- 0x46, 0x35, 0xab, 0xd3, 0x4c, 0x30, 0x68, 0xfe, 0xdd, 0xc1, 0xe3, 0xff,
- 0xd1, 0x6a, 0xfa, 0x9e, 0x91, 0xcd, 0x2f, 0xbd, 0xfb, 0xf8, 0xcb, 0x07,
- 0x2f, 0x64, 0x9c, 0x33, 0x7a, 0xcd, 0x41, 0xbc, 0x79, 0xf2, 0xce, 0x81,
- 0xbd, 0xd4, 0x31, 0x5c, 0x3a, 0xdb, 0x8c, 0x08, 0x3b, 0x2b, 0xde, 0x28,
- 0x67, 0x88, 0xde, 0x5f, 0x21, 0xe0, 0x32, 0x8d, 0x48, 0x29, 0x84, 0xb8,
- 0x91, 0xe8, 0xe3, 0xac, 0xb9, 0xcb, 0x32, 0xb1, 0x86, 0x74, 0x22, 0x3d,
- 0x29, 0x20, 0x53, 0xb4, 0x32, 0x13, 0xa0, 0xcf, 0x09, 0x42, 0x24, 0x50,
- 0x18, 0xa8, 0xd2, 0x5a, 0x8c, 0x1a, 0xed, 0x0a, 0x4e, 0x5f, 0x12, 0xe3,
- 0xbb, 0x70, 0xc1, 0xbb, 0xd6, 0xdc, 0x68, 0x96, 0x62, 0xab, 0x22, 0x41,
- 0x13, 0x3a, 0xe4, 0x41, 0xdf, 0xfb, 0x69, 0x8f, 0xb1, 0x1c, 0xdb, 0x68,
- 0x85, 0x3d, 0x85, 0x0c, 0xbc, 0x21, 0xea, 0xf2, 0x7b, 0x9a, 0x56, 0x3f,
- 0x0c, 0xe6, 0xe0, 0x76, 0x8c, 0x14, 0x59, 0x6a, 0x43, 0x72, 0x8b, 0x92,
- 0x47, 0x8d, 0x27, 0x02, 0x5e, 0x98, 0xb6, 0x00, 0x6a, 0xdd, 0x0a, 0xab,
- 0xca, 0x2e, 0x68, 0x94, 0xf3, 0x8c, 0x52, 0xc4, 0xe4, 0xb0, 0xe6, 0x8a,
- 0xe5, 0x40, 0x9f, 0x1a, 0x20, 0x9a, 0xe8, 0x24, 0x25, 0x5b, 0xd2, 0xd1,
- 0xc1, 0xa6, 0x0b, 0xf3, 0x25, 0x0a, 0xd0, 0x00, 0xa7, 0x71, 0xea, 0x49,
- 0x3b, 0x6f, 0xf0, 0x76, 0x99, 0x5c, 0xed, 0x12, 0xae, 0xec, 0x58, 0x98,
- 0xaa, 0x8b, 0xe6, 0x25, 0x41, 0x63, 0x96, 0x4b, 0x92, 0xa7, 0x2c, 0x0e,
- 0x02, 0x8d, 0x53, 0x8a, 0xbf, 0x9b, 0x76, 0x65, 0x1c, 0xcf, 0x48, 0x50,
- 0xbf, 0x0a, 0xde, 0x37, 0x5d, 0x81, 0x1d, 0x72, 0x11, 0x5f, 0x32, 0x2c,
- 0x18, 0xea, 0x4a, 0xf8, 0xfb, 0x2e, 0xaa, 0x2a, 0x49, 0x54, 0xca, 0x3e,
- 0xc5, 0x59, 0x48, 0xd4, 0xbe, 0xd0, 0x49, 0x46, 0x70, 0x35, 0x04, 0x44,
- 0x45, 0x5f, 0x11, 0x28, 0x51, 0xf9, 0x80, 0xa5, 0xe9, 0x5b, 0x15, 0x1a,
- 0x8a, 0x05, 0xd1, 0x5b, 0xc2, 0x41, 0x9c, 0xbf, 0x91, 0xe0, 0xc8, 0xd6,
- 0x88, 0x38, 0x19, 0x46, 0x47, 0xe7, 0xdb, 0xc9, 0x79, 0x07, 0x21, 0x03,
- 0xb5, 0x15, 0x74, 0x67, 0xfb, 0xe2, 0x5e, 0x78, 0x91, 0x18, 0x29, 0x6e,
- 0x35, 0x9a, 0x82, 0xe2, 0x73, 0x5a, 0x4c, 0x44, 0xc4, 0xde, 0x7e, 0x77,
- 0xf9, 0xd7, 0x19, 0xcb, 0x21, 0x90, 0x51, 0x18, 0x2c, 0x41, 0xbc, 0x8d,
- 0xbe, 0x34, 0x30, 0xf6, 0x5c, 0x49, 0x15, 0x43, 0x4c, 0x44, 0x22, 0x5e,
- 0x51, 0xc5, 0x85, 0x98, 0x05, 0xb9, 0x66, 0xec, 0xe2, 0xd6, 0xbc, 0x5f,
- 0x0f, 0x16, 0x46, 0x28, 0xc1, 0x6a, 0xbe, 0xfd, 0x3a, 0x4c, 0x52, 0x34,
- 0x8a, 0xeb, 0xac, 0x08, 0x19, 0x00, 0xf0, 0x51, 0xd2, 0x17, 0xa4, 0x42,
- 0x75, 0x3a, 0xec, 0xa2, 0xd0, 0x7a, 0x5e, 0x5b, 0xe9, 0x9c, 0xcf, 0xb2,
- 0xb5, 0x02, 0xa9, 0x0e, 0xf6, 0xe7, 0x18, 0x95, 0x4c, 0x1f, 0x49, 0xf4,
- 0x5e, 0x93, 0xa7, 0xbc, 0xc1, 0x55, 0xba, 0xb8, 0xa7, 0xe9, 0x30, 0x0f,
- 0xd6, 0xf5, 0xcd, 0xbe, 0x11, 0x50, 0xfb, 0xc3, 0xcf, 0x61, 0x09, 0x19,
- 0x9d, 0x20, 0x02, 0x6b, 0xc9, 0xf1, 0x7b, 0x61, 0x0e, 0xec, 0xb4, 0x26,
- 0xca, 0xfe, 0xd0, 0xd9, 0x17, 0x83, 0xff, 0x41, 0x3b, 0xed, 0x6f, 0xcb,
- 0x30, 0x80, 0xb2, 0x85, 0x0d, 0xf5, 0x86, 0xe9, 0x60, 0x89, 0x94, 0x80,
- 0x02, 0xbd, 0xe3, 0xbc, 0x01, 0xba, 0xb4, 0xc2, 0x28, 0xb5, 0x8f, 0x25,
- 0xbd, 0xc1, 0x3c, 0x61, 0x6f, 0x82, 0x0c, 0x0b, 0xe1, 0x97, 0x4f, 0x92,
- 0xff, 0x41, 0xdf, 0xd2, 0x06, 0xb8, 0xc4, 0x02, 0xe1, 0xe8, 0xaf, 0x8f,
- 0xdf, 0x9c, 0x5d, 0x1c, 0xb7, 0xcb, 0xae, 0x1a, 0x10, 0xe1, 0x20, 0xda,
- 0xda, 0xed, 0x1d, 0xd0, 0xa1, 0xb8, 0x08, 0x98, 0x5e, 0xc9, 0x8b, 0x9c,
- 0x32, 0x65, 0x93, 0xf3, 0x1f, 0x5e, 0xdb, 0xce, 0x91, 0x26, 0x52, 0x70,
- 0xa7, 0x1c, 0xc3, 0xb9, 0xcc, 0x73, 0x57, 0x83, 0x20, 0x65, 0x63, 0x7b,
- 0x48, 0xe2, 0x80, 0x23, 0xc9, 0xda, 0x3d, 0xc4, 0xb8, 0x39, 0x33, 0x41,
- 0x2b, 0x8e, 0x81, 0x45, 0x5c, 0xd7, 0x54, 0x41, 0x6c, 0x9b, 0x0d, 0xd4,
- 0x6b, 0x28, 0x18, 0xc0, 0xe1, 0x11, 0x9b, 0x97, 0x10, 0x98, 0x08, 0x94,
- 0x69, 0x98, 0xd8, 0x8f, 0xb8, 0xaf, 0x70, 0x45, 0x18, 0xd4, 0x17, 0x7c,
- 0x25, 0x96, 0x4c, 0x41, 0x4c, 0xc4, 0xec, 0x89, 0xe6, 0x4b, 0x95, 0x90,
- 0xf4, 0x41, 0x9a, 0xaa, 0x1c, 0x30, 0x7d, 0x46, 0xcc, 0x12, 0x7f, 0xbb,
- 0x3f, 0x8f, 0x91, 0x10, 0xa5, 0xf9, 0xec, 0x56, 0xbd, 0xdd, 0xf7, 0x7a,
- 0x6a, 0xa7, 0x4d, 0x3a, 0xbc, 0xf9, 0xef, 0x9b, 0x89, 0x64, 0xe4, 0x43,
- 0xe0, 0xf1, 0x55, 0xbf, 0x82, 0xfb, 0xcd, 0x51, 0x01, 0x6d, 0x3f, 0x94,
- 0x40, 0xa3, 0x83, 0x5e, 0x6d, 0xa3, 0x49, 0xf4, 0x44, 0xb2, 0x2a, 0x40,
- 0xca, 0xb7, 0x64, 0xec, 0x3f, 0x88, 0x0e, 0xb9, 0xb5, 0xb5, 0x9d, 0xbe,
- 0xe0, 0xe1, 0x86, 0x9e, 0xa6, 0xca, 0xe7, 0x6b, 0x51, 0x81, 0x83, 0x88,
- 0x85, 0x22, 0xbf, 0xc3, 0x17, 0xcc, 0xac, 0x2b, 0xf7, 0x45, 0x43, 0x07,
- 0x95, 0x65, 0xca, 0xa4, 0xac, 0x62, 0x98, 0x00, 0x4c, 0x7c, 0xe3, 0xed,
- 0xdd, 0x1a, 0x25, 0xf3, 0x2f, 0x9e, 0xbd, 0x20, 0x1d, 0x02, 0x49, 0x22,
- 0x66, 0x77, 0xd1, 0x33, 0x82, 0x94, 0x8a, 0x00, 0x16, 0xf7, 0x39, 0x0a,
- 0xb3, 0x21, 0xed, 0x08, 0xa5, 0xe9, 0x38, 0x9b, 0x31, 0x25, 0xcf, 0xc8,
- 0x6b, 0x62, 0xad, 0x61, 0xb9, 0x3a, 0x03, 0x7b, 0xc8, 0xba, 0x89, 0x59,
- 0x82, 0xf4, 0xa3, 0x2b, 0xfc, 0x4e, 0x56, 0x9d, 0xcb, 0xbe, 0xdd, 0xb3,
- 0x0a, 0xcd, 0xc0, 0x7b, 0xc1, 0x42, 0xcb, 0x1b, 0xb9, 0x9d, 0x55, 0x79,
- 0xfd, 0x31, 0xd9, 0xfa, 0xb7, 0x6d, 0x4b, 0x87, 0x1c, 0xc9, 0x75, 0x25,
- 0x77, 0x64, 0x5e, 0x2c, 0xb3, 0x16, 0x55, 0xb6, 0xb6, 0x76, 0x05, 0x5f,
- 0x39, 0x41, 0x72, 0xc6, 0x4a, 0x96, 0x88, 0xaa, 0x74, 0x11, 0xf0, 0x6b,
- 0x48, 0xb9, 0xb9, 0x6c, 0x82, 0xf0, 0xca, 0xc4, 0x8a, 0x00, 0x7d, 0x56,
- 0xbc, 0x83, 0xaa, 0x3b, 0x0d, 0x93, 0xf7, 0x05, 0x94, 0x1b, 0xd9, 0x98,
- 0x72, 0x91, 0xe4, 0x85, 0x19, 0x88, 0x19, 0xab, 0xb9, 0x4a, 0x22, 0x52,
- 0xea, 0x6f, 0x6d, 0xe1, 0x24, 0x52, 0xb4, 0x13, 0xc2, 0xc2, 0xb1, 0x56,
- 0x0a, 0x1a, 0x2b, 0xd7, 0x92, 0x37, 0x21, 0x19, 0x15, 0x93, 0xe9, 0x08,
- 0x6d, 0x3b, 0xda, 0xa6, 0x20, 0x65, 0x36, 0x9b, 0x0d, 0x18, 0xad, 0x98,
- 0xb0, 0x5b, 0xc9, 0xc8, 0xe0, 0x6a, 0x50, 0xa4, 0x18, 0xf9, 0x06, 0x58,
- 0x70, 0xf5, 0xa0, 0xa8, 0x15, 0xd0, 0x80, 0x0a, 0xab, 0x20, 0xc5, 0x32,
- 0x1a, 0xfa, 0xa0, 0xe2, 0x27, 0xe7, 0x94, 0xc1, 0xe4, 0xf0, 0x90, 0x56,
- 0xd1, 0xc7, 0x84, 0xf8, 0x7f, 0x93, 0x9b, 0xeb, 0x6a, 0xc1, 0x14, 0x56,
- 0x31, 0x7e, 0x2d, 0x5f, 0xfb, 0xe7, 0x47, 0x75, 0x75, 0xeb, 0xac, 0xe1,
- 0xce, 0xf0, 0xbb, 0x27, 0xaf, 0x5b, 0x74, 0xb8, 0x34, 0x15, 0x64, 0x82,
- 0xc6, 0x9b, 0x73, 0x64, 0xbc, 0x74, 0x60, 0xdd, 0xc5, 0x62, 0x9b, 0x72,
- 0xa6, 0xce, 0x58, 0x41, 0x66, 0xf1, 0xbb, 0x78, 0x73, 0xd2, 0x0a, 0x2b,
- 0xb3, 0xdc, 0x86, 0x36, 0x8c, 0xad, 0xa2, 0x64, 0xcd, 0xb4, 0x19, 0x88,
- 0x95, 0x5d, 0x3f, 0x13, 0xa6, 0xb1, 0xdd, 0xcc, 0xcb, 0x29, 0x55, 0xdd,
- 0x64, 0x0f, 0xcf, 0x05, 0x3d, 0xe9, 0x0e, 0x8e, 0x14, 0x2c, 0xd5, 0x16,
- 0xbb, 0xd0, 0x0c, 0x0e, 0xed, 0x8c, 0x29, 0xc8, 0xcb, 0x33, 0x13, 0x6f,
- 0xce, 0x0d, 0x55, 0x29, 0xe5, 0xe4, 0x4d, 0x7f, 0x08, 0x45, 0x52, 0x4e,
- 0x1a, 0x6f, 0x04, 0xf4, 0x40, 0xbc, 0x39, 0x96, 0xbc, 0x91, 0x91, 0x51,
- 0x09, 0x0b, 0x2c, 0xdb, 0xf5, 0x23, 0xe3, 0x07, 0x83, 0x45, 0x36, 0x3f,
- 0x74, 0x20, 0x8f, 0xad, 0x15, 0x5e, 0x3d, 0xb2, 0xd8, 0x0a, 0xa3, 0x07,
- 0xdd, 0x05, 0x66, 0x56, 0x1b, 0x80, 0xcf, 0xd2, 0xe3, 0x83, 0x78, 0x73,
- 0x76, 0x85, 0x05, 0x55, 0x76, 0xcd, 0x02, 0xcb, 0x57, 0x82, 0x59, 0x98,
- 0x19, 0x11, 0x69, 0x54, 0xe0, 0x49, 0xf6, 0x81, 0xb9, 0x1d, 0xd3, 0xea,
- 0x3a, 0x6b, 0x3e, 0xac, 0x9f, 0x90, 0x99, 0x54, 0x8d, 0xdf, 0xcf, 0xc1,
- 0x09, 0x6b, 0x85, 0x85, 0x00, 0x39, 0xa6, 0x52, 0x45, 0x6d, 0x34, 0x40,
- 0xfc, 0x9e, 0x09, 0x2a, 0x56, 0x6c, 0x7b, 0xf7, 0xbd, 0x44, 0x21, 0x43,
- 0xcc, 0x7d, 0x9a, 0x17, 0x0a, 0xd6, 0x21, 0x32, 0xc6, 0xeb, 0x62, 0x12,
- 0x43, 0x98, 0x59, 0x17, 0x5c, 0x99, 0x7f, 0xa4, 0x22, 0x18, 0xab, 0x25,
- 0x7c, 0x88, 0xa0, 0xf0, 0xfb, 0xfb, 0x98, 0x1f, 0xd7, 0xe5, 0xe6, 0x31,
- 0x49, 0x95, 0x97, 0xa5, 0x0e, 0xf4, 0x57, 0x3a, 0x09, 0xe1, 0x73, 0xbc,
- 0x1b, 0x53, 0x3f, 0x68, 0x4f, 0x64, 0xb7, 0x77, 0x8b, 0xbb, 0xa9, 0x75,
- 0x08, 0x99, 0xbf, 0xea, 0x77, 0xf5, 0xee, 0x07, 0x4a, 0xbb, 0x72, 0x73,
- 0x52, 0x8a, 0x09, 0x37, 0x76, 0xa5, 0x50, 0xb3, 0x2b, 0x3f, 0x6d, 0x54,
- 0xa9, 0x40, 0x41, 0x0a, 0x3e, 0x5e, 0x65, 0x9c, 0x99, 0x88, 0xe9, 0x95,
- 0xc5, 0x58, 0x3d, 0x35, 0xf2, 0xb4, 0xeb, 0x22, 0x4b, 0x77, 0x9f, 0x47,
- 0x3c, 0x9c, 0xa2, 0xd5, 0xe2, 0x4e, 0xbe, 0xda, 0x39, 0x0e, 0xd3, 0x8c,
- 0xfc, 0xc3, 0xb2, 0x11, 0x28, 0xa5, 0x86, 0x1b, 0x52, 0xa9, 0xb7, 0x6e,
- 0x1b, 0xad, 0x9c, 0xe3, 0x6a, 0xfe, 0xc0, 0x11, 0x37, 0x0f, 0xb8, 0x51,
- 0x31, 0xde, 0x80, 0x1d, 0x55, 0x70, 0x2e, 0xe5, 0x10, 0xaf, 0x98, 0xf9,
- 0x55, 0x3d, 0x68, 0xed, 0xc1, 0x75, 0x3d, 0xf1, 0x77, 0x9f, 0xdf, 0x19,
- 0x37, 0xb5, 0x46, 0xd7, 0x6b, 0xe8, 0x0f, 0xdb, 0xb3, 0x78, 0x73, 0x76,
- 0x7b, 0xea, 0x7b, 0x32, 0x3d, 0x7d, 0xcf, 0x87, 0xca, 0x90, 0xfd, 0xc6,
- 0xae, 0x0c, 0xf7, 0x86, 0x1e, 0xef, 0x5f, 0x25, 0x1e, 0xc8, 0x80, 0x9f,
- 0x15, 0xbe, 0xc9, 0x4e, 0x5f, 0x34, 0x37, 0xef, 0x9a, 0x62, 0x03, 0x2f,
- 0xbe, 0x6a, 0x17, 0x9c, 0x79, 0x1f, 0x11, 0x25, 0x44, 0xca, 0x14, 0x52,
- 0x09, 0xc1, 0xf8, 0x22, 0x5a, 0x2c, 0x60, 0xb1, 0xa6, 0x84, 0xa5, 0x1f,
- 0x66, 0x36, 0xf3, 0x27, 0x39, 0xaf, 0x06, 0x93, 0x0a, 0x74, 0x08, 0x51,
- 0x42, 0x94, 0x55, 0xb2, 0xce, 0xc4, 0x8c, 0xd0, 0xc7, 0x13, 0x86, 0xe7,
- 0x0f, 0xd9, 0x34, 0x3b, 0x29, 0x4e, 0xa4, 0x7e, 0x74, 0x70, 0x6d, 0xb3,
- 0xeb, 0xa9, 0x4f, 0x4d, 0xeb, 0x0d, 0xbf, 0xea, 0xf3, 0x14, 0x5c, 0x9b,
- 0xc1, 0xe3, 0x8f, 0x68, 0x1a, 0x7f, 0xa2, 0x96, 0x26, 0xea, 0xc8, 0xb7,
- 0x93, 0x8b, 0x8c, 0xca, 0x56, 0x6f, 0x49, 0x94, 0x8e, 0xef, 0xcd, 0xb9,
- 0xe7, 0x06, 0xb6, 0xf2, 0xa1, 0xb9, 0x0c, 0x39, 0x6d, 0x9b, 0x14, 0x24,
- 0x82, 0xbe, 0x0e, 0x34, 0x1a, 0xb3, 0x35, 0xb6, 0xd9, 0xd6, 0x17, 0xc7,
- 0xdf, 0xce, 0xde, 0x70, 0xaf, 0xcf, 0x14, 0xa5, 0x95, 0x28, 0x8b, 0x9a,
- 0x9c, 0x45, 0x86, 0x6a, 0x6a, 0x31, 0x77, 0xe9, 0xd3, 0x5d, 0x47, 0xc4,
- 0x05, 0x7d, 0xb8, 0x0e, 0xdd, 0xd3, 0x70, 0x71, 0x3b, 0x8b, 0xe6, 0x2e,
- 0xbd, 0x0f, 0xd5, 0xf4, 0xdd, 0xc1, 0xd3, 0x17, 0x2f, 0x5a, 0xf7, 0x79,
- 0xed, 0x01, 0x16, 0x3f, 0xdb, 0xdd, 0xc5, 0xd8, 0x82, 0xaa, 0x55, 0xf3,
- 0x8b, 0xc1, 0x0b, 0xbc, 0xd8, 0x7e, 0xad, 0xce, 0xcc, 0x12, 0x4c, 0x57,
- 0xbf, 0x37, 0xa0, 0xdf, 0x44, 0x3e, 0x07, 0x87, 0xcb, 0xca, 0xb7, 0x5e,
- 0xd0, 0xe7, 0x22, 0x6f, 0xe1, 0x61, 0x9e, 0xc7, 0xf2, 0xea, 0x8a, 0x5c,
- 0x5d, 0xf4, 0xa4, 0xe2, 0x8f, 0xdc, 0xa5, 0xd5, 0x34, 0x1c, 0xee, 0x6e,
- 0x7f, 0xb0, 0xb7, 0x6a, 0xb8, 0x40, 0x5c, 0x46, 0x8a, 0x12, 0xad, 0x27,
- 0x59, 0x92, 0xc6, 0x8c, 0xe0, 0x12, 0x8e, 0x6e, 0x43, 0x7b, 0xa6, 0x47,
- 0x7b, 0x2f, 0x5e, 0xf4, 0xa9, 0x67, 0xcf, 0x5e, 0xbc, 0x58, 0x59, 0xb2,
- 0xeb, 0x7d, 0xe6, 0xae, 0x74, 0xfe, 0x29, 0x7a, 0xdd, 0x6d, 0x9a, 0x9a,
- 0xac, 0x95, 0xf8, 0x77, 0xe8, 0x37, 0xc9, 0xab, 0xe4, 0xdd, 0xd9, 0xe5,
- 0xb1, 0xe7, 0xba, 0x71, 0xae, 0x59, 0x1f, 0x0f, 0x15, 0xb1, 0xe0, 0x05,
- 0x48, 0x73, 0x60, 0x1a, 0x1b, 0x53, 0x2b, 0xb4, 0x36, 0x51, 0x4e, 0xa0,
- 0x4e, 0xc3, 0x7f, 0xe9, 0x7e, 0xee, 0xac, 0x00, 0x33, 0xce, 0x75, 0xde,
- 0xf8, 0xf0, 0x34, 0x5b, 0x66, 0xb1, 0xb7, 0xe1, 0x02, 0xe1, 0x34, 0x24,
- 0x09, 0xea, 0x6c, 0xd6, 0x94, 0x7f, 0xcf, 0xa9, 0x8a, 0xf4, 0x8f, 0x72,
- 0xb1, 0x19, 0xa4, 0xc0, 0x67, 0x33, 0xf2, 0x1b, 0xc8, 0x4d, 0xc8, 0x2f,
- 0x0c, 0xf0, 0xa4, 0x1c, 0x17, 0x18, 0xb4, 0x4c, 0xc8, 0x9b, 0xc2, 0xb1,
- 0xec, 0x7f, 0x3c, 0x12, 0xd7, 0x81, 0xbf, 0x0b, 0x99, 0xb7, 0x5a, 0x3b,
- 0x43, 0xcd, 0xf8, 0xb0, 0xb0, 0x9b, 0xb5, 0xf3, 0x89, 0x5a, 0xf7, 0x5d,
- 0x41, 0xeb, 0x10, 0xe0, 0xae, 0x71, 0x30, 0x61, 0x9a, 0x2d, 0x34, 0xe9,
- 0xaf, 0x68, 0xb7, 0x63, 0xf6, 0xf2, 0x55, 0x7e, 0xbd, 0xac, 0xe2, 0x09,
- 0x72, 0x20, 0x67, 0x92, 0x4a, 0x0e, 0x85, 0xe7, 0x4e, 0xef, 0xd2, 0x2a,
- 0x53, 0x36, 0xa9, 0xe2, 0xde, 0x9e, 0x6d, 0x35, 0x93, 0xb5, 0x62, 0x83,
- 0xb0, 0xd3, 0x03, 0x53, 0x9b, 0x8a, 0x6c, 0x8c, 0x1e, 0x43, 0x4e, 0x04,
- 0xc9, 0x27, 0x11, 0x8c, 0xf0, 0xb4, 0x71, 0x35, 0x33, 0x9e, 0x9b, 0xfd,
- 0x1a, 0xe4, 0xa5, 0x89, 0x4c, 0x41, 0x98, 0x96, 0xb6, 0x39, 0x73, 0x31,
- 0x04, 0x7a, 0x16, 0xee, 0x98, 0x9b, 0xd2, 0xc3, 0xe3, 0x0f, 0xcb, 0xea,
- 0x49, 0xf2, 0x60, 0x3d, 0x59, 0x08, 0xf1, 0x22, 0x99, 0xe7, 0xef, 0x8a,
- 0x59, 0x99, 0x4e, 0x6b, 0x61, 0x0a, 0x97, 0xd0, 0x3e, 0x26, 0x8b, 0xa1,
- 0x95, 0x64, 0x69, 0x03, 0xd7, 0x3e, 0xad, 0x34, 0xaf, 0x71, 0xb2, 0xa5,
- 0xac, 0xd6, 0xba, 0x43, 0x3d, 0x2f, 0x09, 0x4b, 0x29, 0xda, 0x29, 0x0c,
- 0x61, 0x40, 0xe4, 0xc3, 0xa1, 0xd9, 0x4b, 0xfb, 0x9d, 0x57, 0xcb, 0x02,
- 0xca, 0x83, 0x9c, 0x8e, 0x2e, 0x49, 0xea, 0xae, 0x5e, 0xc8, 0xa3, 0x93,
- 0xff, 0xe7, 0xf8, 0x8f, 0x8c, 0x7e, 0x55, 0xe9, 0x9d, 0x2d, 0xed, 0xfa,
- 0x81, 0x81, 0xf9, 0x24, 0x2a, 0x65, 0xb1, 0x04, 0xd2, 0x99, 0xd8, 0xf0,
- 0xc4, 0xe2, 0x8d, 0xdb, 0x03, 0xe1, 0x4d, 0xe1, 0x9e, 0x34, 0x1b, 0x2b,
- 0xdc, 0xdb, 0x54, 0x81, 0xe5, 0x10, 0x9a, 0x38, 0x5b, 0x18, 0x35, 0x39,
- 0xec, 0x24, 0xe4, 0x75, 0x64, 0x02, 0x71, 0x98, 0xf6, 0xe4, 0x0d, 0x66,
- 0xd8, 0x9c, 0x08, 0xad, 0x1c, 0x90, 0xdf, 0xa8, 0x53, 0xa6, 0xaf, 0x0f,
- 0x90, 0x7f, 0xf9, 0xb5, 0xd0, 0x19, 0xe3, 0xa4, 0x53, 0x98, 0xac, 0x4a,
- 0x5e, 0xbe, 0xbf, 0x38, 0x5d, 0x51, 0xd0, 0x36, 0xc2, 0x1a, 0xd0, 0x64,
- 0xf5, 0x2e, 0x32, 0xa0, 0x36, 0x55, 0xc9, 0x79, 0x7a, 0x9d, 0xf5, 0x7c,
- 0xa0, 0xac, 0x16, 0x52, 0x9e, 0x38, 0x20, 0x62, 0x5e, 0x22, 0x1f, 0xdf,
- 0x9e, 0x84, 0xb8, 0x0b, 0x4f, 0xfb, 0x65, 0x68, 0x57, 0xb3, 0x54, 0xe6,
- 0x6e, 0x59, 0x81, 0xbc, 0xfe, 0x87, 0x28, 0x47, 0x8c, 0x3a, 0x83, 0xba,
- 0x10, 0x87, 0xc2, 0x45, 0x83, 0xc2, 0x99, 0x74, 0x41, 0x7b, 0x28, 0xe9,
- 0x7d, 0x41, 0x2e, 0xfa, 0x9e, 0x76, 0x73, 0x90, 0x85, 0xc1, 0x3e, 0x9d,
- 0x0a, 0x0a, 0x50, 0xfb, 0xee, 0xa4, 0x8e, 0x73, 0x9f, 0xa3, 0x2c, 0x1c,
- 0xe5, 0xca, 0x08, 0x77, 0xb4, 0x46, 0x4c, 0x3b, 0xe0, 0xe4, 0xa1, 0x30,
- 0x1c, 0x81, 0xcb, 0x31, 0xde, 0x24, 0x65, 0xbe, 0x24, 0xa7, 0xd2, 0xbf,
- 0x03, 0x89, 0xc6, 0xb0, 0x2e, 0xa4, 0x5d, 0x6b, 0x65, 0x28, 0xc5, 0x06,
- 0x9b, 0xce, 0x88, 0x79, 0xc2, 0xba, 0xb1, 0x68, 0x8c, 0xd3, 0x92, 0xd8,
- 0x0a, 0xa8, 0x4b, 0x69, 0x61, 0x1d, 0xce, 0xad, 0x95, 0xfd, 0xc3, 0x21,
- 0xdd, 0x5c, 0x84, 0xe8, 0xb0, 0x2f, 0x74, 0x2a, 0x03, 0xb3, 0x3b, 0x0a,
- 0xa9, 0x54, 0xf6, 0x96, 0xd5, 0xdb, 0x7b, 0xff, 0xe9, 0x61, 0xf4, 0x7b,
- 0x28, 0xfb, 0x2b, 0x90, 0x41, 0xbd, 0xee, 0x36, 0x28, 0x24, 0xc0, 0x12,
- 0x06, 0x38, 0xff, 0xae, 0xa6, 0x51, 0x2e, 0xcb, 0xa8, 0x5f, 0x71, 0xe0,
- 0x95, 0x1c, 0x1c, 0x71, 0x71, 0xdd, 0xe0, 0x75, 0x6e, 0x2e, 0x91, 0x3a,
- 0x17, 0xda, 0x66, 0xa3, 0x37, 0x32, 0xbf, 0x8c, 0x1e, 0x44, 0x2e, 0xb2,
- 0x1c, 0x84, 0x28, 0x66, 0x13, 0xc9, 0xbc, 0xb7, 0xaf, 0xd8, 0x98, 0x8e,
- 0xd9, 0x11, 0xab, 0x40, 0x0a, 0x15, 0xd1, 0xdc, 0x6a, 0x0b, 0xa9, 0x73,
- 0x56, 0x08, 0xd7, 0xb2, 0x40, 0xbf, 0x0b, 0x00, 0x03, 0x05, 0x23, 0x23,
- 0xb3, 0x63, 0x91, 0x5b, 0x90, 0xc1, 0x53, 0x27, 0x36, 0x81, 0x59, 0xe8,
- 0x4e, 0x02, 0x63, 0xd3, 0x12, 0xcd, 0x72, 0xd2, 0x49, 0x37, 0x4e, 0x68,
- 0x3a, 0x65, 0x19, 0x27, 0x38, 0xb8, 0xc2, 0x68, 0x63, 0x5c, 0x3c, 0x38,
- 0x31, 0xcd, 0x0e, 0x3b, 0x43, 0x50, 0xb6, 0x8c, 0xf8, 0x85, 0x7b, 0xdf,
- 0x1a, 0x58, 0x73, 0xa3, 0x21, 0x78, 0x59, 0x26, 0x0a, 0x1e, 0x14, 0xa5,
- 0x60, 0x70, 0xc4, 0x42, 0xf9, 0xc8, 0x22, 0xa2, 0x47, 0xfc, 0x7b, 0x90,
- 0x13, 0x47, 0x92, 0x3f, 0x0f, 0x1c, 0x63, 0xc1, 0xd6, 0x7d, 0x66, 0x34,
- 0x6c, 0x97, 0x7c, 0x02, 0x43, 0x2a, 0x52, 0x9f, 0x97, 0x30, 0x0d, 0x5f,
- 0xdd, 0xaa, 0x1c, 0x80, 0x11, 0xe2, 0x85, 0x1e, 0x79, 0xd2, 0x8d, 0x16,
- 0x40, 0x79, 0x9c, 0xcb, 0x22, 0xfb, 0x44, 0x58, 0xc7, 0xab, 0x9b, 0x0b,
- 0x95, 0xec, 0x1f, 0x0e, 0x2f, 0xde, 0x9d, 0xbc, 0xfb, 0xe6, 0x80, 0x90,
- 0xb8, 0xb2, 0x6a, 0x42, 0x8c, 0xb1, 0xc9, 0x5f, 0x97, 0xd3, 0x7c, 0xc2,
- 0x92, 0x42, 0xc8, 0x38, 0x5b, 0xb5, 0x0b, 0x99, 0x38, 0x58, 0x8d, 0x70,
- 0x09, 0x4a, 0x15, 0x24, 0xf3, 0x94, 0x2a, 0x2f, 0xaa, 0xf2, 0x7a, 0x69,
- 0xa7, 0x7e, 0x02, 0x55, 0x04, 0x71, 0x02, 0xc4, 0x4f, 0x49, 0x1e, 0xf1,
- 0xa6, 0x35, 0xad, 0x93, 0xa2, 0xf0, 0xfa, 0xf4, 0x34, 0x09, 0x21, 0x4b,
- 0x41, 0x63, 0xab, 0xd5, 0x35, 0x9c, 0xb9, 0x84, 0x86, 0xcc, 0xee, 0xaf,
- 0xf3, 0xf1, 0x0c, 0xf6, 0x18, 0x5d, 0xfe, 0x24, 0x6d, 0x5a, 0x52, 0xcf,
- 0x98, 0xae, 0x3f, 0x84, 0xe1, 0x7c, 0x24, 0xc5, 0x22, 0x49, 0x11, 0x2b,
- 0x9c, 0x57, 0x53, 0xd8, 0x42, 0x46, 0x48, 0x96, 0x57, 0x0d, 0xa9, 0x47,
- 0xad, 0x9b, 0xb4, 0x4d, 0xc0, 0xb1, 0x2e, 0x86, 0x70, 0xc3, 0x56, 0x4e,
- 0x0b, 0xda, 0x62, 0x62, 0x39, 0xee, 0xe9, 0xbe, 0x65, 0xbd, 0x10, 0xa4,
- 0x2d, 0xd1, 0xe8, 0xd9, 0x34, 0x4b, 0x2d, 0x0b, 0x6d, 0x4d, 0xd2, 0x32,
- 0x14, 0x17, 0x77, 0x59, 0x25, 0xc6, 0xa7, 0xad, 0xf3, 0x34, 0xc2, 0x6e,
- 0x98, 0x8c, 0x4a, 0xf3, 0x7c, 0xa8, 0x61, 0x59, 0x6a, 0xb3, 0x16, 0x4b,
- 0x32, 0xfa, 0xe3, 0xf2, 0xbb, 0xc0, 0xfa, 0x82, 0xa0, 0x5c, 0x7b, 0xbc,
- 0x11, 0x62, 0x55, 0xda, 0xff, 0xe3, 0xcc, 0x2a, 0x14, 0xf7, 0x1a, 0xfb,
- 0xa1, 0x1d, 0xd2, 0x1b, 0x18, 0x71, 0xda, 0x03, 0x63, 0x15, 0xd1, 0xbd,
- 0x7a, 0x2d, 0x3d, 0x40, 0x5a, 0xe8, 0x27, 0x55, 0x77, 0x07, 0x1c, 0xe5,
- 0x82, 0xf2, 0x38, 0x56, 0x52, 0xb1, 0x3b, 0x3d, 0xcf, 0xa9, 0x50, 0xf2,
- 0xd8, 0x68, 0x2a, 0xd7, 0x51, 0x65, 0xa4, 0x61, 0x06, 0x11, 0xf2, 0x33,
- 0x86, 0x9b, 0x92, 0x87, 0xfc, 0x4a, 0x66, 0xff, 0x65, 0xb9, 0x6e, 0xfa,
- 0xce, 0xb9, 0x90, 0x03, 0x74, 0xa5, 0x09, 0x2a, 0xa9, 0xae, 0x86, 0xdb,
- 0xd1, 0xfc, 0x1e, 0xee, 0x83, 0xdc, 0x48, 0xb5, 0xd1, 0xad, 0xa7, 0x0f,
- 0x0a, 0x3e, 0xa5, 0xb3, 0xea, 0xde, 0xd1, 0x58, 0x50, 0xeb, 0x55, 0xd2,
- 0xa6, 0x52, 0x97, 0x3d, 0xd4, 0x24, 0x7e, 0x2c, 0xb3, 0x55, 0x35, 0x1e,
- 0x36, 0x27, 0x35, 0x39, 0x12, 0xad, 0x5a, 0x29, 0x84, 0x25, 0x72, 0x93,
- 0x17, 0xb7, 0x25, 0x7e, 0x23, 0xd1, 0xa6, 0x00, 0xdc, 0xc0, 0x47, 0x08,
- 0x8c, 0x4d, 0x84, 0x3f, 0xab, 0xea, 0xa0, 0xd1, 0x9c, 0x77, 0x33, 0x16,
- 0x2e, 0xde, 0xf2, 0xc9, 0x2e, 0x1c, 0xbf, 0x45, 0x77, 0x2b, 0xf0, 0x61,
- 0xa2, 0xcd, 0xdb, 0x4f, 0x94, 0xbb, 0xd7, 0xbc, 0x38, 0xab, 0x33, 0xe1,
- 0x13, 0xe5, 0xa2, 0x2d, 0xbd, 0x70, 0xe4, 0xbe, 0xc9, 0xad, 0xef, 0x67,
- 0xf5, 0x4d, 0x62, 0x89, 0xc4, 0xec, 0x5c, 0x3b, 0xfb, 0x95, 0x02, 0xcc,
- 0xcc, 0xec, 0x49, 0x27, 0x78, 0x72, 0x53, 0x96, 0x52, 0x15, 0xb8, 0x4a,
- 0xd8, 0x26, 0x50, 0x69, 0x80, 0x59, 0xb0, 0x42, 0x7f, 0xb0, 0x00, 0x4f,
- 0x2e, 0x06, 0x19, 0x24, 0x1a, 0xfb, 0x60, 0x70, 0x2d, 0x14, 0xc6, 0xf6,
- 0xdd, 0xc6, 0xfd, 0xb1, 0x97, 0xb3, 0x08, 0xd7, 0x10, 0xa1, 0x0e, 0x52,
- 0x80, 0xaf, 0xee, 0xf8, 0xf4, 0x48, 0x86, 0xa7, 0x3f, 0x29, 0xd1, 0xcb,
- 0x8e, 0x73, 0x3e, 0x1d, 0x10, 0x30, 0x76, 0x0d, 0xcc, 0xa6, 0xa2, 0x1d,
- 0xd0, 0x40, 0x4f, 0xf3, 0x06, 0x02, 0xe4, 0xcf, 0xfb, 0xbb, 0xab, 0x84,
- 0x3c, 0x35, 0xa4, 0x55, 0x88, 0x74, 0x1a, 0x6b, 0x6b, 0x7f, 0xe1, 0x1a,
- 0x74, 0xb8, 0x00, 0x74, 0x87, 0x2c, 0x17, 0xe4, 0xa7, 0x1b, 0xd0, 0x7e,
- 0x49, 0xeb, 0x55, 0xf3, 0x1f, 0xb7, 0x8a, 0x7f, 0x2b, 0xcb, 0xd8, 0x0a,
- 0x92, 0x31, 0x27, 0xbf, 0x2e, 0xbc, 0x35, 0xa6, 0x86, 0x62, 0x89, 0x6e,
- 0x2a, 0x4b, 0xd4, 0x4f, 0xe2, 0x29, 0xed, 0x4e, 0x67, 0x80, 0x5d, 0x0f,
- 0x36, 0x29, 0x05, 0x2f, 0xcc, 0x43, 0x91, 0x6c, 0x6c, 0xda, 0xf9, 0x22,
- 0x89, 0x88, 0xac, 0xbe, 0x9e, 0x00, 0xcd, 0x63, 0xb1, 0xb9, 0xba, 0xfc,
- 0x35, 0x68, 0xca, 0x65, 0x88, 0x8f, 0x21, 0x82, 0x94, 0x8d, 0xf1, 0x54,
- 0xd2, 0x46, 0x31, 0x21, 0xf4, 0xa5, 0xf6, 0xc5, 0x88, 0xb4, 0xb4, 0x41,
- 0xd4, 0xdb, 0x1f, 0x45, 0xc7, 0x97, 0x2c, 0x76, 0x1f, 0xf2, 0xbb, 0xc7,
- 0x6f, 0xf7, 0x92, 0x2d, 0x92, 0xaa, 0xdb, 0x56, 0x79, 0x0d, 0x2b, 0x54,
- 0x95, 0x84, 0x82, 0x6d, 0x98, 0x94, 0x6f, 0xc8, 0x6e, 0x12, 0x2f, 0xe9,
- 0xaf, 0xc6, 0xca, 0xab, 0xcc, 0xfd, 0xbf, 0x9c, 0xa5, 0x15, 0x32, 0xf5,
- 0xb2, 0xab, 0xe5, 0x2c, 0x66, 0xe6, 0xd0, 0xd9, 0x96, 0xe0, 0x50, 0x5e,
- 0xd7, 0x4b, 0x31, 0x02, 0x2d, 0x04, 0x88, 0xc5, 0x84, 0x4b, 0x66, 0xa6,
- 0x3f, 0xf8, 0x74, 0x3d, 0xa3, 0xd4, 0x93, 0x95, 0xea, 0x09, 0xbc, 0xc3,
- 0xa2, 0xf8, 0x5a, 0x46, 0x36, 0xb6, 0xa3, 0x64, 0x75, 0xae, 0xa9, 0x53,
- 0xca, 0x40, 0x45, 0x93, 0xd0, 0xc7, 0x5d, 0xd5, 0x69, 0xae, 0x77, 0x76,
- 0x7e, 0x79, 0x72, 0xf6, 0x6e, 0x94, 0xfc, 0x5b, 0x6f, 0x6d, 0x31, 0x52,
- 0x1b, 0x40, 0xf6, 0xc7, 0xbe, 0x5b, 0x93, 0xe4, 0xa5, 0xf8, 0x19, 0x56,
- 0xd9, 0xc6, 0x9e, 0x12, 0x3f, 0x31, 0xb7, 0xb7, 0x91, 0xaf, 0xfa, 0xa6,
- 0x80, 0x6f, 0xc9, 0x6a, 0x75, 0xf0, 0xc2, 0x02, 0x6d, 0xd9, 0x02, 0xae,
- 0x75, 0x8d, 0x68, 0x16, 0xf6, 0xce, 0x66, 0xe9, 0x34, 0x1f, 0x97, 0xc0,
- 0x22, 0xf9, 0x5a, 0x29, 0xa5, 0xf2, 0x02, 0xa6, 0xf8, 0x0e, 0x6a, 0x29,
- 0x5b, 0xd0, 0x5b, 0xc2, 0xa2, 0x29, 0x8a, 0x56, 0x1d, 0x49, 0x21, 0xfc,
- 0xe6, 0xf8, 0x92, 0x9c, 0x34, 0xa8, 0x43, 0x74, 0x1d, 0x84, 0xab, 0x4b,
- 0x14, 0x9f, 0xd4, 0x2a, 0x67, 0x5a, 0x7e, 0x08, 0x0a, 0xee, 0x4f, 0x8b,
- 0x59, 0x5a, 0x44, 0x0b, 0xae, 0x8c, 0x46, 0x4b, 0xac, 0xe2, 0xa5, 0x03,
- 0xe7, 0x54, 0xdf, 0x89, 0xc7, 0xdf, 0xc0, 0xc0, 0x39, 0xe7, 0xef, 0x2f,
- 0xc5, 0x4f, 0xf5, 0xfa, 0xf8, 0xf4, 0xf8, 0xf2, 0xb8, 0x6b, 0xb9, 0x8f,
- 0x19, 0x6e, 0x10, 0x25, 0x37, 0x4d, 0x36, 0xb9, 0x29, 0xca, 0x59, 0x79,
- 0x9d, 0x0b, 0xb3, 0x62, 0xf2, 0x43, 0x36, 0x7e, 0x7d, 0xf8, 0x3d, 0xe9,
- 0x13, 0xe4, 0x73, 0x3a, 0xbf, 0x38, 0x3b, 0x7f, 0x73, 0xf2, 0xee, 0x75,
- 0x3f, 0x39, 0x3a, 0x3b, 0xff, 0x4b, 0x3f, 0x79, 0x7b, 0xf6, 0xfd, 0x71,
- 0x24, 0xd5, 0x9a, 0x60, 0xc0, 0x23, 0xc4, 0xee, 0xc2, 0x72, 0xe6, 0x0c,
- 0xef, 0x82, 0x43, 0x16, 0xde, 0x25, 0x72, 0x88, 0xac, 0x11, 0x62, 0x00,
- 0xe6, 0xb3, 0x66, 0xa6, 0xce, 0xdc, 0xa1, 0xdf, 0x1e, 0x1f, 0xbe, 0xee,
- 0x07, 0x40, 0xcd, 0x44, 0x19, 0x61, 0x3e, 0x46, 0xe3, 0xb3, 0x83, 0x06,
- 0xbc, 0x2f, 0x5b, 0x1f, 0xd0, 0x10, 0x38, 0xc8, 0xc5, 0x27, 0xd6, 0x6c,
- 0x58, 0xd4, 0x51, 0x4f, 0x57, 0x65, 0x4e, 0x08, 0xe6, 0xf8, 0x4a, 0x2e,
- 0x53, 0xaf, 0xfc, 0x83, 0x94, 0x35, 0x5f, 0xcd, 0x16, 0x38, 0x1d, 0xa4,
- 0xf7, 0x6b, 0x4d, 0x1f, 0x4b, 0x08, 0x2c, 0xca, 0x2a, 0x4c, 0x97, 0x7e,
- 0xab, 0x98, 0x1b, 0xf2, 0x88, 0x5d, 0x8f, 0xa9, 0x90, 0xc1, 0x81, 0x9c,
- 0x85, 0x72, 0x7f, 0x46, 0x0c, 0x66, 0x2c, 0x38, 0x9e, 0xeb, 0x35, 0x6c,
- 0x01, 0x8c, 0x16, 0x60, 0x1d, 0x9a, 0x3c, 0x9d, 0xa0, 0xbe, 0xf2, 0x62,
- 0xfc, 0xc8, 0x3f, 0x96, 0x34, 0x9d, 0x48, 0x02, 0xf9, 0xf2, 0xca, 0x6c,
- 0xcb, 0x8c, 0x73, 0xaa, 0x78, 0x99, 0xac, 0x5b, 0x20, 0x19, 0x9c, 0xa8,
- 0x53, 0x62, 0x9d, 0x82, 0xa5, 0x27, 0x46, 0x1d, 0x33, 0x8c, 0xe6, 0xa3,
- 0x3e, 0xab, 0xb6, 0x98, 0xf0, 0x3d, 0x24, 0x34, 0xce, 0x88, 0xbe, 0xaf,
- 0x4b, 0xac, 0x78, 0x33, 0xe2, 0xc1, 0xf1, 0x27, 0x05, 0xb0, 0x08, 0x81,
- 0x2f, 0xcb, 0x5c, 0xb0, 0xc1, 0xe5, 0x82, 0x27, 0x8d, 0x28, 0x29, 0xc4,
- 0x23, 0x9a, 0x50, 0xe8, 0x6d, 0xc0, 0xb6, 0xb4, 0x9f, 0x16, 0xac, 0xd2,
- 0x53, 0x74, 0x53, 0xe9, 0x43, 0x9c, 0x7b, 0xdb, 0x91, 0xf3, 0xf9, 0xbe,
- 0xbc, 0x27, 0xbb, 0x9f, 0x9c, 0x8f, 0x9d, 0xb4, 0x89, 0x3a, 0x19, 0x08,
- 0x66, 0xf2, 0xdc, 0x5c, 0x83, 0xa1, 0x7f, 0x69, 0xeb, 0xcd, 0x0a, 0xc1,
- 0xe8, 0x7b, 0x6d, 0x6d, 0xc9, 0xb5, 0x15, 0x51, 0xa7, 0x27, 0xe6, 0x38,
- 0x44, 0xc0, 0x4b, 0xa6, 0x25, 0x18, 0x5a, 0x91, 0x8e, 0x00, 0xbd, 0x0a,
- 0xb3, 0x6f, 0xda, 0x0a, 0x3f, 0x4c, 0x8c, 0xc5, 0xd1, 0x2f, 0x83, 0xca,
- 0xf8, 0x81, 0x4f, 0x07, 0x6b, 0x76, 0x71, 0x7c, 0x79, 0x31, 0x4c, 0xb6,
- 0x7c, 0x54, 0xce, 0xe7, 0xc3, 0xdd, 0x30, 0x68, 0x43, 0x6c, 0xc9, 0xd1,
- 0xaf, 0x82, 0x46, 0x79, 0xc5, 0x57, 0x21, 0x1b, 0xe8, 0xbb, 0x61, 0xa2,
- 0xb1, 0x87, 0xc5, 0xb3, 0x1b, 0xfb, 0x9e, 0xcf, 0xc8, 0xdc, 0xfa, 0x1e,
- 0xfd, 0x62, 0xcd, 0x28, 0xbf, 0x3d, 0x3e, 0x8d, 0x70, 0x98, 0x7c, 0x7f,
- 0xf1, 0xe6, 0x2f, 0xed, 0x51, 0x3e, 0x79, 0x1a, 0xf9, 0xea, 0xef, 0xe9,
- 0x50, 0xcf, 0xea, 0x72, 0x66, 0x14, 0x16, 0x54, 0x93, 0xa0, 0x98, 0xe4,
- 0xc0, 0x5c, 0x01, 0x94, 0x8c, 0xfe, 0x53, 0x5f, 0xfe, 0xf2, 0xcb, 0x70,
- 0x38, 0xfc, 0x32, 0x04, 0x96, 0x86, 0x8f, 0xc6, 0x0e, 0x57, 0x9e, 0xed,
- 0x5a, 0xe0, 0xa8, 0xde, 0x41, 0xb5, 0x12, 0x45, 0x2d, 0x16, 0x69, 0x5e,
- 0x81, 0xfb, 0x24, 0x7a, 0xe1, 0xd2, 0x90, 0x5c, 0xc5, 0x99, 0xd5, 0xe6,
- 0x04, 0xb3, 0x89, 0x8f, 0xeb, 0x56, 0xbd, 0x2d, 0x45, 0xc0, 0x1e, 0xbd,
- 0xf4, 0x34, 0x70, 0x84, 0x30, 0xff, 0x04, 0x7d, 0x96, 0xb8, 0xe5, 0xc5,
- 0xd6, 0x71, 0x77, 0x6d, 0xa1, 0x77, 0x87, 0x8c, 0x7e, 0x6a, 0xbb, 0x1f,
- 0xf5, 0x5e, 0x48, 0xbd, 0xe6, 0x91, 0x84, 0xd4, 0xe1, 0x48, 0x4e, 0x71,
- 0xad, 0x80, 0x9f, 0x33, 0x6b, 0x26, 0x3b, 0x34, 0xce, 0xba, 0xa5, 0x01,
- 0x5a, 0x15, 0x2e, 0x70, 0x22, 0xf9, 0x09, 0x8f, 0x74, 0x45, 0xb0, 0xdf,
- 0xd9, 0xaf, 0x3b, 0x74, 0x44, 0x34, 0x9e, 0xa6, 0xce, 0xfa, 0x41, 0x28,
- 0xcd, 0x5a, 0xcc, 0x2f, 0x7e, 0x25, 0xa4, 0x42, 0xfa, 0x07, 0xe2, 0xd0,
- 0x2b, 0x97, 0x0b, 0xd5, 0x7e, 0x48, 0x67, 0xdd, 0x49, 0x94, 0x48, 0x01,
- 0x7c, 0xe8, 0xab, 0xd6, 0x8d, 0xa0, 0x1e, 0x3a, 0x7f, 0xd1, 0x95, 0x63,
- 0x38, 0x82, 0xb2, 0x23, 0x58, 0xcf, 0x6a, 0xc4, 0xd3, 0x48, 0xc3, 0xfb,
- 0xf0, 0x6b, 0x9b, 0xb0, 0x81, 0xa2, 0xe8, 0xcd, 0x7f, 0xdb, 0x24, 0x45,
- 0x18, 0xaf, 0x47, 0x4b, 0xb1, 0x75, 0xe3, 0x92, 0x61, 0x43, 0x4f, 0x45,
- 0xf4, 0x06, 0x3b, 0x29, 0x76, 0xf3, 0xa9, 0x2c, 0xf5, 0x37, 0x0f, 0x86,
- 0x30, 0x4c, 0x7e, 0xc8, 0x67, 0xd3, 0x49, 0x5a, 0x21, 0x3d, 0x2c, 0xbc,
- 0x5e, 0x65, 0x9b, 0xf0, 0x79, 0xaa, 0x4b, 0x7c, 0xd5, 0x1d, 0x1e, 0x25,
- 0xcd, 0x88, 0xef, 0xfa, 0x48, 0xf1, 0x91, 0x5d, 0x0c, 0x0a, 0x7e, 0xaf,
- 0x2a, 0x7e, 0xe3, 0xed, 0xa3, 0x73, 0x4c, 0x57, 0x5d, 0x9b, 0xa9, 0xa0,
- 0xbd, 0xae, 0x1a, 0x87, 0x18, 0x3c, 0x0d, 0x63, 0x29, 0xf9, 0xe2, 0xf6,
- 0x29, 0xdc, 0x57, 0xcf, 0xfb, 0xfc, 0xaf, 0xe7, 0x8c, 0xa2, 0xd7, 0xb4,
- 0x23, 0x2b, 0x6c, 0xc7, 0xb0, 0xd6, 0x7f, 0x72, 0xae, 0xc5, 0xb6, 0x01,
- 0xc0, 0xbe, 0x87, 0x1a, 0xcd, 0xbd, 0xd4, 0xf2, 0x39, 0xf3, 0x8e, 0xf6,
- 0x96, 0x66, 0xc4, 0xc8, 0xaf, 0x9f, 0xc6, 0x15, 0x51, 0x34, 0x36, 0xf5,
- 0x2f, 0xeb, 0xea, 0x9a, 0x8d, 0xce, 0xff, 0xd9, 0x30, 0xac, 0x1f, 0x8b,
- 0x7f, 0xc8, 0x66, 0x31, 0xbb, 0xaf, 0x51, 0x05, 0x00, 0xc2, 0x76, 0x94,
- 0xf5, 0xe3, 0xca, 0x9a, 0xa3, 0x1f, 0x7a, 0xf1, 0xc0, 0x87, 0x78, 0x49,
- 0x2d, 0x32, 0xd7, 0x9d, 0xee, 0x0a, 0xdb, 0x7d, 0x6e, 0xe7, 0xf9, 0xd3,
- 0xe1, 0xee, 0xe3, 0x13, 0xaf, 0x9d, 0xf1, 0xcd, 0x00, 0x71, 0xfc, 0x13,
- 0xec, 0x12, 0x49, 0x11, 0x2b, 0x57, 0xed, 0xb9, 0xb5, 0xe4, 0x02, 0x04,
- 0x6c, 0xd2, 0x92, 0xe5, 0x66, 0x02, 0x50, 0x43, 0x54, 0x19, 0xe3, 0xb0,
- 0x0e, 0x66, 0xe0, 0xa4, 0xe8, 0xb8, 0x5b, 0x44, 0x26, 0x52, 0x50, 0x94,
- 0x7f, 0x6c, 0xe4, 0xaf, 0x26, 0x0e, 0x25, 0xc7, 0x54, 0xe7, 0x74, 0x71,
- 0xfc, 0xe6, 0xfd, 0xe8, 0xf8, 0x75, 0x92, 0x46, 0x40, 0x8a, 0x10, 0x2f,
- 0xcd, 0xe1, 0x96, 0x13, 0x22, 0x94, 0xa6, 0x2c, 0x39, 0x23, 0x48, 0xfa,
- 0x12, 0x70, 0xab, 0x49, 0x72, 0x91, 0xb1, 0x8c, 0xc3, 0xc2, 0x14, 0xd6,
- 0xe3, 0xe4, 0xc5, 0x5f, 0x81, 0x92, 0xc1, 0xa3, 0x9e, 0x66, 0x44, 0x42,
- 0xf4, 0x92, 0xb3, 0x60, 0x02, 0xd8, 0x2b, 0x47, 0x57, 0x54, 0xcf, 0xb2,
- 0x6c, 0x21, 0xc5, 0x87, 0xf3, 0x72, 0x59, 0xb0, 0x5b, 0xd4, 0xac, 0x8d,
- 0x7a, 0x02, 0xd9, 0xf5, 0x9c, 0xa0, 0x55, 0x0d, 0x1c, 0xa6, 0x2b, 0x18,
- 0x73, 0x00, 0x80, 0x95, 0x20, 0xf5, 0xdc, 0x61, 0x17, 0xb8, 0x69, 0xe1,
- 0x59, 0xd9, 0xca, 0x9b, 0x8e, 0x0b, 0x3d, 0x60, 0x0f, 0x83, 0x4b, 0x9d,
- 0x08, 0x7c, 0x8c, 0x5d, 0xc4, 0x9d, 0x49, 0x67, 0xd7, 0x65, 0x65, 0xda,
- 0x9b, 0xdb, 0x7a, 0xc9, 0x0a, 0x39, 0x4f, 0xf5, 0x76, 0x97, 0x73, 0x30,
- 0xac, 0x3d, 0xe7, 0x3a, 0x0c, 0x84, 0xc0, 0x33, 0xae, 0x25, 0x27, 0xb1,
- 0xc0, 0xf3, 0x04, 0x8f, 0x09, 0x85, 0x07, 0xf9, 0x4e, 0x1b, 0x49, 0xf5,
- 0x37, 0xe6, 0x83, 0xa7, 0x30, 0x30, 0x37, 0xff, 0x9e, 0x55, 0x65, 0xd7,
- 0x9d, 0xa3, 0xaa, 0xbb, 0x86, 0x03, 0xfc, 0xbe, 0xff, 0x33, 0x59, 0xab,
- 0xf6, 0xf6, 0x63, 0x27, 0x60, 0x9e, 0x7e, 0x82, 0x8b, 0x6a, 0xe5, 0x76,
- 0x60, 0x87, 0x2d, 0x4d, 0x07, 0x3d, 0x56, 0xb1, 0xc8, 0x87, 0x80, 0x75,
- 0xa5, 0x31, 0x9c, 0x97, 0x64, 0x57, 0x5a, 0x1c, 0x58, 0xb0, 0xbb, 0xc3,
- 0xd0, 0x23, 0xd2, 0xb8, 0x2d, 0x75, 0x13, 0xfc, 0x84, 0x29, 0x0d, 0x93,
- 0x8c, 0xb8, 0x2d, 0xa6, 0xd0, 0xc1, 0xf7, 0xb6, 0xe9, 0xc7, 0xb3, 0x92,
- 0xa2, 0x94, 0xbc, 0x19, 0xf0, 0xfd, 0x10, 0x54, 0x8d, 0x8c, 0x84, 0x8a,
- 0x36, 0xa2, 0x1a, 0xb4, 0xec, 0x13, 0x06, 0x1f, 0x08, 0xaa, 0xc9, 0xf2,
- 0x89, 0x44, 0x3c, 0x94, 0x87, 0x0a, 0xe3, 0xe0, 0x37, 0x83, 0x1c, 0x56,
- 0x6e, 0x47, 0x08, 0xe4, 0xa9, 0x89, 0x7e, 0x1b, 0xfb, 0x56, 0x26, 0x1b,
- 0x25, 0x9b, 0xa8, 0xef, 0x01, 0x65, 0x94, 0xd4, 0xea, 0x47, 0x54, 0xb5,
- 0xbe, 0x72, 0x90, 0xa0, 0xf6, 0x89, 0x86, 0x03, 0x3b, 0x33, 0x2d, 0xfc,
- 0xbe, 0x62, 0x01, 0x4c, 0x1b, 0x79, 0x39, 0x45, 0xd5, 0x14, 0x73, 0x99,
- 0xac, 0x02, 0x3b, 0x91, 0xbe, 0x6c, 0x92, 0xa7, 0xf2, 0x53, 0x3e, 0x5f,
- 0xce, 0xf1, 0x7e, 0x9f, 0xeb, 0x23, 0xe7, 0x74, 0x6b, 0xe9, 0xa2, 0x22,
- 0xbb, 0xb0, 0xd1, 0x1d, 0x15, 0x73, 0x66, 0x90, 0x6c, 0xc3, 0xa6, 0x6d,
- 0x38, 0xe3, 0x87, 0xde, 0x62, 0x12, 0x04, 0x2c, 0xd4, 0xff, 0xf6, 0xfd,
- 0x99, 0xbc, 0x34, 0x1a, 0xdd, 0x97, 0x61, 0x27, 0x42, 0xd1, 0x81, 0x7d,
- 0x49, 0x79, 0xce, 0xd9, 0xd4, 0xb3, 0x22, 0x65, 0xbb, 0x91, 0xaa, 0x2a,
- 0x6b, 0xb4, 0x5a, 0x42, 0x09, 0xa5, 0x1e, 0xfa, 0x2b, 0x3b, 0x9e, 0x86,
- 0xea, 0x9c, 0xbf, 0x7c, 0x2d, 0xc9, 0xbe, 0xbf, 0x66, 0xd0, 0xb5, 0xe5,
- 0x22, 0xb8, 0xf3, 0xad, 0x9c, 0xb0, 0xea, 0xa8, 0xf9, 0xfc, 0xae, 0xe4,
- 0xc4, 0x88, 0x6d, 0x4b, 0xfe, 0x72, 0x99, 0x63, 0xeb, 0xc6, 0x12, 0x48,
- 0xfc, 0x38, 0x83, 0x20, 0x64, 0x59, 0x70, 0x89, 0xb0, 0x62, 0xca, 0xd8,
- 0x3d, 0x07, 0x34, 0x29, 0xbc, 0x7c, 0x7d, 0x2d, 0xd5, 0x7b, 0xfa, 0xe9,
- 0x53, 0xb0, 0xc3, 0x3d, 0x83, 0x98, 0x11, 0x01, 0xd9, 0x5a, 0x7e, 0xba,
- 0x8b, 0x3a, 0xc8, 0x67, 0x9f, 0x3a, 0x46, 0xf3, 0x30, 0x0a, 0xdf, 0xa7,
- 0x95, 0xbb, 0xe9, 0xb8, 0xe4, 0x10, 0x1c, 0x4f, 0x58, 0xea, 0x4d, 0xa6,
- 0x46, 0x11, 0x84, 0xe1, 0xf2, 0x2e, 0xa5, 0xc9, 0x2d, 0x8b, 0x30, 0xb5,
- 0x01, 0xb9, 0x98, 0x1e, 0xa7, 0xa5, 0x06, 0x4a, 0x41, 0xce, 0x66, 0x94,
- 0x7f, 0x9a, 0x4c, 0x9d, 0x2b, 0x6d, 0x74, 0x5a, 0x2e, 0x39, 0x90, 0x99,
- 0x05, 0x91, 0xb1, 0x9c, 0x67, 0x9f, 0x8e, 0x94, 0xb9, 0xb2, 0xf2, 0x19,
- 0xbd, 0xc3, 0xe7, 0xba, 0x4e, 0xf6, 0xcc, 0x32, 0xe4, 0xc5, 0xb2, 0xb1,
- 0x70, 0x6a, 0xf8, 0xa0, 0xee, 0xd0, 0xe8, 0xec, 0x93, 0x9c, 0xb7, 0x17,
- 0x8b, 0xc8, 0x82, 0xda, 0x0b, 0x10, 0xf2, 0x39, 0x81, 0x4e, 0x2e, 0x0e,
- 0x1e, 0xff, 0x96, 0x8d, 0xb8, 0x8a, 0x6c, 0x14, 0x56, 0xb8, 0x75, 0xb2,
- 0x4f, 0x66, 0xb2, 0x99, 0x9a, 0x24, 0xb1, 0x97, 0x83, 0xbb, 0xd4, 0x24,
- 0x43, 0x98, 0x21, 0xf5, 0x23, 0x99, 0x3f, 0x2d, 0x21, 0x6e, 0x79, 0x90,
- 0x20, 0xe7, 0xca, 0x46, 0x8e, 0x24, 0x97, 0x81, 0x4b, 0xb8, 0xf8, 0xff,
- 0x80, 0xa3, 0x5d, 0xa7, 0xf5, 0x6c, 0x90, 0x77, 0x65, 0xf9, 0x31, 0xb2,
- 0x09, 0x6d, 0x2e, 0x90, 0xdd, 0x85, 0xa6, 0x89, 0xd1, 0xe1, 0xe8, 0xb4,
- 0x83, 0x3c, 0xb5, 0x16, 0x0a, 0x78, 0xaf, 0xad, 0xf6, 0xfc, 0x51, 0x78,
- 0x85, 0x8c, 0x1f, 0xbb, 0x8a, 0xc8, 0xac, 0x3e, 0xe0, 0xaf, 0x3b, 0x58,
- 0xd4, 0xb0, 0x33, 0x8c, 0xa4, 0x44, 0x55, 0x1b, 0x4c, 0x38, 0x17, 0x83,
- 0xe3, 0xc1, 0x13, 0x3b, 0x92, 0x02, 0xf4, 0x50, 0x24, 0x9d, 0x41, 0x10,
- 0x75, 0xe4, 0x23, 0xba, 0x0d, 0x88, 0x91, 0x71, 0x10, 0x83, 0x0d, 0xb2,
- 0x71, 0x28, 0xd1, 0x27, 0x6b, 0x3c, 0x4d, 0x09, 0x41, 0x8d, 0x5c, 0x5b,
- 0x56, 0x62, 0x51, 0x1b, 0x2e, 0xaf, 0x86, 0xa0, 0xb8, 0x43, 0xe0, 0x6e,
- 0x0e, 0xb5, 0x5e, 0x31, 0xe9, 0x9d, 0xf6, 0xc0, 0x6b, 0xb3, 0x2b, 0x27,
- 0xf1, 0x43, 0xce, 0x1c, 0xff, 0xdb, 0x32, 0xcf, 0xc0, 0xce, 0x68, 0xe4,
- 0x4d, 0xf2, 0x9a, 0x33, 0xc3, 0x84, 0x3c, 0x8e, 0x59, 0x2a, 0xc1, 0x64,
- 0x49, 0x8f, 0xda, 0x0e, 0x04, 0x16, 0x80, 0xe9, 0x10, 0x9d, 0xc3, 0xb7,
- 0xe8, 0xf4, 0x11, 0x75, 0x7a, 0x6e, 0x0e, 0x3a, 0xec, 0x77, 0xec, 0x53,
- 0xa3, 0xde, 0x51, 0x36, 0x90, 0x24, 0x0d, 0x68, 0x26, 0x3f, 0x1f, 0xc9,
- 0xb4, 0xfe, 0x18, 0xe6, 0xea, 0xf7, 0x5b, 0x9c, 0x41, 0xb0, 0x19, 0xc5,
- 0x12, 0x68, 0x88, 0x70, 0xaa, 0x48, 0x67, 0x3b, 0x75, 0x33, 0x25, 0xf9,
- 0xb7, 0x2c, 0x66, 0xd4, 0x49, 0x6a, 0x4a, 0xf9, 0xd1, 0xba, 0x73, 0xd3,
- 0xc4, 0xc0, 0x69, 0x82, 0x05, 0x82, 0xef, 0xda, 0xda, 0x1d, 0x52, 0xb3,
- 0xe4, 0x2b, 0xb0, 0x8d, 0x63, 0x73, 0x0b, 0x41, 0x88, 0xfc, 0xa9, 0x22,
- 0x37, 0x02, 0x8f, 0x18, 0x13, 0xd9, 0x5a, 0xb7, 0x75, 0x58, 0x09, 0xb7,
- 0xd4, 0x21, 0xb3, 0xd1, 0xc6, 0x65, 0xad, 0x30, 0xbe, 0x66, 0x90, 0xe6,
- 0xf5, 0xd6, 0x79, 0x02, 0xe4, 0xd7, 0xaf, 0x44, 0x55, 0x61, 0xfe, 0x5b,
- 0x0f, 0x53, 0x65, 0x1d, 0xed, 0x6d, 0x48, 0x1a, 0xfc, 0xab, 0x01, 0x55,
- 0x62, 0x88, 0x51, 0x64, 0x4a, 0xda, 0xdc, 0x47, 0x49, 0x68, 0x6a, 0x21,
- 0x8b, 0xc0, 0x78, 0xa3, 0x00, 0x73, 0x84, 0xcd, 0xcd, 0x6c, 0xa7, 0xa5,
- 0x80, 0x24, 0x4c, 0x66, 0x46, 0xd6, 0x47, 0x0c, 0x4e, 0xe5, 0xf1, 0x23,
- 0xd8, 0xb1, 0x7e, 0x57, 0x9c, 0xd6, 0x4b, 0x52, 0x41, 0x66, 0x4b, 0xfa,
- 0x36, 0x23, 0x76, 0x59, 0xc4, 0x28, 0xad, 0xed, 0x8e, 0xa2, 0xac, 0x59,
- 0xc8, 0x27, 0x3a, 0xa3, 0x1e, 0xe0, 0xdc, 0x52, 0x59, 0x3f, 0x15, 0x8b,
- 0xad, 0x8b, 0xc9, 0x33, 0x5c, 0xd1, 0x3b, 0xb2, 0x0a, 0xfb, 0x3e, 0x45,
- 0xb6, 0x6f, 0x80, 0x53, 0x39, 0x8b, 0x76, 0xa7, 0xc5, 0x7f, 0x9d, 0x46,
- 0x51, 0xb4, 0x10, 0x1b, 0xe6, 0x4b, 0xc6, 0xef, 0x9b, 0xde, 0x1e, 0x5a,
- 0xf1, 0x8c, 0x0c, 0xf3, 0x16, 0xeb, 0xf4, 0x49, 0x11, 0xc4, 0x3d, 0x3a,
- 0xdc, 0xd8, 0xac, 0x38, 0x58, 0x82, 0x6b, 0x39, 0x7b, 0xad, 0x2e, 0x31,
- 0x24, 0x4e, 0x11, 0xcb, 0x54, 0x7e, 0x0c, 0x2b, 0x76, 0x8b, 0x07, 0xfb,
- 0x9f, 0x79, 0x1f, 0x3e, 0x6b, 0x53, 0x3b, 0x09, 0x84, 0xde, 0x6f, 0x3a,
- 0x50, 0xe9, 0xe3, 0x4e, 0xd4, 0x8a, 0xaa, 0x82, 0xff, 0x3b, 0x4f, 0x54,
- 0xfa, 0xb8, 0x23, 0x95, 0xb6, 0xce, 0xd4, 0x0a, 0x2e, 0xf3, 0x95, 0x3d,
- 0xfe, 0x1d, 0x4f, 0x99, 0x4d, 0xc0, 0x78, 0xec, 0x19, 0xd3, 0x3d, 0xf1,
- 0x7f, 0xf7, 0x29, 0xfb, 0xbc, 0xa3, 0x05, 0x02, 0x8f, 0x72, 0x0d, 0x83,
- 0x9a, 0x9f, 0xa3, 0x42, 0xc9, 0xe0, 0xa4, 0x6b, 0xed, 0x58, 0xe8, 0xb8,
- 0x38, 0x8d, 0x1a, 0x63, 0x10, 0x45, 0x43, 0x34, 0xa5, 0x2e, 0xed, 0x33,
- 0xbb, 0x1c, 0x5a, 0x5f, 0xbd, 0xb6, 0xe5, 0xc0, 0x49, 0xa5, 0xb0, 0xad,
- 0x0e, 0xe8, 0x61, 0x28, 0xea, 0x83, 0x8e, 0xe9, 0xda, 0xdc, 0xeb, 0x8b,
- 0x1c, 0xda, 0x81, 0x51, 0x5c, 0x88, 0x0a, 0xfb, 0x9b, 0xd1, 0x68, 0x70,
- 0x78, 0x7e, 0x42, 0xe8, 0xb1, 0x83, 0x70, 0x47, 0x79, 0xf8, 0xad, 0xa5,
- 0xdf, 0xc7, 0x98, 0x5d, 0xb0, 0x3a, 0xdd, 0xa4, 0xfd, 0x75, 0xa3, 0xe7,
- 0x76, 0xa7, 0xf5, 0xb0, 0x4e, 0x5a, 0xe9, 0x94, 0xda, 0x29, 0x0b, 0xfe,
- 0x4e, 0xda, 0x36, 0x4e, 0x98, 0xc0, 0x56, 0xa3, 0x32, 0x9f, 0xa4, 0x16,
- 0x1e, 0x08, 0x72, 0x4f, 0x01, 0x35, 0x42, 0x20, 0x21, 0x7b, 0x2f, 0x9e,
- 0xef, 0x99, 0x53, 0x71, 0xcf, 0x28, 0x7b, 0xf2, 0xf2, 0xd3, 0xe1, 0x93,
- 0x9d, 0xa7, 0xc3, 0xa7, 0x24, 0xd3, 0x24, 0x28, 0x04, 0xa3, 0x4e, 0x9a,
- 0x37, 0xd2, 0x2e, 0x92, 0x7d, 0xc1, 0x97, 0xd8, 0xbb, 0xe3, 0xa3, 0x84,
- 0x53, 0xf4, 0x00, 0xbb, 0x96, 0xa0, 0x58, 0x88, 0x2a, 0x8f, 0x24, 0x8e,
- 0x8d, 0x34, 0x01, 0x12, 0xa5, 0xb2, 0x84, 0xbc, 0x59, 0x03, 0x63, 0x2c,
- 0x98, 0x0e, 0x35, 0x25, 0x50, 0x9a, 0x5f, 0xd8, 0x8e, 0x90, 0xb8, 0x63,
- 0xab, 0x42, 0xe6, 0x85, 0xfa, 0x18, 0x56, 0xda, 0x78, 0x53, 0xe2, 0x4d,
- 0xd8, 0x03, 0x69, 0xb4, 0x4f, 0x57, 0xaf, 0x8f, 0x9a, 0x2f, 0x2b, 0x0c,
- 0x20, 0xe7, 0xa1, 0x0c, 0xec, 0x1c, 0x11, 0x88, 0x9a, 0x60, 0x48, 0xae,
- 0x96, 0xc9, 0xdc, 0x9a, 0x24, 0x57, 0x7f, 0x9b, 0x16, 0xc3, 0x5f, 0x6b,
- 0x4f, 0x45, 0x14, 0x62, 0xcf, 0x6c, 0xd2, 0xae, 0x8b, 0x20, 0x13, 0x5b,
- 0x69, 0xd5, 0x80, 0xc4, 0x44, 0xea, 0x7a, 0x02, 0x78, 0x0b, 0xd0, 0x61,
- 0x66, 0x0b, 0xca, 0x6b, 0xca, 0xb6, 0x1f, 0xf9, 0x99, 0xb6, 0x1e, 0x29,
- 0xc1, 0xa0, 0x8f, 0x71, 0x5b, 0x55, 0x96, 0xce, 0xa4, 0x57, 0xde, 0x77,
- 0xc2, 0x5f, 0x82, 0xef, 0x99, 0x84, 0x6d, 0x1d, 0xa6, 0x9f, 0x89, 0xf3,
- 0xd4, 0xeb, 0x82, 0x4d, 0x47, 0x71, 0x9c, 0x02, 0x8b, 0xca, 0x5c, 0x27,
- 0xf9, 0x22, 0x9d, 0x25, 0x8f, 0xc8, 0xa1, 0x5e, 0xbd, 0xf8, 0x0f, 0x30,
- 0x46, 0xa2, 0xf7, 0x7a, 0x3a, 0xd7, 0x08, 0x3a, 0x05, 0xbf, 0xe9, 0x5e,
- 0x79, 0xa1, 0x94, 0x5b, 0xd1, 0x18, 0x55, 0x88, 0x3b, 0x69, 0xa6, 0x3b,
- 0xae, 0x9b, 0x28, 0x60, 0x2c, 0x49, 0xeb, 0x61, 0x9a, 0x94, 0xf3, 0x85,
- 0x0b, 0x19, 0x68, 0xb3, 0x52, 0xdb, 0xb7, 0xdd, 0x15, 0x84, 0x31, 0xe1,
- 0xce, 0x64, 0xe4, 0x93, 0x47, 0x48, 0xde, 0xdf, 0x43, 0x18, 0x92, 0x0a,
- 0xc7, 0x7e, 0x86, 0x5f, 0xaf, 0xcc, 0xc9, 0x14, 0x26, 0x5b, 0x08, 0x77,
- 0x4b, 0x2d, 0xa4, 0x62, 0x01, 0x6a, 0x00, 0x35, 0xe2, 0xa5, 0x42, 0x74,
- 0x0c, 0x1b, 0x84, 0x26, 0xe4, 0x01, 0xd3, 0x2a, 0xa2, 0xf8, 0x85, 0x38,
- 0x41, 0xff, 0x37, 0xa8, 0x81, 0xcf, 0x12, 0xbb, 0x56, 0x8f, 0x51, 0x07,
- 0x19, 0xc9, 0x9a, 0x99, 0x6f, 0x03, 0x9c, 0x26, 0x67, 0x72, 0xfd, 0xff,
- 0xb5, 0xc1, 0xff, 0x5f, 0xd2, 0x06, 0xff, 0x91, 0x53, 0x3a, 0x90, 0xfc,
- 0x4d, 0x3e, 0x96, 0x36, 0x83, 0x44, 0xf2, 0xed, 0xa3, 0x89, 0xd5, 0xb3,
- 0xfb, 0x61, 0xb2, 0x02, 0x4e, 0xf6, 0x81, 0x23, 0x1a, 0x6e, 0x85, 0xff,
- 0x3b, 0x8e, 0xe8, 0xa3, 0x4e, 0xe6, 0xff, 0xdf, 0xf7, 0xf1, 0x7f, 0xda,
- 0x39, 0x8c, 0x6c, 0x48, 0x6d, 0x6c, 0xcb, 0x6c, 0xb3, 0x3b, 0xca, 0x4e,
- 0x62, 0xda, 0x1d, 0x58, 0xda, 0xdb, 0x4e, 0xf5, 0xa1, 0xb2, 0x23, 0x9e,
- 0xba, 0x93, 0xf3, 0xef, 0x9f, 0x03, 0x6d, 0x64, 0xd4, 0x0d, 0xda, 0x57,
- 0xc9, 0xe9, 0xeb, 0xc3, 0xf3, 0x5f, 0x71, 0xda, 0xff, 0x02, 0x37, 0xeb,
- 0x22, 0xcb, 0xa6, 0x03, 0x8e, 0x8f, 0xbc, 0xc4, 0x3f, 0xa2, 0x81, 0x45,
- 0x45, 0x11, 0xc0, 0xb6, 0xa5, 0xb0, 0x49, 0x18, 0xaf, 0xc5, 0xcb, 0x46,
- 0x4d, 0x29, 0x04, 0xdb, 0x63, 0x01, 0x02, 0xd0, 0xc0, 0xc7, 0x52, 0x16,
- 0xd3, 0x6d, 0x51, 0x01, 0xf9, 0xdb, 0xd8, 0x2a, 0x12, 0x67, 0xa7, 0xe3,
- 0x7d, 0x4d, 0xf8, 0x5f, 0x16, 0x43, 0xd1, 0x7b, 0x86, 0x33, 0x8e, 0xa2,
- 0x49, 0x1f, 0xf7, 0x6e, 0x28, 0x1c, 0xda, 0x61, 0x94, 0xae, 0x27, 0xbb,
- 0xe4, 0x7f, 0x87, 0x04, 0xc9, 0x9a, 0x3f, 0x10, 0x55, 0xa0, 0xfb, 0xf9,
- 0x55, 0x69, 0x03, 0x6b, 0xa7, 0xd2, 0x5f, 0x89, 0xd6, 0x0c, 0x52, 0x24,
- 0x70, 0xba, 0xac, 0x42, 0x3e, 0xbb, 0xd4, 0x9f, 0x1d, 0x8e, 0x94, 0x73,
- 0x7f, 0xed, 0x27, 0xda, 0x73, 0x69, 0x3e, 0xdf, 0x9a, 0xce, 0x48, 0x96,
- 0x62, 0xbf, 0x95, 0x95, 0xe1, 0x77, 0xc9, 0xc6, 0x03, 0xf7, 0x12, 0x75,
- 0xed, 0x73, 0xed, 0xbc, 0x94, 0xec, 0xff, 0x25, 0xcc, 0x1a, 0xf3, 0x5e,
- 0x7f, 0x88, 0x13, 0xb3, 0x2c, 0x9a, 0x0a, 0x94, 0x0e, 0x1a, 0x2a, 0xad,
- 0x15, 0x24, 0x7d, 0xe9, 0xf1, 0x8a, 0xa6, 0x48, 0x88, 0xc6, 0xac, 0x85,
- 0xa0, 0x90, 0x7c, 0xbe, 0xb3, 0x66, 0x32, 0xb4, 0x2b, 0x0b, 0xa0, 0x36,
- 0xf3, 0xab, 0x89, 0x51, 0x71, 0x95, 0x1b, 0xd5, 0x8c, 0xb0, 0x52, 0x7c,
- 0xbf, 0xc1, 0x60, 0x85, 0xaf, 0x42, 0x23, 0xfe, 0x2b, 0xd2, 0xc9, 0x7f,
- 0xc7, 0xf4, 0xd9, 0xf5, 0x4c, 0x5c, 0x61, 0xa9, 0xbc, 0xba, 0x63, 0xac,
- 0x54, 0x48, 0x8d, 0x38, 0x43, 0x91, 0x39, 0xe8, 0x3a, 0xf3, 0xe6, 0x9e,
- 0xd0, 0x16, 0xee, 0xa4, 0xee, 0xa7, 0x2b, 0xef, 0x47, 0xa7, 0x4f, 0x30,
- 0xad, 0x97, 0xa7, 0x23, 0x1f, 0xae, 0xbc, 0x06, 0x81, 0x2b, 0xea, 0xbc,
- 0xbe, 0x3e, 0x3e, 0x1c, 0x5d, 0x0e, 0x83, 0x21, 0x9a, 0x31, 0x86, 0x89,
- 0x21, 0xbc, 0x61, 0x58, 0x08, 0x8f, 0x4e, 0xcd, 0x58, 0xef, 0x09, 0x26,
- 0x50, 0xea, 0xc7, 0xa8, 0x73, 0xdc, 0x37, 0x6d, 0x9d, 0xec, 0xdc, 0x94,
- 0xb3, 0x98, 0x9b, 0xac, 0x0a, 0x53, 0x2f, 0xcc, 0xdc, 0x8d, 0xf3, 0x19,
- 0x8d, 0xc0, 0xf4, 0xcb, 0x58, 0x43, 0x73, 0x49, 0x0e, 0x47, 0x35, 0x72,
- 0x39, 0xa3, 0x94, 0x32, 0xfa, 0x4c, 0xdb, 0x0f, 0x41, 0x89, 0x97, 0x52,
- 0xa2, 0xbd, 0xba, 0xe0, 0xd2, 0xe8, 0x1d, 0x65, 0x9d, 0x09, 0xd8, 0x1b,
- 0xb5, 0xa1, 0x73, 0xc5, 0xc5, 0x60, 0xb6, 0x22, 0x83, 0x71, 0x5c, 0x08,
- 0xac, 0x22, 0x4c, 0x6b, 0x4d, 0xeb, 0x8f, 0x9a, 0xdc, 0x0f, 0x86, 0x3b,
- 0x4a, 0x9e, 0x59, 0x9b, 0x5b, 0xd7, 0xb5, 0x84, 0xcc, 0x42, 0xa3, 0xf6,
- 0x97, 0xaa, 0x40, 0x82, 0x24, 0x70, 0x72, 0x00, 0x14, 0xd9, 0x6c, 0x7b,
- 0xcd, 0x8a, 0x6b, 0x84, 0xdc, 0x67, 0xe0, 0xa3, 0xd6, 0xe2, 0x0c, 0x48,
- 0xc9, 0xe4, 0x26, 0x33, 0x97, 0xc8, 0xd0, 0xab, 0x60, 0x7f, 0xf4, 0x84,
- 0x6c, 0x04, 0x30, 0x67, 0x91, 0xe9, 0xf9, 0xd5, 0x13, 0xf2, 0xf4, 0x69,
- 0x38, 0x21, 0x55, 0xf6, 0xb7, 0x69, 0x0c, 0x14, 0x1a, 0xb9, 0xf6, 0x48,
- 0xf3, 0xe7, 0xf4, 0xf8, 0x0b, 0x46, 0xb6, 0xa6, 0xae, 0xee, 0x10, 0x85,
- 0x8c, 0xe6, 0x0b, 0x3b, 0xd0, 0x30, 0xb2, 0xb0, 0x29, 0x00, 0x19, 0x12,
- 0x03, 0x2b, 0xb8, 0xa0, 0x47, 0x04, 0x97, 0xc7, 0x61, 0x0f, 0x24, 0x8b,
- 0x53, 0x3e, 0xb2, 0x56, 0x83, 0xa4, 0x6c, 0x4e, 0x10, 0x91, 0x50, 0x29,
- 0x9d, 0x3d, 0x3c, 0x83, 0xc1, 0x55, 0xb3, 0xb0, 0x03, 0x5b, 0xbb, 0x3b,
- 0x76, 0x83, 0xc9, 0x58, 0x31, 0xf4, 0xcb, 0xea, 0x5e, 0xdd, 0xaf, 0x6b,
- 0x47, 0x1f, 0x66, 0x95, 0x11, 0xc7, 0x09, 0x27, 0x8c, 0x02, 0x9d, 0x49,
- 0xe8, 0x7c, 0x57, 0x4e, 0x83, 0x2b, 0xcd, 0x93, 0x89, 0x08, 0x85, 0x07,
- 0xa6, 0xa5, 0x15, 0x19, 0xb5, 0x03, 0x16, 0x09, 0xae, 0xd1, 0x51, 0x99,
- 0x02, 0x2e, 0x21, 0x43, 0xe2, 0x76, 0x70, 0xda, 0x8b, 0xc6, 0x58, 0xf3,
- 0xb7, 0xd9, 0x0c, 0x85, 0xac, 0x59, 0x31, 0xa9, 0xee, 0x17, 0x3e, 0x8a,
- 0xf9, 0xf4, 0x1f, 0x99, 0x7f, 0xad, 0x80, 0x10, 0x72, 0xe9, 0x3d, 0x23,
- 0xec, 0xb6, 0x43, 0xfd, 0x8b, 0xea, 0x11, 0xa5, 0x3d, 0xc6, 0x5d, 0xa4,
- 0x5b, 0xb8, 0xf1, 0x73, 0xa2, 0xc9, 0x96, 0x51, 0xc9, 0xcd, 0x50, 0x81,
- 0x52, 0x52, 0x7e, 0x15, 0x3a, 0x90, 0x69, 0x72, 0x6d, 0xc6, 0xf3, 0xa3,
- 0x57, 0x7e, 0xbf, 0xcf, 0xd3, 0x75, 0xbb, 0x1f, 0xc8, 0x84, 0xd1, 0xe9,
- 0x76, 0xf2, 0x86, 0x7c, 0x34, 0x6d, 0x27, 0x3c, 0x1d, 0x57, 0xa5, 0x83,
- 0xda, 0x67, 0x47, 0x94, 0xcf, 0x1b, 0x2a, 0xf7, 0x71, 0x1a, 0xa4, 0x38,
- 0xa1, 0x02, 0x16, 0x6f, 0xbb, 0x5a, 0xc4, 0x91, 0x11, 0xad, 0x9c, 0xc0,
- 0xa5, 0x9e, 0xa5, 0xf1, 0x32, 0x17, 0xa0, 0x05, 0xba, 0xff, 0xcc, 0xd3,
- 0xb7, 0xfb, 0xab, 0x10, 0xb9, 0x87, 0xf2, 0x6b, 0x14, 0xeb, 0x4e, 0x33,
- 0x80, 0x5a, 0x2b, 0x66, 0x60, 0x62, 0xe9, 0xa3, 0x91, 0xbd, 0x48, 0xee,
- 0xe9, 0xe7, 0x7b, 0x9f, 0x3d, 0xdf, 0x5e, 0xc7, 0x97, 0x4b, 0x5c, 0x29,
- 0x54, 0x84, 0xc8, 0x5b, 0x88, 0xfe, 0xb5, 0x3f, 0xf4, 0x27, 0x28, 0xb1,
- 0x00, 0xf7, 0x1e, 0xa5, 0x43, 0xf7, 0x4a, 0x2a, 0xa6, 0xb4, 0x25, 0x30,
- 0x11, 0x16, 0xf7, 0x9e, 0x36, 0x0b, 0x8f, 0xab, 0x29, 0xed, 0x29, 0xc7,
- 0x56, 0xee, 0x1a, 0x85, 0x01, 0x24, 0x37, 0x8c, 0xc4, 0xc1, 0x13, 0xed,
- 0x03, 0xdf, 0x9e, 0x3e, 0x69, 0x1e, 0x77, 0x16, 0x7f, 0x1f, 0xb6, 0xff,
- 0xe5, 0x07, 0x33, 0x5d, 0x03, 0xbf, 0x65, 0x95, 0x9f, 0xfc, 0x13, 0x56,
- 0xf9, 0xc9, 0xfa, 0x55, 0x7e, 0xf2, 0xd8, 0x55, 0xfe, 0xec, 0xd9, 0xf3,
- 0xcf, 0x7f, 0xc3, 0x2a, 0x7b, 0x33, 0xfc, 0xbf, 0x6d, 0x95, 0xbd, 0x9d,
- 0xf6, 0xdb, 0x56, 0x59, 0x92, 0x42, 0xba, 0x85, 0x67, 0x92, 0xfc, 0x82,
- 0xf4, 0x3d, 0x82, 0x0c, 0xe0, 0x74, 0x7d, 0x7e, 0x36, 0xac, 0x27, 0x61,
- 0x58, 0x0d, 0x21, 0x19, 0x23, 0x3d, 0x2c, 0x62, 0x64, 0x3b, 0x08, 0x05,
- 0x68, 0xb8, 0x8b, 0x19, 0x71, 0x55, 0x6d, 0x0e, 0x36, 0xd5, 0x3d, 0xa2,
- 0x65, 0x62, 0x8a, 0xff, 0xc3, 0x9f, 0x33, 0x4b, 0xfd, 0x4f, 0x44, 0x8f,
- 0x0a, 0x73, 0x66, 0xbc, 0xac, 0xa7, 0xf6, 0xa4, 0xdd, 0xcf, 0x8c, 0x99,
- 0xc0, 0x39, 0x48, 0xd1, 0xec, 0x37, 0x41, 0xb8, 0xb6, 0x08, 0x36, 0xea,
- 0xa8, 0x19, 0x1b, 0xa5, 0xd0, 0xdc, 0x02, 0x05, 0x25, 0xf5, 0xdc, 0xcf,
- 0x32, 0x29, 0x94, 0xa4, 0x41, 0xd3, 0xce, 0x20, 0x53, 0xbe, 0xeb, 0x12,
- 0x16, 0xd2, 0x94, 0x4e, 0xc6, 0x92, 0xe5, 0x00, 0x2f, 0xdb, 0x9d, 0x61,
- 0xc2, 0x46, 0x73, 0x4a, 0x26, 0x4c, 0x84, 0x33, 0x8f, 0x80, 0x9a, 0xac,
- 0x91, 0xf4, 0xcf, 0xbb, 0x09, 0x77, 0x2b, 0x48, 0x5a, 0xa2, 0x8c, 0x3f,
- 0xc4, 0x0b, 0xd4, 0x26, 0x06, 0xe2, 0x5c, 0x58, 0x46, 0x0e, 0x83, 0xc2,
- 0xef, 0x68, 0x64, 0x38, 0x0d, 0x5b, 0x48, 0x73, 0x82, 0x82, 0x4b, 0xba,
- 0xd3, 0x65, 0x40, 0x6d, 0xfe, 0x19, 0x97, 0x4d, 0xa8, 0x33, 0xf3, 0x70,
- 0x6d, 0x00, 0x25, 0xd7, 0x36, 0x96, 0x4a, 0xc4, 0xcb, 0x93, 0x7b, 0x4d,
- 0xab, 0x3b, 0x5d, 0xce, 0x17, 0x0a, 0xfa, 0x46, 0x55, 0x1c, 0x39, 0xca,
- 0x85, 0xa4, 0xf0, 0x3b, 0x46, 0xd8, 0x9d, 0x56, 0x9e, 0x97, 0x49, 0x92,
- 0xdb, 0xd8, 0x63, 0xa5, 0x6b, 0x25, 0x00, 0x06, 0x3c, 0x00, 0x24, 0xae,
- 0xa1, 0x64, 0x82, 0x70, 0xa4, 0xb2, 0xab, 0x20, 0xf5, 0x00, 0x14, 0x0a,
- 0x88, 0x4e, 0x66, 0xe3, 0xe5, 0xb5, 0xd6, 0x4e, 0x5b, 0x42, 0xb1, 0xf6,
- 0xae, 0x44, 0x9d, 0x09, 0xa1, 0xa9, 0x64, 0x4a, 0x03, 0x1e, 0x82, 0x48,
- 0x34, 0xc4, 0xa6, 0x37, 0x59, 0x97, 0x1c, 0x16, 0x0c, 0x1c, 0x9b, 0xbd,
- 0x35, 0x72, 0xfc, 0xa4, 0x45, 0xf4, 0x14, 0x3a, 0xa7, 0x66, 0xfe, 0x56,
- 0x69, 0x26, 0x8b, 0xc1, 0x55, 0x4a, 0x10, 0x8c, 0x41, 0x01, 0xad, 0x24,
- 0x84, 0xca, 0x11, 0xb8, 0x3c, 0x3a, 0x4f, 0xde, 0xa4, 0xc2, 0xbb, 0x92,
- 0x6c, 0x19, 0x09, 0xfc, 0xd9, 0xd3, 0xbd, 0x27, 0xdb, 0x6b, 0xf5, 0xf0,
- 0x36, 0xac, 0x10, 0xbe, 0x55, 0x94, 0xb1, 0xc4, 0xdc, 0xcb, 0xa5, 0x31,
- 0x9b, 0x15, 0xaf, 0xc4, 0x7c, 0xe9, 0xc3, 0xbb, 0xb3, 0xd7, 0xc7, 0xa7,
- 0x87, 0x7f, 0xb1, 0xd5, 0xf1, 0x34, 0x09, 0x5a, 0x61, 0xf9, 0xc1, 0x98,
- 0xaf, 0xf7, 0x1f, 0xea, 0xcc, 0xf4, 0xb9, 0xd9, 0x7a, 0xb2, 0x4d, 0x15,
- 0x4a, 0x01, 0x09, 0xdf, 0x75, 0xd6, 0xc6, 0x14, 0xe0, 0x3c, 0xe9, 0x35,
- 0xc0, 0x38, 0xd6, 0x41, 0xb9, 0x3b, 0xdc, 0x17, 0x76, 0x05, 0x81, 0x87,
- 0x77, 0x32, 0xcb, 0x63, 0x7a, 0x48, 0x05, 0x3e, 0x8b, 0x6b, 0x10, 0xc3,
- 0x4a, 0x14, 0x02, 0x30, 0xc8, 0x27, 0x39, 0x59, 0x2b, 0x72, 0xac, 0x73,
- 0x0a, 0xc3, 0x5f, 0xb5, 0xe1, 0xf7, 0x50, 0xa4, 0x48, 0xbf, 0x58, 0x1f,
- 0x56, 0x6e, 0xcb, 0xfe, 0x06, 0x97, 0x45, 0x36, 0x2b, 0xb2, 0x66, 0x20,
- 0x1d, 0x7b, 0x69, 0xfe, 0x7c, 0x75, 0x9b, 0xce, 0x82, 0xd2, 0x57, 0xe2,
- 0xb0, 0xd3, 0x9d, 0x69, 0x45, 0x11, 0xbd, 0xe9, 0x31, 0x4b, 0x8c, 0x2c,
- 0xc5, 0x82, 0x3e, 0x69, 0x8e, 0x4a, 0xc0, 0xa4, 0x70, 0x79, 0xf9, 0x97,
- 0xf3, 0xe3, 0x57, 0x2f, 0x49, 0x90, 0x7d, 0x49, 0x39, 0xf6, 0x75, 0x4b,
- 0xae, 0x25, 0xc4, 0xac, 0x1c, 0x8c, 0xe1, 0xc7, 0xd7, 0x27, 0xa3, 0xf3,
- 0xd3, 0xb3, 0xa3, 0x57, 0x2f, 0x7f, 0x24, 0x9b, 0xd2, 0x5c, 0x1e, 0xf7,
- 0xde, 0xbb, 0xf6, 0x67, 0x16, 0x2d, 0x3e, 0x04, 0x4e, 0x38, 0xfe, 0xe1,
- 0xc3, 0xf1, 0xbb, 0xef, 0x5f, 0xbd, 0xbc, 0x4d, 0xab, 0x3e, 0x8d, 0x8f,
- 0xdf, 0x5e, 0x41, 0x10, 0xd9, 0xda, 0x6a, 0xa4, 0x9e, 0x8f, 0x67, 0x1f,
- 0xeb, 0xfc, 0xef, 0x59, 0x62, 0x5e, 0x9f, 0x2d, 0x43, 0xb8, 0xe6, 0x4b,
- 0xe1, 0x03, 0x32, 0x77, 0x37, 0x99, 0x43, 0x5f, 0x9f, 0x7e, 0x47, 0x90,
- 0xa0, 0xd6, 0x4f, 0x3a, 0x67, 0x02, 0x9a, 0xe4, 0xcb, 0x67, 0x7b, 0xfb,
- 0xdb, 0x8e, 0x5d, 0x11, 0x90, 0xc2, 0xa6, 0xc7, 0x1f, 0x83, 0xea, 0x90,
- 0xbf, 0x4b, 0x9d, 0x8b, 0x63, 0x01, 0x69, 0x9c, 0x45, 0x85, 0x0b, 0x43,
- 0x5d, 0x4e, 0x40, 0x05, 0x40, 0xfe, 0x2b, 0x91, 0x53, 0x56, 0x80, 0x57,
- 0x0a, 0x3c, 0x6e, 0x97, 0x6f, 0x3c, 0x2c, 0x8f, 0xaf, 0xdd, 0xd6, 0x33,
- 0xdd, 0x11, 0xaf, 0xdd, 0xda, 0xfb, 0xf1, 0x0f, 0x8c, 0xe5, 0x74, 0x4d,
- 0x4a, 0x4c, 0xb6, 0xb9, 0xd2, 0x64, 0xff, 0xc4, 0xe7, 0xd9, 0xcb, 0xf1,
- 0x41, 0xa5, 0x4b, 0xc9, 0x18, 0x74, 0x18, 0xa5, 0x6e, 0x3c, 0x2d, 0x9d,
- 0x7e, 0xc0, 0x87, 0x97, 0xcf, 0xa9, 0xc6, 0x32, 0xab, 0x13, 0xf5, 0xef,
- 0x78, 0xde, 0x9b, 0x59, 0x76, 0x9d, 0x4e, 0xee, 0x2d, 0x92, 0x2e, 0x16,
- 0x64, 0x5a, 0x06, 0xdc, 0x74, 0x04, 0x0b, 0x47, 0xc6, 0x9c, 0xb9, 0x82,
- 0xaf, 0x21, 0x9e, 0x19, 0x32, 0xc2, 0x1c, 0x57, 0xeb, 0xf4, 0xe1, 0xae,
- 0x59, 0x50, 0x0c, 0xbd, 0x2e, 0x69, 0x52, 0xbb, 0xb7, 0x73, 0x7b, 0x8a,
- 0x3b, 0xbb, 0x8f, 0xb6, 0x0d, 0xe8, 0x5f, 0xd7, 0xce, 0xe9, 0xd3, 0xb6,
- 0xc7, 0xfc, 0xef, 0x38, 0xe4, 0x84, 0x36, 0x04, 0xa7, 0xec, 0x4b, 0xfa,
- 0x6b, 0x1c, 0x6f, 0x1c, 0x3c, 0x45, 0x70, 0x5b, 0x30, 0xbd, 0x2f, 0x83,
- 0xbb, 0xd3, 0xb0, 0x2d, 0x4e, 0x9c, 0xd0, 0x77, 0x10, 0x6c, 0x75, 0xe3,
- 0xdc, 0xe9, 0x71, 0x2c, 0x2f, 0xeb, 0xd4, 0x36, 0xdb, 0x33, 0xb3, 0x94,
- 0x3f, 0x2b, 0xda, 0xb3, 0x85, 0x88, 0xf4, 0xfb, 0x88, 0x63, 0x53, 0x92,
- 0x11, 0x5e, 0x52, 0x5b, 0x24, 0x12, 0x49, 0x27, 0x31, 0x33, 0xf5, 0xa5,
- 0x46, 0x7d, 0xc0, 0xf0, 0x52, 0x0a, 0xc2, 0x14, 0x1e, 0x62, 0xc4, 0x8c,
- 0x3a, 0x84, 0x1b, 0xe0, 0xec, 0x76, 0x75, 0x1c, 0x70, 0x82, 0x06, 0x85,
- 0xd4, 0x2c, 0x7c, 0xae, 0xe9, 0x66, 0xad, 0x5a, 0x29, 0x15, 0x7b, 0xc1,
- 0x4c, 0x77, 0x00, 0x9b, 0x91, 0x9a, 0x6b, 0xaf, 0x3a, 0x49, 0x81, 0x8f,
- 0x79, 0x64, 0x92, 0x8e, 0x80, 0x0e, 0x6d, 0xcd, 0x69, 0x20, 0x82, 0xc3,
- 0xce, 0xa0, 0xf7, 0xab, 0xd8, 0x09, 0x3b, 0xb7, 0x94, 0x69, 0x93, 0x5a,
- 0x90, 0x1b, 0x0a, 0x77, 0x12, 0x97, 0x9f, 0x77, 0x66, 0x23, 0x52, 0x65,
- 0xd9, 0x70, 0x12, 0x7f, 0xf7, 0x8a, 0x22, 0xf0, 0x64, 0x4d, 0x9d, 0x6f,
- 0xb5, 0xe0, 0xd3, 0x72, 0x6d, 0x0d, 0x1c, 0xa7, 0x51, 0xde, 0x58, 0x95,
- 0x2d, 0x02, 0x2d, 0x62, 0x01, 0x9e, 0x2d, 0x40, 0x15, 0xbb, 0x3e, 0x75,
- 0x7f, 0xc8, 0x8e, 0xa0, 0x8f, 0xed, 0x70, 0x89, 0x9b, 0x8a, 0xa0, 0x3c,
- 0x52, 0x62, 0x1b, 0x34, 0x56, 0x64, 0x77, 0x7e, 0x63, 0xce, 0xee, 0xb0,
- 0x0d, 0xfe, 0x91, 0xde, 0x6e, 0x63, 0x33, 0x51, 0x5d, 0x4e, 0xf2, 0xf2,
- 0xfb, 0xe3, 0x8b, 0xd1, 0xc9, 0xd9, 0xbb, 0x2f, 0xa3, 0xe6, 0xb0, 0xfc,
- 0xd2, 0x32, 0x5e, 0x69, 0x45, 0x9f, 0xa3, 0x1d, 0x22, 0x2f, 0x98, 0xfa,
- 0x5a, 0x98, 0xbd, 0x26, 0x2f, 0xe8, 0x91, 0x80, 0xcd, 0x68, 0x92, 0x2d,
- 0x1a, 0xe8, 0x4b, 0x6a, 0x4b, 0x3b, 0x66, 0x45, 0xf0, 0x5d, 0xc0, 0x86,
- 0xdb, 0xed, 0xeb, 0xdf, 0xf6, 0xec, 0xdf, 0xf6, 0x23, 0x70, 0x56, 0xfc,
- 0x9b, 0x27, 0xc1, 0x04, 0xc5, 0x13, 0x76, 0xbc, 0x78, 0xf9, 0x72, 0xc1,
- 0xd5, 0x60, 0x04, 0xda, 0xc0, 0x00, 0x2f, 0xfe, 0x00, 0x02, 0x7c, 0xfa,
- 0xe1, 0x6e, 0xfb, 0x45, 0xf3, 0xf0, 0xed, 0x9e, 0x57, 0xc1, 0x62, 0x9f,
- 0xdb, 0x8b, 0x3d, 0xb7, 0x17, 0x3e, 0xb7, 0x1f, 0x7b, 0x6e, 0x3f, 0x7c,
- 0xee, 0x49, 0xec, 0x39, 0x6f, 0xbc, 0x9e, 0x19, 0x2f, 0x33, 0xb7, 0xce,
- 0x32, 0x6e, 0xfd, 0xeb, 0xc9, 0xd0, 0x2d, 0xff, 0x86, 0xf5, 0x56, 0x88,
- 0xa1, 0x2f, 0xe8, 0xf8, 0x99, 0x6f, 0xd8, 0xab, 0x5d, 0xbf, 0xda, 0xac,
- 0x57, 0x39, 0xad, 0xcd, 0x19, 0x35, 0xb1, 0xe3, 0x62, 0x36, 0xdf, 0xdb,
- 0x7b, 0x32, 0x98, 0xe4, 0x8b, 0x1b, 0xba, 0x75, 0x5e, 0x2a, 0x85, 0x15,
- 0x4d, 0x3e, 0x0d, 0x56, 0x7e, 0xb1, 0x24, 0x93, 0x3c, 0xd4, 0x43, 0x4e,
- 0x47, 0xdb, 0x89, 0x87, 0xcb, 0x22, 0x50, 0x84, 0x78, 0x25, 0xe1, 0x77,
- 0x1c, 0x2a, 0x4b, 0xe8, 0x60, 0x0e, 0x4a, 0x5d, 0xac, 0xfb, 0xc6, 0xbc,
- 0x27, 0x1d, 0xe0, 0xad, 0xab, 0xbd, 0xd2, 0x6e, 0x4a, 0xdb, 0x8c, 0x1e,
- 0xaa, 0xa1, 0xf7, 0xae, 0x6b, 0x17, 0x58, 0xfe, 0xfa, 0x8a, 0x62, 0x79,
- 0x11, 0x07, 0x55, 0xd1, 0x19, 0x1d, 0x37, 0x67, 0x55, 0xee, 0xb2, 0x88,
- 0x5d, 0x95, 0xef, 0x2f, 0x4e, 0x03, 0xd5, 0xd2, 0x12, 0xbf, 0x83, 0xd0,
- 0xf9, 0x26, 0xfd, 0xf4, 0x69, 0x58, 0x67, 0x3b, 0x46, 0x9e, 0xd4, 0x3b,
- 0xf0, 0xf7, 0xca, 0xa7, 0x6f, 0x9a, 0xf9, 0xec, 0x8f, 0x15, 0x18, 0x94,
- 0x8e, 0x46, 0x8a, 0xac, 0xb9, 0x6e, 0xcd, 0x7f, 0xbf, 0x0c, 0x0b, 0x4b,
- 0x31, 0xe2, 0x6e, 0xd2, 0x1a, 0x69, 0xbe, 0x54, 0xf0, 0xc4, 0xbc, 0xdf,
- 0xfc, 0x35, 0xcb, 0x2f, 0xa8, 0x8c, 0xf2, 0x2b, 0xca, 0x7f, 0x21, 0x23,
- 0x7a, 0xa3, 0x8b, 0xf3, 0x5e, 0x5f, 0x22, 0xd5, 0xe6, 0x0b, 0x03, 0xf3,
- 0xef, 0x04, 0x16, 0x16, 0x51, 0x68, 0x3c, 0x7b, 0x2a, 0x49, 0x65, 0xdc,
- 0x47, 0x26, 0x92, 0x0a, 0x43, 0x27, 0xf8, 0xa5, 0x4b, 0xac, 0xab, 0x5a,
- 0x64, 0x37, 0xc6, 0xf6, 0x69, 0x0f, 0x90, 0xb3, 0x5d, 0xfa, 0x9c, 0xc1,
- 0xb0, 0x46, 0xa5, 0x71, 0xd8, 0x6e, 0xc4, 0xa5, 0x4e, 0xfd, 0x1c, 0x76,
- 0xbc, 0xe3, 0x65, 0xf5, 0x51, 0xf0, 0xfe, 0xc5, 0xc7, 0x8f, 0x83, 0x15,
- 0x50, 0xb0, 0xb6, 0x0e, 0x9a, 0x75, 0x0b, 0x8a, 0x6f, 0xd1, 0x8e, 0x59,
- 0x26, 0xac, 0x9f, 0xc8, 0x19, 0x58, 0xc5, 0x33, 0x2a, 0xd4, 0x9f, 0xa4,
- 0x9d, 0x7c, 0x53, 0x2c, 0x69, 0x51, 0xd0, 0x90, 0xb6, 0x23, 0xcd, 0x3c,
- 0x80, 0x47, 0xf1, 0xb4, 0xb3, 0xfa, 0x3a, 0x79, 0x91, 0x65, 0x77, 0x04,
- 0xe6, 0x58, 0x24, 0xe8, 0xf3, 0x0a, 0xb9, 0x17, 0xd9, 0x12, 0x02, 0x8b,
- 0xb5, 0xb2, 0x92, 0x4a, 0xf1, 0x23, 0xbc, 0x15, 0x19, 0x6a, 0xe0, 0x49,
- 0x44, 0x94, 0x5b, 0x6b, 0x0f, 0xf3, 0xfe, 0xe1, 0x01, 0xf9, 0xe3, 0xc1,
- 0xdb, 0xd1, 0x64, 0x63, 0x1a, 0x92, 0x26, 0x63, 0x3e, 0x6a, 0x40, 0x0e,
- 0xd0, 0x6c, 0xe5, 0x90, 0x34, 0x38, 0xdf, 0x1e, 0x94, 0x1b, 0x95, 0x37,
- 0x2c, 0xb7, 0x4b, 0x69, 0x68, 0xc1, 0xd6, 0x7b, 0xd4, 0x40, 0x5b, 0x23,
- 0xa5, 0xeb, 0x21, 0x2a, 0x54, 0x23, 0xde, 0x6e, 0xef, 0x3a, 0xc4, 0xf5,
- 0x67, 0x46, 0xcf, 0x5a, 0x31, 0xc3, 0x67, 0xac, 0xa9, 0x28, 0x40, 0x78,
- 0x4b, 0xdc, 0xde, 0xd4, 0x8a, 0x72, 0x15, 0xac, 0xa9, 0x83, 0x0d, 0x2f,
- 0x09, 0xba, 0xbb, 0xe2, 0xf2, 0xff, 0xc1, 0xbe, 0xee, 0x75, 0xfa, 0xfa,
- 0x4f, 0xe8, 0xea, 0xfe, 0x6f, 0x9b, 0xd5, 0xfd, 0xff, 0x0d, 0xb3, 0xfa,
- 0xe4, 0x37, 0xce, 0xea, 0x93, 0xdf, 0x7d, 0x56, 0x1d, 0x81, 0xb2, 0xde,
- 0x8f, 0x79, 0x9b, 0x11, 0x85, 0x93, 0xaf, 0x89, 0x7b, 0x77, 0x4c, 0xea,
- 0xa1, 0xa8, 0x09, 0x54, 0x7a, 0x9e, 0x81, 0x4a, 0xb6, 0x33, 0xf2, 0xc6,
- 0xa2, 0x66, 0x58, 0xfc, 0x77, 0x71, 0x3c, 0x0b, 0x16, 0x2f, 0x09, 0xfb,
- 0xaf, 0x4b, 0xb2, 0x9b, 0x8c, 0x4c, 0xec, 0x27, 0xef, 0x46, 0x23, 0x4e,
- 0x36, 0x18, 0x21, 0x60, 0xd2, 0xb5, 0xa4, 0xc9, 0x05, 0x01, 0xcd, 0x66,
- 0x8b, 0x2e, 0xcc, 0x33, 0xd3, 0x43, 0xb7, 0xb1, 0xf8, 0xbd, 0x79, 0x3a,
- 0xa1, 0x1f, 0xef, 0x0e, 0xf7, 0xdc, 0xe4, 0x6c, 0xff, 0x0a, 0x98, 0x1b,
- 0x17, 0xcd, 0x88, 0xea, 0xdc, 0x11, 0x40, 0x5a, 0x8a, 0xcf, 0xd2, 0xfd,
- 0xdc, 0x5e, 0x9a, 0x4f, 0xb2, 0x7b, 0x54, 0x9d, 0x59, 0x0d, 0x7d, 0x0a,
- 0x7e, 0x1b, 0x09, 0x48, 0x51, 0x1b, 0xd6, 0x6d, 0x82, 0xc8, 0x2b, 0xa3,
- 0x34, 0x84, 0x07, 0xbf, 0xeb, 0xb2, 0x67, 0x0a, 0xea, 0x5f, 0x1b, 0x4f,
- 0xf2, 0x62, 0x37, 0xff, 0xdb, 0xe2, 0x49, 0x8f, 0xd2, 0x8a, 0xfd, 0x23,
- 0x53, 0x0d, 0x94, 0x38, 0x26, 0x8e, 0x4e, 0xeb, 0xdc, 0x09, 0x94, 0xff,
- 0x0f, 0xe0, 0xaa, 0x29, 0x6f, 0x1d, 0x8a, 0xaf, 0x1f, 0xcb, 0xbb, 0xce,
- 0xab, 0xcf, 0x59, 0x1b, 0x21, 0xba, 0x44, 0xa9, 0xb9, 0xb6, 0x16, 0x4f,
- 0x41, 0x0b, 0xda, 0x79, 0x94, 0x35, 0xef, 0xb8, 0x65, 0xa1, 0x9f, 0x71,
- 0x95, 0xe1, 0x40, 0x76, 0x09, 0x79, 0x8b, 0x33, 0xc6, 0xfd, 0xc8, 0x1f,
- 0xba, 0x23, 0x9e, 0xb7, 0xc7, 0x9b, 0x4e, 0xb2, 0x41, 0x5a, 0x4f, 0xf2,
- 0x3c, 0x4e, 0x5c, 0xa7, 0xd1, 0x1f, 0x0a, 0xb7, 0xc3, 0x6f, 0x47, 0x1c,
- 0xd9, 0xe4, 0x69, 0x57, 0x1e, 0xda, 0xbc, 0x10, 0x24, 0x0c, 0xea, 0x6e,
- 0xb9, 0x6c, 0xae, 0x4b, 0x75, 0xe1, 0xf5, 0x23, 0xee, 0x00, 0xf2, 0xc5,
- 0x63, 0x89, 0xcd, 0xea, 0x4c, 0xaa, 0x7c, 0x01, 0x94, 0x3d, 0x9f, 0xf4,
- 0xa6, 0x6f, 0x39, 0x61, 0x61, 0x62, 0x4b, 0xcc, 0x84, 0x29, 0x52, 0xdf,
- 0x07, 0x08, 0x04, 0xbd, 0x41, 0x8f, 0x9c, 0x19, 0x96, 0x2b, 0xc4, 0xbc,
- 0x4b, 0xd8, 0xa8, 0x5e, 0xb4, 0x82, 0xf9, 0xb6, 0x57, 0x07, 0xdf, 0xd4,
- 0x79, 0x69, 0xb6, 0xd0, 0xbd, 0xe2, 0x6f, 0x02, 0x0e, 0x5d, 0x83, 0x12,
- 0xa4, 0x22, 0x9a, 0x33, 0x48, 0x4e, 0xb5, 0x52, 0xea, 0xf3, 0x6f, 0xb2,
- 0x4f, 0x5c, 0x3d, 0x16, 0x2a, 0x9b, 0xa2, 0xde, 0xde, 0x80, 0x9d, 0x86,
- 0x9e, 0x3d, 0x1c, 0x1d, 0x9d, 0x9c, 0xb4, 0x6a, 0xcd, 0x68, 0xf2, 0x18,
- 0xbc, 0x0f, 0x80, 0x00, 0x35, 0x81, 0x18, 0x52, 0xa8, 0x26, 0x16, 0x7b,
- 0x63, 0x26, 0x2c, 0x73, 0xfc, 0xe0, 0x6f, 0x35, 0x92, 0x20, 0x57, 0x9e,
- 0xb2, 0x94, 0xf3, 0x3a, 0x96, 0x85, 0xe9, 0x66, 0x4e, 0xd0, 0x32, 0x37,
- 0xcb, 0x79, 0x5a, 0xfc, 0xf1, 0xe0, 0x19, 0xf1, 0x14, 0x6e, 0x99, 0x2d,
- 0x3e, 0x57, 0x7e, 0x7c, 0x27, 0xdc, 0x6b, 0x11, 0xd8, 0xf1, 0xf3, 0x4a,
- 0x48, 0xa9, 0x18, 0x27, 0x46, 0x70, 0xc3, 0x89, 0x35, 0x99, 0x50, 0xbc,
- 0xb8, 0x65, 0x33, 0x56, 0x0d, 0x19, 0x31, 0x24, 0xaf, 0x08, 0x92, 0x08,
- 0x39, 0xb5, 0x38, 0xcf, 0xd7, 0xd6, 0xc8, 0xec, 0x75, 0xaf, 0x4a, 0x7c,
- 0xe4, 0x9f, 0x79, 0x02, 0xfc, 0x03, 0xf0, 0xe0, 0xfe, 0x97, 0x03, 0xb0,
- 0xe2, 0x04, 0x20, 0x3f, 0xde, 0x51, 0xec, 0x3c, 0x7c, 0x08, 0xe0, 0x5f,
- 0xe8, 0xfd, 0xb9, 0x17, 0x07, 0xa6, 0x7f, 0xc4, 0x49, 0x6a, 0xc1, 0x2e,
- 0xfc, 0x73, 0x77, 0x5a, 0x04, 0x07, 0xc2, 0x13, 0x62, 0xfe, 0x9a, 0x2e,
- 0x8b, 0xfc, 0x13, 0xd2, 0xb8, 0x8d, 0x2a, 0xf1, 0x92, 0x40, 0xd9, 0x57,
- 0x00, 0x8e, 0x1f, 0xb1, 0x62, 0x93, 0x68, 0x56, 0x3a, 0x46, 0xf1, 0xde,
- 0xbc, 0x9c, 0x4c, 0xcb, 0x39, 0x45, 0xf5, 0xb9, 0x8d, 0xbe, 0x8f, 0xfc,
- 0x0a, 0xb1, 0x1e, 0xc9, 0x0a, 0x28, 0xb2, 0x86, 0x0c, 0xbf, 0xb5, 0xfe,
- 0xec, 0x76, 0x8c, 0xe0, 0x12, 0x0c, 0x4f, 0x0b, 0x4a, 0x15, 0x5e, 0xc3,
- 0x1f, 0xca, 0x6e, 0x7e, 0x2f, 0x31, 0xd7, 0x07, 0x0c, 0x25, 0xff, 0xb5,
- 0xa3, 0x19, 0x91, 0xfd, 0x23, 0xb7, 0x3e, 0x40, 0xe7, 0x63, 0x09, 0x0c,
- 0x96, 0x1d, 0xc1, 0x71, 0x8b, 0xe4, 0x5d, 0x7f, 0x24, 0xd8, 0x2b, 0x5c,
- 0xd0, 0x46, 0x78, 0xbf, 0xc2, 0xbb, 0xbb, 0x43, 0x72, 0x32, 0xf4, 0xf8,
- 0x16, 0x5b, 0x1c, 0x2c, 0x40, 0x61, 0xca, 0x67, 0xb4, 0xfd, 0x77, 0x34,
- 0xa6, 0x39, 0x0b, 0x33, 0x6e, 0x1d, 0xb1, 0x07, 0x8b, 0x3a, 0x2a, 0xef,
- 0x40, 0x5c, 0x83, 0xfe, 0x0d, 0x00, 0x15, 0x75, 0x56, 0xb5, 0x07, 0x21,
- 0x64, 0x3d, 0x5d, 0xf5, 0xc5, 0x8b, 0x3a, 0xdd, 0x10, 0xd7, 0xab, 0xf6,
- 0xab, 0xe2, 0x8d, 0xd8, 0x66, 0xf3, 0xd5, 0x40, 0x96, 0xc7, 0x56, 0x10,
- 0x61, 0x7b, 0x17, 0xfd, 0x4c, 0xd4, 0x28, 0xc6, 0xd5, 0xa3, 0x12, 0x1b,
- 0x82, 0x47, 0xa7, 0xec, 0x1c, 0x4b, 0x2d, 0xc9, 0x0b, 0xcb, 0xa4, 0xb4,
- 0x52, 0xc9, 0x17, 0xe0, 0x06, 0xe6, 0xb3, 0x56, 0xb6, 0xf4, 0x52, 0x58,
- 0xe9, 0xa4, 0x40, 0x63, 0xcb, 0x28, 0xeb, 0xac, 0xb4, 0xf1, 0xe1, 0x21,
- 0x68, 0x73, 0x05, 0x9e, 0x5d, 0x0d, 0x4a, 0x1a, 0x05, 0x75, 0x69, 0xa7,
- 0xad, 0x90, 0xe4, 0xd8, 0x4a, 0x15, 0xbb, 0x8d, 0x3c, 0xe4, 0xdb, 0xaa,
- 0x76, 0x9a, 0x13, 0x9e, 0x17, 0xfe, 0x76, 0x0f, 0x7c, 0xda, 0x42, 0x6f,
- 0x22, 0x62, 0x29, 0x39, 0x14, 0xcc, 0xdc, 0x8c, 0xdc, 0x3c, 0xdd, 0xef,
- 0x0c, 0xfd, 0xef, 0x70, 0x8a, 0xfc, 0x76, 0x80, 0xb4, 0x7e, 0xdf, 0xe5,
- 0x5e, 0xb5, 0xdf, 0xa6, 0x7e, 0x6a, 0x25, 0xa8, 0xf4, 0x0c, 0x29, 0x85,
- 0x94, 0x4f, 0x89, 0x70, 0x63, 0x78, 0x12, 0x51, 0x9a, 0x8c, 0x97, 0x90,
- 0xd6, 0x0d, 0xf8, 0x3c, 0x61, 0x49, 0xe0, 0x3c, 0x4b, 0x91, 0x68, 0x8c,
- 0x91, 0x27, 0xa3, 0xa5, 0x10, 0x0e, 0x03, 0xa7, 0x05, 0x3e, 0x1a, 0xb0,
- 0x37, 0x45, 0xa9, 0x3a, 0xfc, 0x42, 0x21, 0x92, 0x68, 0xe1, 0x71, 0xb6,
- 0x44, 0x48, 0xc4, 0xac, 0x50, 0x2a, 0x02, 0xfc, 0x2a, 0xb4, 0x79, 0xc1,
- 0x12, 0x4e, 0x8e, 0xe9, 0x8d, 0xb0, 0xb1, 0x7f, 0x17, 0x7e, 0x86, 0xdc,
- 0xe7, 0x3a, 0x03, 0x65, 0x70, 0xb0, 0xaf, 0x64, 0xe7, 0x09, 0x70, 0x35,
- 0xaa, 0x7a, 0x87, 0x42, 0xe3, 0x41, 0x4a, 0xbb, 0xaa, 0x99, 0x49, 0xef,
- 0x7a, 0x56, 0x8e, 0xc7, 0x66, 0xe0, 0x3d, 0x4f, 0x29, 0x35, 0x5f, 0x0e,
- 0xbc, 0x68, 0x7e, 0x3f, 0x8c, 0x65, 0x75, 0x8d, 0x98, 0x46, 0x9f, 0xb3,
- 0x51, 0x04, 0xfa, 0x99, 0x2e, 0x64, 0x2d, 0x9f, 0x92, 0xef, 0x2b, 0xd2,
- 0x6b, 0xe4, 0x9e, 0x91, 0xbc, 0x58, 0xd9, 0x18, 0x34, 0x30, 0x2f, 0xcb,
- 0x59, 0xaa, 0x09, 0xe9, 0xa7, 0xda, 0x41, 0xce, 0x30, 0x4a, 0x56, 0x25,
- 0xc9, 0xb5, 0x88, 0x36, 0xfa, 0xca, 0xb3, 0x94, 0xd7, 0xa1, 0x57, 0x15,
- 0xb3, 0xd0, 0x1e, 0x50, 0xef, 0xbf, 0xe8, 0x8f, 0xbd, 0x3e, 0xfd, 0x77,
- 0xff, 0xbf, 0x7b, 0x70, 0xbc, 0x1e, 0xec, 0xec, 0xdc, 0xdd, 0xdd, 0x0d,
- 0x05, 0x49, 0x7e, 0x68, 0x96, 0x6c, 0x23, 0xac, 0xf7, 0x21, 0xf4, 0xa5,
- 0x15, 0x1f, 0xb8, 0x4c, 0x7a, 0xf9, 0xfc, 0xfa, 0xa7, 0xbd, 0xc1, 0xde,
- 0xee, 0xee, 0xee, 0x2f, 0xc3, 0x05, 0x4d, 0xf1, 0x15, 0x9a, 0x35, 0xff,
- 0xf5, 0x9b, 0xdd, 0xe1, 0x9e, 0xec, 0x44, 0x01, 0xed, 0x64, 0x22, 0x2d,
- 0x72, 0x43, 0xc1, 0xa0, 0xe4, 0xbc, 0x91, 0x0f, 0x3c, 0x21, 0xc3, 0xf1,
- 0xa3, 0x74, 0x75, 0xf5, 0x2c, 0xf3, 0x03, 0x91, 0xf3, 0xf4, 0xd9, 0x93,
- 0xfd, 0xfd, 0x84, 0x55, 0x0e, 0x2e, 0x4a, 0xe1, 0x10, 0x26, 0xd5, 0x23,
- 0x0b, 0x81, 0x2a, 0xdf, 0x65, 0x13, 0x82, 0x65, 0xaa, 0x98, 0x9f, 0xb1,
- 0xbc, 0x5a, 0x91, 0xc8, 0xc5, 0x11, 0x43, 0x73, 0x51, 0x12, 0x4a, 0x5c,
- 0x39, 0xbd, 0x77, 0x0d, 0x9b, 0x5d, 0x5e, 0x91, 0x6c, 0x65, 0xae, 0xb3,
- 0x46, 0x20, 0x26, 0x48, 0x5b, 0x89, 0x68, 0x6d, 0xb6, 0xc0, 0x04, 0x97,
- 0x1c, 0x40, 0x00, 0x8b, 0x52, 0x68, 0x3c, 0x11, 0xaf, 0xbb, 0x5a, 0x56,
- 0xc2, 0xe1, 0x80, 0xf0, 0xe6, 0x5d, 0x7a, 0xdf, 0xba, 0xec, 0xcd, 0x8c,
- 0xbf, 0x34, 0xff, 0x59, 0x45, 0xbc, 0x9d, 0x2a, 0x07, 0xe5, 0x55, 0xd6,
- 0x4c, 0x6e, 0x02, 0x4c, 0x5b, 0x88, 0x6f, 0x52, 0xdd, 0x6f, 0xcc, 0x68,
- 0x2c, 0x64, 0xec, 0x2a, 0x7e, 0x2b, 0x57, 0x8d, 0x67, 0x1a, 0x25, 0x34,
- 0x73, 0xe4, 0x23, 0x33, 0xdd, 0x2d, 0xcb, 0xc4, 0x88, 0x72, 0xe4, 0x69,
- 0x75, 0xd4, 0x15, 0xca, 0x14, 0xcb, 0x6b, 0xad, 0x16, 0x9c, 0xdc, 0x64,
- 0x73, 0x91, 0x97, 0x5b, 0x9a, 0x28, 0xd5, 0x93, 0x4d, 0xd8, 0x0b, 0xaf,
- 0xb4, 0xde, 0x95, 0xfc, 0xc6, 0x0c, 0x66, 0x5b, 0xaa, 0xed, 0xec, 0x2d,
- 0x27, 0x54, 0x0f, 0xd7, 0x4b, 0xb2, 0x1a, 0xc7, 0xa9, 0x5c, 0x27, 0x5a,
- 0x06, 0xba, 0x2a, 0x9f, 0x91, 0x64, 0x62, 0x56, 0xe1, 0x16, 0x23, 0xff,
- 0xcb, 0x40, 0x74, 0x1f, 0xb9, 0x54, 0x11, 0x56, 0x36, 0x27, 0xf6, 0xf5,
- 0xc9, 0xd1, 0x25, 0x4a, 0xdf, 0xfa, 0x48, 0x92, 0xef, 0xa3, 0xde, 0x2d,
- 0xa4, 0xe1, 0x38, 0x87, 0x7f, 0x04, 0x1b, 0x55, 0x48, 0x0a, 0x53, 0x97,
- 0x58, 0xe3, 0x30, 0x56, 0xb5, 0x7a, 0xc5, 0x23, 0x50, 0x89, 0x64, 0x0c,
- 0xb6, 0xb4, 0x44, 0x9b, 0x8e, 0xf4, 0xf4, 0xd9, 0x70, 0x97, 0xc7, 0xe8,
- 0x18, 0x3e, 0xb5, 0x3e, 0x03, 0x6e, 0xa4, 0x5a, 0xe0, 0x2e, 0xd3, 0x78,
- 0xa4, 0xd0, 0x76, 0xa7, 0x9f, 0x30, 0xb6, 0x2b, 0x17, 0x50, 0xeb, 0x6f,
- 0xbd, 0x1c, 0xa9, 0xb5, 0x9a, 0xa9, 0x4f, 0xb8, 0x4e, 0xdb, 0xb2, 0x03,
- 0xca, 0x49, 0x41, 0x81, 0xd2, 0xd6, 0x56, 0x09, 0xba, 0x42, 0xac, 0x48,
- 0x06, 0x7b, 0x22, 0x11, 0x0f, 0x56, 0x93, 0x15, 0x7d, 0xc7, 0xac, 0x51,
- 0xd2, 0x2d, 0x20, 0x37, 0x96, 0x54, 0x1d, 0xb4, 0x88, 0xe8, 0x62, 0xfa,
- 0x49, 0x40, 0x58, 0x32, 0xf8, 0x5a, 0x98, 0x44, 0x59, 0x4f, 0x8e, 0x15,
- 0x7c, 0xd0, 0x52, 0x6e, 0x6b, 0x6e, 0x1b, 0xdb, 0xad, 0xaa, 0x70, 0x0e,
- 0xc9, 0x5d, 0xc8, 0xcb, 0xde, 0x74, 0x29, 0x67, 0xcd, 0x11, 0x1d, 0x84,
- 0x18, 0x75, 0x13, 0x24, 0x41, 0xdc, 0x5b, 0x66, 0xa4, 0x54, 0x46, 0x88,
- 0x9d, 0x00, 0x63, 0x0f, 0xfe, 0xa9, 0xde, 0x17, 0xe4, 0x0e, 0x7f, 0x75,
- 0xd8, 0x6b, 0x9d, 0xc8, 0x18, 0x37, 0x47, 0xcd, 0xd2, 0xad, 0x6d, 0xc9,
- 0x88, 0x4c, 0x23, 0xb9, 0x9f, 0x7d, 0x6a, 0xf8, 0xde, 0xbf, 0x02, 0xbf,
- 0x66, 0xf1, 0x64, 0x3f, 0xa9, 0xef, 0x8d, 0x12, 0x31, 0xf7, 0x27, 0xa1,
- 0x4b, 0xa7, 0x1a, 0x0d, 0x02, 0xb4, 0x78, 0x88, 0x58, 0x6e, 0xbd, 0xa7,
- 0x57, 0x0e, 0xf1, 0x8a, 0x30, 0x97, 0x68, 0x96, 0xce, 0x23, 0x38, 0x7a,
- 0x29, 0x4b, 0x92, 0xa5, 0xd8, 0x78, 0x96, 0x16, 0x1f, 0x6d, 0x3a, 0x25,
- 0xb7, 0xd4, 0x27, 0xf2, 0x3b, 0xae, 0x1f, 0x73, 0x3f, 0x94, 0xb4, 0x1d,
- 0xdc, 0x8c, 0x01, 0x47, 0x0c, 0xe9, 0xa5, 0xf3, 0xb4, 0xa2, 0xc2, 0x22,
- 0xcc, 0x99, 0xa4, 0x3c, 0xae, 0xa4, 0x01, 0x06, 0x61, 0xac, 0x65, 0x8c,
- 0x0d, 0xaf, 0x30, 0x6c, 0x28, 0xce, 0x8a, 0xb4, 0x79, 0xa3, 0x2b, 0xf8,
- 0x6e, 0x7e, 0xbf, 0xa8, 0xe2, 0x52, 0x57, 0xc2, 0x48, 0x6d, 0xf3, 0xdf,
- 0x03, 0x0d, 0x7d, 0xac, 0x92, 0xdf, 0xf6, 0xf6, 0xb0, 0x94, 0xae, 0x36,
- 0x58, 0xe2, 0x93, 0xf4, 0xb1, 0x7a, 0xe7, 0x82, 0x34, 0xb1, 0xd8, 0xe2,
- 0x30, 0x39, 0x73, 0xe6, 0x64, 0xd1, 0x07, 0x10, 0x66, 0x53, 0x4d, 0xc4,
- 0x98, 0xc4, 0xdf, 0x07, 0xca, 0xb5, 0x1d, 0x9b, 0x01, 0x70, 0xd6, 0x50,
- 0x32, 0xd4, 0xbd, 0xbd, 0x06, 0x5a, 0xbd, 0xeb, 0x2b, 0x7e, 0x09, 0xcb,
- 0x39, 0x33, 0xb1, 0x44, 0x9a, 0xc6, 0x41, 0xcc, 0x34, 0xc8, 0xc7, 0xe4,
- 0x41, 0xc4, 0xd9, 0x72, 0x38, 0xa4, 0x69, 0x69, 0xf2, 0xdc, 0xe3, 0xb5,
- 0xc4, 0x31, 0x67, 0xe6, 0x5e, 0xe4, 0x88, 0xb3, 0x43, 0xbb, 0x36, 0x22,
- 0xad, 0x2c, 0xfa, 0x01, 0xaa, 0x0b, 0x45, 0x0d, 0xd9, 0xe3, 0x44, 0x99,
- 0x40, 0x73, 0x61, 0x27, 0xb5, 0x14, 0x87, 0x29, 0xbf, 0xa7, 0x7b, 0xd3,
- 0xff, 0xf2, 0x03, 0x44, 0x8a, 0xcc, 0x74, 0xa0, 0x8b, 0x61, 0x76, 0x61,
- 0x9f, 0x0b, 0x78, 0x86, 0x2b, 0xd4, 0x19, 0x96, 0x07, 0xdf, 0x19, 0x0b,
- 0x3e, 0xab, 0x4a, 0x23, 0xf8, 0xbe, 0x7f, 0xa6, 0x59, 0x3a, 0x42, 0xcc,
- 0x2a, 0x77, 0x96, 0xac, 0x25, 0x66, 0x1b, 0xa8, 0x49, 0x81, 0x93, 0x9b,
- 0x13, 0x7b, 0xa9, 0xbb, 0xfa, 0xa6, 0x5c, 0x5a, 0x6c, 0xc8, 0x15, 0xdd,
- 0x65, 0xa1, 0xeb, 0xcc, 0xf4, 0x11, 0x6c, 0xad, 0x2b, 0x18, 0x38, 0xa4,
- 0x0c, 0x0b, 0x49, 0xe7, 0xcb, 0x09, 0xe9, 0x3f, 0xe4, 0xf4, 0x31, 0x62,
- 0xac, 0x1c, 0x37, 0xb8, 0x0e, 0x53, 0xd7, 0xf3, 0xcb, 0x9c, 0xdc, 0x02,
- 0x2b, 0x88, 0x30, 0x39, 0x8d, 0x55, 0x2e, 0x3f, 0x87, 0x1d, 0xdb, 0x09,
- 0x1f, 0x92, 0xb6, 0x51, 0xdf, 0xd0, 0x7d, 0x4d, 0xf7, 0x08, 0x4c, 0xc1,
- 0x8d, 0x38, 0x16, 0x2a, 0x4d, 0xda, 0xbb, 0xcb, 0xd3, 0xb7, 0xfd, 0xce,
- 0x49, 0x90, 0x8b, 0xcf, 0x23, 0x60, 0x96, 0xad, 0xa9, 0xa0, 0x09, 0x61,
- 0xbd, 0xa8, 0x2c, 0x6c, 0xdf, 0xb1, 0xc8, 0x71, 0xbd, 0x32, 0x4d, 0x5d,
- 0x5f, 0x82, 0xd5, 0x95, 0x94, 0x35, 0xa8, 0x75, 0xc8, 0xf3, 0x1a, 0xfa,
- 0x3b, 0x29, 0xc9, 0xad, 0x86, 0xe7, 0x00, 0x06, 0xb5, 0x91, 0x3b, 0x66,
- 0x3b, 0x7a, 0xfc, 0x4b, 0xe1, 0xbe, 0x2e, 0x5b, 0x87, 0xc6, 0x5f, 0x30,
- 0xda, 0x86, 0x8c, 0x18, 0x9d, 0xbc, 0x2e, 0xef, 0x8a, 0xc1, 0x29, 0x55,
- 0xa6, 0x25, 0xa7, 0xe5, 0x35, 0x59, 0x4d, 0xef, 0xe2, 0xb6, 0xfd, 0xfb,
- 0xf3, 0x77, 0xc9, 0x16, 0x49, 0xe7, 0xe4, 0xdc, 0xe2, 0x11, 0xd1, 0xa3,
- 0xdb, 0xa2, 0x85, 0xd6, 0x7c, 0x73, 0x49, 0x6f, 0xfa, 0xc9, 0xf1, 0x8f,
- 0x87, 0x6f, 0xcf, 0x4f, 0x8f, 0x7f, 0x66, 0x45, 0x34, 0x18, 0x0e, 0xfd,
- 0xf8, 0x2b, 0x4f, 0x33, 0x87, 0x1f, 0x9f, 0xf2, 0x49, 0x4c, 0x4f, 0xee,
- 0x57, 0xc9, 0x02, 0x3e, 0x3e, 0xba, 0x05, 0x47, 0xa3, 0xf3, 0x93, 0x81,
- 0x42, 0x09, 0x31, 0x5f, 0x57, 0x5e, 0x90, 0x12, 0xcd, 0x07, 0x58, 0xb1,
- 0xbe, 0xbf, 0x0b, 0x43, 0x16, 0xf6, 0x3c, 0xf4, 0x93, 0x77, 0x9a, 0xa7,
- 0xd2, 0xc7, 0xa2, 0x93, 0x94, 0x7e, 0x9d, 0x5f, 0x23, 0xee, 0xd0, 0xc9,
- 0xb1, 0xa0, 0xdd, 0x21, 0x26, 0x57, 0x80, 0xd3, 0xe5, 0x11, 0xad, 0xd4,
- 0xd9, 0x8c, 0x5d, 0x5c, 0x2b, 0xa5, 0x28, 0x13, 0x99, 0x62, 0x15, 0x91,
- 0x43, 0x1c, 0x04, 0x54, 0x24, 0xa7, 0x78, 0x7c, 0xef, 0x33, 0xbc, 0xd8,
- 0x1d, 0xc2, 0xd2, 0x43, 0xee, 0x1c, 0x2b, 0x1c, 0x0e, 0x8c, 0xf5, 0xbe,
- 0x4c, 0x0e, 0x7a, 0x7f, 0xe0, 0x45, 0xe2, 0xfb, 0x03, 0x23, 0x84, 0x11,
- 0x16, 0x4c, 0xca, 0x7a, 0x8f, 0xb9, 0x8c, 0x9f, 0x1d, 0x9b, 0xea, 0x96,
- 0x81, 0x47, 0xd4, 0x9c, 0x74, 0x51, 0xfb, 0xc6, 0xcb, 0xeb, 0xeb, 0x48,
- 0xa9, 0x3f, 0xb1, 0xd1, 0x64, 0xf0, 0x11, 0x90, 0xc9, 0xbd, 0x59, 0x27,
- 0xec, 0xe9, 0x35, 0xfd, 0xef, 0x21, 0x7a, 0xc5, 0x32, 0xe4, 0xa6, 0x2c,
- 0xa7, 0x94, 0x0c, 0x72, 0xa8, 0x8e, 0xea, 0x9a, 0xb2, 0x13, 0xc3, 0xe6,
- 0x38, 0x3e, 0xb7, 0xf9, 0xe5, 0xa6, 0xa2, 0xa5, 0x1b, 0x85, 0x9f, 0x6f,
- 0x5f, 0x68, 0x3a, 0x3d, 0x56, 0x75, 0xc6, 0x4c, 0xfa, 0xd6, 0x4f, 0x36,
- 0x5f, 0x6e, 0xca, 0x73, 0xbd, 0xe8, 0x45, 0xce, 0xef, 0x70, 0x1c, 0x88,
- 0x15, 0xe0, 0x89, 0xf5, 0x94, 0x91, 0x92, 0x90, 0x4f, 0xa7, 0x59, 0x21,
- 0x8e, 0x13, 0x22, 0x4e, 0x12, 0xf4, 0x2f, 0x61, 0xa3, 0x0d, 0x2e, 0x26,
- 0x74, 0x5d, 0x7b, 0xce, 0x7d, 0x25, 0x36, 0x1f, 0xee, 0x81, 0xc7, 0x2f,
- 0x48, 0xae, 0x6b, 0xc7, 0x73, 0x23, 0x5f, 0x5d, 0x75, 0x52, 0x10, 0x1d,
- 0x81, 0x09, 0x05, 0x7d, 0x29, 0x5a, 0x5e, 0xd2, 0xef, 0xd4, 0x6d, 0x20,
- 0xfa, 0x11, 0x3a, 0xb9, 0x1a, 0x8b, 0x76, 0x47, 0x2d, 0x6f, 0x56, 0x44,
- 0x61, 0xc0, 0xe4, 0xbf, 0xc4, 0x8d, 0xb4, 0xe2, 0xfb, 0xea, 0xff, 0x73,
- 0x1b, 0x8f, 0x4b, 0x4d, 0x35, 0x79, 0x96, 0xac, 0x33, 0x3c, 0x98, 0x15,
- 0xf0, 0x04, 0xab, 0x05, 0xd0, 0x0f, 0x91, 0x0e, 0x98, 0x5e, 0x45, 0x81,
- 0xd5, 0x6d, 0x8c, 0xa2, 0x1d, 0x51, 0xd3, 0x12, 0xb2, 0x28, 0xc2, 0xb2,
- 0x57, 0x8a, 0xd5, 0x66, 0xf0, 0x11, 0x8f, 0x27, 0xa0, 0xa7, 0xa3, 0x35,
- 0x2f, 0xac, 0xe6, 0x61, 0x9e, 0xdc, 0x44, 0x05, 0x65, 0x43, 0xce, 0x67,
- 0xee, 0x87, 0x67, 0xc2, 0xe4, 0xa8, 0xa8, 0xf3, 0xfc, 0x7b, 0x39, 0x55,
- 0x75, 0xa8, 0x8d, 0xbf, 0x96, 0xf0, 0x8a, 0x1f, 0xb5, 0x90, 0x32, 0x12,
- 0x76, 0x2f, 0x89, 0x26, 0xab, 0x41, 0x5c, 0x0d, 0x2d, 0xe7, 0xf0, 0x01,
- 0xd7, 0xc3, 0x88, 0xa2, 0xc3, 0x8a, 0x0b, 0xb6, 0x9c, 0x8c, 0x86, 0x9d,
- 0xb0, 0x08, 0xb8, 0xe8, 0xfb, 0xa5, 0x60, 0xaf, 0xf5, 0xbd, 0xf8, 0x70,
- 0x24, 0x00, 0x87, 0xfb, 0xe3, 0x89, 0x65, 0x4d, 0x37, 0x8f, 0x56, 0x69,
- 0xc5, 0xd4, 0x95, 0xc5, 0x47, 0xcd, 0x30, 0xa2, 0xc6, 0xb3, 0x4f, 0xd9,
- 0x64, 0xd9, 0xb4, 0xcb, 0x23, 0x7c, 0xe5, 0x4b, 0xf1, 0xff, 0xd1, 0xad,
- 0x2d, 0x1c, 0x05, 0x35, 0x5a, 0xce, 0x15, 0xb3, 0xe1, 0xa0, 0xb7, 0x2d,
- 0xc1, 0x3e, 0x0a, 0x04, 0x59, 0x28, 0x87, 0x58, 0x14, 0x4f, 0xfb, 0x5c,
- 0x65, 0xec, 0x77, 0x73, 0x01, 0xed, 0xe8, 0xe7, 0x99, 0xf9, 0x3d, 0xf2,
- 0xed, 0x37, 0xec, 0xa1, 0xf1, 0x3e, 0x6d, 0x19, 0xab, 0xc4, 0x79, 0x53,
- 0x07, 0x47, 0x39, 0xf8, 0x32, 0xa8, 0x3b, 0x87, 0xc9, 0xa1, 0xa5, 0xdd,
- 0xd5, 0x57, 0x75, 0xfe, 0x03, 0xa7, 0xd9, 0xc9, 0xf9, 0xed, 0x73, 0xcf,
- 0xe7, 0x49, 0x77, 0x1e, 0x7e, 0x64, 0x25, 0x7e, 0x30, 0x8a, 0x8f, 0xd5,
- 0xf8, 0xa9, 0xf9, 0xe3, 0x3b, 0xfa, 0xe3, 0x8a, 0xad, 0x47, 0x01, 0x5c,
- 0x62, 0x6f, 0x5d, 0xb8, 0xb5, 0xa9, 0x60, 0x56, 0xfe, 0x90, 0x45, 0x47,
- 0xfa, 0x3b, 0x55, 0xb1, 0x10, 0x3c, 0x93, 0x43, 0xca, 0x80, 0xf2, 0xab,
- 0xed, 0xf4, 0xb5, 0xb2, 0x2c, 0x9e, 0xfb, 0x0b, 0x34, 0x21, 0x46, 0xeb,
- 0xe9, 0xc3, 0x33, 0x31, 0x62, 0x41, 0x5e, 0xc6, 0x6a, 0x8b, 0xcc, 0x54,
- 0xfd, 0x9d, 0xdc, 0xd9, 0xb6, 0xca, 0x91, 0x68, 0xa3, 0xe7, 0x36, 0x9b,
- 0x9c, 0x32, 0x44, 0x5d, 0xd4, 0x9f, 0x7d, 0x98, 0x74, 0xcc, 0x84, 0xd0,
- 0x33, 0x5f, 0xd1, 0x85, 0xd5, 0x43, 0xc6, 0xe5, 0x2e, 0x7f, 0x84, 0x80,
- 0x84, 0xab, 0xdf, 0x7b, 0x8d, 0xca, 0x3a, 0x39, 0xf0, 0x7c, 0x14, 0x96,
- 0xcc, 0xac, 0xad, 0x8b, 0xed, 0xaa, 0x8b, 0xf9, 0x61, 0xb1, 0x15, 0x59,
- 0x31, 0x59, 0xd1, 0x4f, 0xa2, 0x68, 0x65, 0x40, 0x76, 0x48, 0x85, 0x8f,
- 0x1a, 0xd3, 0x9c, 0x67, 0x73, 0x0a, 0x8f, 0xd8, 0x7b, 0x91, 0x01, 0x5e,
- 0xa0, 0x58, 0xe1, 0xe3, 0x83, 0x78, 0x73, 0x53, 0xd2, 0xdf, 0xe8, 0x8a,
- 0xe5, 0x24, 0x9f, 0x7f, 0x09, 0x62, 0x62, 0xf5, 0x7d, 0x31, 0xb9, 0x79,
- 0xfd, 0x6e, 0x14, 0x7f, 0x3d, 0x1c, 0x1c, 0x9e, 0x37, 0x7a, 0x08, 0x6d,
- 0x06, 0x21, 0x2f, 0x07, 0xc4, 0x99, 0x51, 0xf2, 0x0e, 0xbd, 0xdf, 0xc5,
- 0x9b, 0x6b, 0xbd, 0x60, 0xfd, 0x45, 0xa4, 0x58, 0xb0, 0x10, 0x17, 0xcd,
- 0x13, 0x49, 0xc4, 0x83, 0x94, 0x8e, 0x02, 0xc8, 0xb0, 0x02, 0x05, 0xda,
- 0x9e, 0x69, 0x8a, 0x29, 0x80, 0x3c, 0x18, 0x4d, 0x56, 0x5e, 0x9a, 0x52,
- 0x77, 0x5f, 0x83, 0x8c, 0x41, 0xff, 0xf8, 0x35, 0xcb, 0x7c, 0x4a, 0xfc,
- 0xd3, 0x91, 0x10, 0x94, 0x3f, 0x43, 0xad, 0xa4, 0x11, 0x2f, 0x42, 0x68,
- 0xf6, 0xea, 0x8c, 0x5e, 0xe7, 0x6d, 0xda, 0x97, 0xdd, 0x8a, 0x1f, 0x55,
- 0xab, 0x86, 0x64, 0x26, 0x65, 0xff, 0x9b, 0xaf, 0xc3, 0xdb, 0xf3, 0xf5,
- 0xbb, 0x15, 0x9f, 0xa3, 0xdf, 0x0c, 0xb4, 0xd2, 0x44, 0x34, 0x02, 0x4f,
- 0xa5, 0x0f, 0xe7, 0x42, 0x60, 0x32, 0xe3, 0x1d, 0x50, 0x0c, 0xcd, 0x07,
- 0xa4, 0x04, 0x81, 0x07, 0xf3, 0x1f, 0x6b, 0x1f, 0x94, 0x9c, 0xd7, 0xf8,
- 0xa7, 0x28, 0x19, 0x76, 0x8b, 0xd3, 0xc0, 0x92, 0x0b, 0x0e, 0xf5, 0x9d,
- 0x8b, 0x26, 0xbc, 0x1d, 0x59, 0x22, 0xf7, 0x99, 0x78, 0x73, 0x24, 0xdf,
- 0x62, 0x70, 0x25, 0x24, 0x17, 0xf6, 0xf9, 0x8f, 0x9d, 0x7d, 0x9b, 0xc0,
- 0x64, 0xcb, 0x85, 0x70, 0x48, 0xcd, 0x05, 0x1e, 0x2a, 0x08, 0x45, 0xfe,
- 0x69, 0x84, 0xa8, 0xf3, 0x8a, 0xdd, 0x8c, 0xf0, 0x34, 0xc7, 0xa5, 0xed,
- 0x1c, 0x50, 0x47, 0x55, 0x13, 0x8b, 0xf6, 0x64, 0xc4, 0x4e, 0x9e, 0x87,
- 0x36, 0x53, 0x1e, 0xc9, 0xb9, 0x5a, 0x87, 0xc9, 0xf6, 0xd6, 0x28, 0x49,
- 0x74, 0xb9, 0x3e, 0x7c, 0x8c, 0xed, 0xbe, 0xb1, 0xef, 0x24, 0x5b, 0x63,
- 0x73, 0x63, 0x7b, 0x28, 0x0b, 0x24, 0x6f, 0x9e, 0x22, 0xc5, 0x3b, 0xde,
- 0xdc, 0xb3, 0xcf, 0x9f, 0x3d, 0xdd, 0xde, 0x56, 0xc2, 0x5f, 0x4e, 0xa2,
- 0x18, 0x53, 0x7d, 0x4a, 0x4e, 0x72, 0x8b, 0xf9, 0x42, 0x69, 0x82, 0x6f,
- 0xe0, 0x7b, 0xf5, 0x1c, 0x31, 0xf1, 0xe6, 0xe8, 0x1e, 0xd3, 0x57, 0x69,
- 0x11, 0xc9, 0x04, 0x87, 0x44, 0xb7, 0x66, 0x70, 0xaa, 0x32, 0xb1, 0x76,
- 0x9e, 0xf9, 0x95, 0x52, 0x01, 0xb1, 0x24, 0xe7, 0x87, 0xa2, 0x70, 0x06,
- 0x07, 0x15, 0x2d, 0xc1, 0x7d, 0x98, 0x2e, 0x78, 0xce, 0xd7, 0x1e, 0xfd,
- 0x41, 0xfb, 0xf9, 0x46, 0x49, 0x0c, 0xcf, 0x97, 0xe3, 0x99, 0xb9, 0x81,
- 0x46, 0xc4, 0xba, 0xfc, 0x29, 0x39, 0xcd, 0x85, 0x8d, 0x52, 0x6c, 0x05,
- 0x4d, 0xa3, 0x5b, 0x75, 0xe7, 0xf0, 0xc0, 0x51, 0xa6, 0x8d, 0xad, 0xd6,
- 0xca, 0x2b, 0x77, 0xf5, 0x7d, 0xac, 0xb7, 0xf5, 0x16, 0xfc, 0xad, 0x7a,
- 0x79, 0x35, 0x58, 0x35, 0xb0, 0x4f, 0x59, 0x1d, 0x9a, 0x71, 0x6f, 0x29,
- 0xba, 0x67, 0x2e, 0xec, 0x47, 0xcb, 0x27, 0x4b, 0xfc, 0xd8, 0x4e, 0xec,
- 0xb4, 0x7a, 0xe7, 0x1d, 0xe9, 0x9d, 0x00, 0x68, 0x20, 0x8f, 0x77, 0xf2,
- 0x92, 0x35, 0xcc, 0xd5, 0x4c, 0x80, 0x5a, 0x28, 0xeb, 0xeb, 0xa2, 0x50,
- 0xeb, 0xe1, 0x1d, 0x4e, 0xaf, 0x28, 0x7b, 0x95, 0x53, 0xf5, 0x66, 0x19,
- 0xc8, 0xcc, 0x49, 0x3e, 0x86, 0x15, 0xeb, 0xca, 0x09, 0x2f, 0x5e, 0x83,
- 0x44, 0x9c, 0x1f, 0xe2, 0xea, 0x45, 0x12, 0x56, 0x0a, 0xd0, 0x0d, 0x38,
- 0x81, 0x18, 0xeb, 0x81, 0x3d, 0xce, 0x66, 0x5e, 0xa6, 0x31, 0xc3, 0xae,
- 0x1d, 0x0b, 0xd0, 0x42, 0xdc, 0x9a, 0xbd, 0x65, 0xf2, 0x95, 0xd0, 0x77,
- 0x13, 0x63, 0x68, 0x9c, 0x99, 0xc9, 0x20, 0x9b, 0x38, 0xe9, 0x71, 0x7f,
- 0xa8, 0x20, 0x82, 0xae, 0x26, 0x0d, 0xb4, 0x22, 0x4d, 0x47, 0x0d, 0x07,
- 0x56, 0xbd, 0xa5, 0x7d, 0x98, 0xf4, 0x69, 0x24, 0xf2, 0x2a, 0xaa, 0xe4,
- 0x57, 0x9a, 0xed, 0xd3, 0xd3, 0x30, 0x71, 0x87, 0x9c, 0x55, 0x9a, 0xb3,
- 0xb3, 0x12, 0xa9, 0xc6, 0xe5, 0xe0, 0x39, 0x78, 0x65, 0x69, 0xd5, 0x4c,
- 0xa3, 0x83, 0x5e, 0x5c, 0x9f, 0xb6, 0x73, 0x00, 0xc2, 0x02, 0x18, 0xb7,
- 0x2d, 0xc3, 0x4f, 0xbf, 0xa2, 0x76, 0x3e, 0x25, 0x01, 0x37, 0x79, 0xb3,
- 0x0c, 0x85, 0xae, 0x04, 0x13, 0x51, 0xbb, 0x0c, 0x07, 0x36, 0xad, 0x84,
- 0x2b, 0x30, 0x86, 0x95, 0x47, 0x49, 0x81, 0x44, 0x37, 0x56, 0x27, 0x56,
- 0x48, 0xa0, 0x2a, 0x73, 0x56, 0xde, 0x05, 0x79, 0xc4, 0xe4, 0xa5, 0x75,
- 0xbd, 0x6b, 0x57, 0x88, 0x98, 0x06, 0xfe, 0xfc, 0x5f, 0xfa, 0xcb, 0x0f,
- 0x34, 0x59, 0xff, 0xad, 0x93, 0x25, 0xdd, 0x4e, 0x83, 0x12, 0x5a, 0x98,
- 0xd7, 0x7f, 0xc6, 0xa4, 0xfc, 0x95, 0x52, 0x5f, 0x78, 0x66, 0x08, 0xbc,
- 0x02, 0xcd, 0xfd, 0x79, 0x68, 0xd5, 0x68, 0x6d, 0x82, 0x4a, 0x02, 0xd9,
- 0x59, 0x30, 0xbe, 0x0f, 0x5c, 0x52, 0xb4, 0x07, 0x7f, 0x2e, 0xfa, 0x80,
- 0xe1, 0x34, 0x16, 0x5d, 0x0a, 0xd2, 0x71, 0x22, 0x94, 0xe3, 0x65, 0xfc,
- 0xb9, 0x12, 0x2c, 0x0a, 0x63, 0xcb, 0x98, 0x8e, 0x93, 0x9d, 0xc7, 0x3f,
- 0x8f, 0x1b, 0x16, 0x36, 0xa5, 0x4c, 0xe7, 0xb9, 0x05, 0x50, 0x62, 0x5a,
- 0x22, 0xa2, 0x54, 0x35, 0xc5, 0xc7, 0x8a, 0x0d, 0xc0, 0x5b, 0xb5, 0xbb,
- 0xf6, 0xa8, 0xdf, 0x17, 0xe0, 0x08, 0x7d, 0x95, 0x09, 0x7d, 0x6c, 0x24,
- 0xff, 0xcf, 0xff, 0xc5, 0xe9, 0x62, 0xff, 0x1d, 0xea, 0xbe, 0x67, 0x97,
- 0xc7, 0x07, 0xe8, 0xd2, 0x9f, 0x07, 0xf5, 0xfd, 0x7c, 0x5c, 0xce, 0xe4,
- 0xd4, 0xd1, 0xdc, 0x9b, 0x09, 0xd4, 0x9f, 0xf1, 0x1e, 0x41, 0x44, 0x67,
- 0xe0, 0x15, 0xb7, 0xf7, 0xa3, 0xb8, 0xe5, 0xb0, 0xc3, 0x92, 0x72, 0x32,
- 0x41, 0xd5, 0x11, 0x25, 0xb8, 0x9b, 0xd3, 0xf7, 0xe7, 0x44, 0x2b, 0xd6,
- 0x99, 0x9d, 0x4d, 0x78, 0xf8, 0x3c, 0x40, 0xb5, 0x78, 0x11, 0x52, 0x74,
- 0xfe, 0xbc, 0x8d, 0x62, 0xad, 0xa7, 0x18, 0x2c, 0x00, 0x09, 0x0b, 0xd3,
- 0xcd, 0x0f, 0xa8, 0x2a, 0xe2, 0x57, 0x8f, 0xf8, 0x47, 0x83, 0x4b, 0xfa,
- 0x91, 0x22, 0xec, 0x4b, 0x19, 0x2a, 0xed, 0x4e, 0x2d, 0x14, 0x25, 0xbe,
- 0xbf, 0xab, 0xb8, 0x48, 0x6d, 0x27, 0x70, 0x81, 0xcf, 0xb6, 0x08, 0x6f,
- 0x64, 0x3d, 0xd7, 0x1f, 0x98, 0xbd, 0x3e, 0xbf, 0xcd, 0xd6, 0xb7, 0xc6,
- 0xc1, 0x06, 0x23, 0x99, 0xe7, 0x20, 0x03, 0xf3, 0x52, 0x09, 0x5d, 0xd5,
- 0x3e, 0x83, 0xe6, 0x70, 0xcc, 0x6d, 0xf8, 0x50, 0x73, 0x9c, 0xc9, 0x04,
- 0x77, 0x8f, 0xa4, 0x87, 0x90, 0x73, 0xcd, 0xdc, 0xa9, 0xaa, 0x60, 0x34,
- 0x04, 0x1b, 0x43, 0x5e, 0x76, 0xb4, 0xfb, 0xc0, 0x58, 0x4b, 0x84, 0x0f,
- 0x39, 0xf1, 0x84, 0xbd, 0x66, 0x1c, 0xd6, 0x3a, 0xeb, 0x27, 0x2e, 0x0a,
- 0xca, 0x61, 0xcf, 0x8a, 0xc2, 0xa5, 0xeb, 0x9b, 0x73, 0xb1, 0x54, 0x89,
- 0x5f, 0x9c, 0x80, 0xb1, 0xb2, 0xe4, 0x1c, 0x35, 0xf4, 0x13, 0x85, 0x19,
- 0x73, 0xf2, 0xdb, 0x46, 0xa2, 0x91, 0x49, 0xcc, 0x8d, 0x87, 0x18, 0xda,
- 0x7f, 0x7a, 0x41, 0x59, 0xf6, 0x6d, 0x0d, 0xbc, 0x60, 0xac, 0x52, 0xc2,
- 0xaf, 0x6f, 0x8e, 0xb3, 0xb4, 0x9f, 0x47, 0xf8, 0xe2, 0xaf, 0x9a, 0xc5,
- 0x07, 0xb0, 0x23, 0x7f, 0xa0, 0x5c, 0x46, 0xac, 0x99, 0x46, 0x15, 0xf0,
- 0x03, 0x4c, 0x2d, 0x57, 0xb6, 0x2e, 0x17, 0xd4, 0x0e, 0x36, 0xf9, 0xac,
- 0x64, 0x93, 0xed, 0xa1, 0x61, 0xb4, 0xb3, 0x06, 0x7d, 0x80, 0x85, 0xad,
- 0x36, 0x3f, 0xd0, 0xd3, 0xa0, 0x63, 0x94, 0xa6, 0xf0, 0x01, 0xf1, 0x4d,
- 0xbb, 0x99, 0xcc, 0xcd, 0x97, 0x55, 0xf9, 0xc4, 0x27, 0xcb, 0xc3, 0x03,
- 0xd8, 0x4f, 0x8c, 0x1b, 0x47, 0x01, 0xcf, 0x28, 0x40, 0x66, 0xe7, 0xff,
- 0xe0, 0xff, 0x65, 0x6a, 0x40, 0xf2, 0x6b, 0x6a, 0x4a, 0x1c, 0xae, 0x40,
- 0xd3, 0x4d, 0xca, 0xbe, 0xf0, 0xc2, 0xd4, 0x21, 0x82, 0x71, 0xe7, 0xff,
- 0x80, 0xc0, 0xbb, 0x2f, 0x60, 0x46, 0xb3, 0x3c, 0xad, 0x6d, 0x0f, 0x79,
- 0x08, 0x8e, 0x22, 0x5a, 0xd0, 0x70, 0x1e, 0x3c, 0x87, 0x9c, 0xa8, 0x44,
- 0x0a, 0xc8, 0x70, 0xc5, 0xcc, 0x70, 0x7a, 0x69, 0x77, 0x66, 0x56, 0x4f,
- 0x88, 0x8e, 0x79, 0xb0, 0xfe, 0xdb, 0x8a, 0x1b, 0xb4, 0xc5, 0xf7, 0x3c,
- 0x6b, 0xe7, 0xdb, 0x9c, 0x54, 0x85, 0xcd, 0xd0, 0x01, 0x27, 0x7a, 0xe0,
- 0xd4, 0x6e, 0xb5, 0x79, 0x11, 0x57, 0xac, 0xb3, 0xad, 0xe1, 0x66, 0xa1,
- 0x41, 0x3f, 0x4b, 0x5c, 0x61, 0x37, 0x6b, 0xa5, 0x60, 0xef, 0xb6, 0xa2,
- 0x67, 0x76, 0x9f, 0x44, 0xb1, 0x97, 0xd7, 0x7c, 0xfe, 0xd9, 0x6e, 0x64,
- 0xff, 0x23, 0xc9, 0xf4, 0x43, 0xbe, 0xf0, 0x65, 0xd6, 0xc9, 0x79, 0x62,
- 0xd9, 0xca, 0x45, 0xa0, 0x72, 0x2e, 0x2a, 0x85, 0xe6, 0xe5, 0x07, 0x38,
- 0xd9, 0x0f, 0x4e, 0xe6, 0x04, 0x35, 0xaa, 0xec, 0x10, 0xf0, 0x8a, 0x88,
- 0x07, 0xaa, 0xa4, 0xa9, 0x7f, 0x80, 0xbc, 0x5e, 0x4f, 0x23, 0x81, 0xa8,
- 0x24, 0xe2, 0x2e, 0xf3, 0x87, 0xb4, 0xff, 0x62, 0xe5, 0x90, 0x18, 0x6d,
- 0x5d, 0x87, 0xc4, 0xfd, 0x6f, 0x91, 0x24, 0xb4, 0x07, 0xe2, 0xf5, 0xf4,
- 0x81, 0x21, 0xb9, 0x61, 0x3c, 0xd8, 0x13, 0xf3, 0xa5, 0x0f, 0x16, 0xbf,
- 0xd7, 0xdc, 0xcd, 0xf6, 0xc3, 0x46, 0x31, 0x71, 0xc0, 0xbe, 0x20, 0x17,
- 0x96, 0x3d, 0xca, 0x1d, 0x49, 0xe2, 0x1a, 0x75, 0x12, 0x51, 0xb0, 0x3b,
- 0xfb, 0xeb, 0x49, 0xb4, 0x0f, 0xca, 0x52, 0x58, 0xfb, 0x7d, 0x70, 0x3f,
- 0xe4, 0xe3, 0x42, 0x57, 0xdf, 0x55, 0x29, 0xcc, 0xa1, 0xb6, 0x3b, 0x0f,
- 0xf4, 0x81, 0x8f, 0xc0, 0xc3, 0xbd, 0xc0, 0x29, 0xfa, 0x50, 0xd7, 0x33,
- 0xda, 0xea, 0xf9, 0xd5, 0xbd, 0xe9, 0x52, 0xbd, 0x12, 0x58, 0xc0, 0xbf,
- 0x40, 0xf9, 0x39, 0x5d, 0x2c, 0xcf, 0x60, 0xde, 0xac, 0xe1, 0xd3, 0x5c,
- 0x64, 0x94, 0xa4, 0xc1, 0xc0, 0xb1, 0x0f, 0x6d, 0x46, 0xba, 0x86, 0xf1,
- 0x79, 0x17, 0xe7, 0x13, 0x39, 0x61, 0xd5, 0x85, 0x21, 0x31, 0xf7, 0xc2,
- 0x16, 0x7c, 0x50, 0x84, 0xb6, 0x5a, 0xa2, 0x46, 0x5c, 0x68, 0xbb, 0x3d,
- 0x21, 0x54, 0xae, 0x16, 0x4c, 0x88, 0xce, 0xfe, 0x07, 0x58, 0x94, 0x1c,
- 0x8f, 0x56, 0x6e, 0x5e, 0xcb, 0x3e, 0x9d, 0xca, 0xe6, 0xd0, 0x88, 0xf2,
- 0xe0, 0x94, 0xee, 0xc2, 0x59, 0x04, 0x18, 0x37, 0x89, 0x15, 0x7b, 0x83,
- 0x09, 0x05, 0xa9, 0xba, 0x6e, 0xad, 0xb7, 0x4a, 0x29, 0x3c, 0x64, 0xda,
- 0x68, 0xfc, 0x62, 0xa5, 0x8b, 0xd5, 0xba, 0x30, 0xb3, 0x66, 0x5b, 0x72,
- 0x94, 0x54, 0x51, 0x13, 0x92, 0x4d, 0x02, 0x36, 0xe3, 0x82, 0xab, 0x09,
- 0x31, 0x06, 0x48, 0x3a, 0x52, 0xba, 0xbe, 0x39, 0xed, 0x8d, 0x70, 0xe9,
- 0xc0, 0xd4, 0xba, 0x06, 0xec, 0x4b, 0xd9, 0xd9, 0x4a, 0xe6, 0x52, 0x89,
- 0xcc, 0x1c, 0x5d, 0xa6, 0x56, 0x64, 0x5d, 0xb2, 0xba, 0xc7, 0xc5, 0x78,
- 0x46, 0x72, 0x75, 0x04, 0xd7, 0x3f, 0x70, 0xbc, 0xad, 0x94, 0x12, 0x21,
- 0x05, 0x19, 0x55, 0x56, 0x1d, 0x29, 0xf4, 0xd0, 0xc5, 0x18, 0x15, 0x0c,
- 0x32, 0x06, 0x95, 0x51, 0xfe, 0x18, 0xfe, 0xc9, 0x22, 0x4a, 0x72, 0x24,
- 0xfd, 0x23, 0x47, 0x4b, 0x28, 0x3f, 0xde, 0xaa, 0x1d, 0xc0, 0x26, 0x15,
- 0x54, 0x4d, 0x13, 0x1b, 0x2f, 0xd8, 0x8e, 0xa2, 0xf0, 0x74, 0xd5, 0x38,
- 0xb3, 0x83, 0xfd, 0x2b, 0x0b, 0xe1, 0xe8, 0x07, 0xcf, 0x06, 0xc1, 0x18,
- 0x7d, 0xb0, 0x48, 0xef, 0x1c, 0xb8, 0x01, 0xb9, 0x71, 0x3a, 0x37, 0xf7,
- 0x39, 0x84, 0x01, 0x03, 0x52, 0x39, 0xc1, 0xa5, 0x4f, 0x47, 0x7c, 0x74,
- 0x68, 0x4d, 0x63, 0xc0, 0xeb, 0x5a, 0xd3, 0x4a, 0x32, 0xdb, 0x14, 0x42,
- 0xa9, 0x0f, 0x9c, 0x34, 0x42, 0x8a, 0x88, 0x7e, 0x51, 0x0f, 0xf1, 0xe3,
- 0xfa, 0x0f, 0xc3, 0x1d, 0x2a, 0xf2, 0x83, 0x72, 0xc7, 0x17, 0x11, 0xf1,
- 0x4f, 0x4b, 0x92, 0xf8, 0x23, 0x3f, 0xad, 0x79, 0xce, 0x61, 0x5b, 0x04,
- 0x72, 0xef, 0xd6, 0x81, 0xda, 0x4a, 0x29, 0x91, 0xe0, 0xda, 0x83, 0xe1,
- 0x67, 0x6a, 0x04, 0x67, 0xd0, 0x18, 0xd9, 0x59, 0x2f, 0x2b, 0xa6, 0x9e,
- 0x7e, 0x58, 0xc7, 0x53, 0x0f, 0x92, 0x6d, 0x8f, 0x80, 0xc7, 0xda, 0xfc,
- 0x00, 0x2b, 0x7a, 0x65, 0x87, 0xe8, 0xf7, 0x4a, 0x7e, 0xd8, 0xed, 0x93,
- 0xeb, 0xd4, 0xaf, 0xec, 0x15, 0xb7, 0xf7, 0x98, 0x3e, 0xfd, 0xfa, 0x7b,
- 0xad, 0x73, 0xb1, 0x75, 0xaf, 0xb2, 0xd6, 0x5d, 0xf5, 0x18, 0x61, 0xff,
- 0xc0, 0x55, 0xd6, 0xba, 0xad, 0x1e, 0x3e, 0xb3, 0xab, 0xae, 0xb2, 0xbd,
- 0xa8, 0x08, 0x61, 0xbc, 0x57, 0xfd, 0xbf, 0x37, 0x48, 0x79, 0xe1, 0xf4,
- 0xdb, 0x45, 0x99, 0x83, 0xf3, 0xb9, 0xe0, 0xac, 0x93, 0xae, 0x23, 0x32,
- 0x5a, 0x9d, 0x99, 0xc4, 0xf3, 0x94, 0xd5, 0xa1, 0xc2, 0x59, 0x64, 0xea,
- 0x17, 0x61, 0xc7, 0xc8, 0x30, 0xf1, 0x60, 0xb1, 0x1f, 0x12, 0xc8, 0xcf,
- 0x9f, 0xc4, 0xc7, 0x40, 0x1d, 0xfa, 0x27, 0x8d, 0x21, 0x74, 0x0a, 0x0d,
- 0x9d, 0x7d, 0xff, 0xb0, 0x04, 0x90, 0x6c, 0xea, 0xbe, 0x70, 0x1a, 0xd2,
- 0x2d, 0x65, 0xf3, 0xbe, 0xd1, 0x36, 0x23, 0x40, 0x92, 0x23, 0x98, 0x9d,
- 0xb5, 0x0f, 0x58, 0x3c, 0x78, 0x5c, 0xd3, 0x6f, 0xb9, 0x0c, 0xb1, 0x6d,
- 0x39, 0x44, 0xa7, 0x8c, 0xae, 0x85, 0x0f, 0xe9, 0x62, 0x21, 0xb7, 0xcd,
- 0xc3, 0x5b, 0x9e, 0x31, 0xbd, 0x98, 0xc1, 0x91, 0x38, 0x44, 0x80, 0x9e,
- 0xd6, 0x94, 0xe5, 0x47, 0x76, 0xa9, 0x72, 0x9e, 0x2e, 0x55, 0xcc, 0x25,
- 0x21, 0x8a, 0x68, 0xb0, 0xe5, 0x67, 0x96, 0x9d, 0x61, 0x67, 0x34, 0xfa,
- 0x76, 0x27, 0x6b, 0x26, 0x7a, 0xed, 0xed, 0xb8, 0xf4, 0x3f, 0x6b, 0x7e,
- 0x3f, 0xd0, 0x1c, 0x2e, 0x5e, 0xb0, 0x39, 0xd1, 0xe6, 0xb7, 0x7e, 0xed,
- 0x47, 0xec, 0x7d, 0x4c, 0x42, 0xdb, 0x16, 0xfd, 0x9d, 0x87, 0x29, 0x08,
- 0xa5, 0x3a, 0xba, 0x8e, 0x4b, 0x01, 0x9d, 0xde, 0x62, 0x3c, 0x41, 0x63,
- 0xa6, 0x3e, 0x7c, 0xb2, 0xdd, 0xe0, 0xa2, 0x43, 0x21, 0xcf, 0x0a, 0xa5,
- 0xfc, 0x2c, 0x17, 0xff, 0xf4, 0xf5, 0x44, 0x71, 0x8c, 0x0b, 0x27, 0x23,
- 0x41, 0xea, 0xe1, 0x0e, 0x2f, 0xc8, 0x89, 0xc1, 0x7e, 0x8a, 0x47, 0x08,
- 0xdd, 0x47, 0x77, 0xf9, 0xd1, 0x3d, 0xe6, 0xe2, 0x50, 0xe9, 0x01, 0x3a,
- 0x0c, 0xe7, 0xb4, 0x84, 0x80, 0x04, 0x4d, 0xf8, 0x3a, 0x2f, 0x1e, 0xe5,
- 0xdc, 0xd3, 0x2c, 0x1d, 0x4e, 0x7b, 0xc9, 0x06, 0xb6, 0x5d, 0x29, 0x4d,
- 0xe4, 0x40, 0x1c, 0xe1, 0x53, 0x3c, 0xd8, 0xbb, 0x54, 0x40, 0x58, 0xe9,
- 0x5a, 0xf0, 0x7c, 0xef, 0x13, 0xdd, 0x3f, 0x94, 0xc7, 0x93, 0x4f, 0x96,
- 0x54, 0x97, 0x1f, 0x61, 0x23, 0x0d, 0xdc, 0x58, 0x46, 0xe1, 0xe3, 0x8a,
- 0x9c, 0x5b, 0x0a, 0xcb, 0xaf, 0x58, 0x0b, 0xab, 0xd7, 0x3f, 0xb4, 0x3d,
- 0x08, 0x92, 0x78, 0x36, 0xb3, 0x76, 0xc0, 0x83, 0x57, 0x92, 0xb9, 0xce,
- 0x16, 0x3a, 0x3d, 0xb4, 0x2f, 0xb0, 0x4d, 0x78, 0x9b, 0xf6, 0xf5, 0x60,
- 0xf4, 0x93, 0x47, 0x6f, 0x05, 0x01, 0x63, 0x94, 0xb9, 0xf5, 0x40, 0x25,
- 0xe1, 0xa5, 0x05, 0xbc, 0x2c, 0xfd, 0x32, 0x9d, 0xa8, 0x69, 0xf7, 0x50,
- 0xef, 0x52, 0x66, 0x21, 0x6a, 0x4f, 0x02, 0xa7, 0x11, 0xb5, 0x14, 0x0a,
- 0xce, 0x8e, 0x7a, 0x9c, 0xed, 0x96, 0x5b, 0x3e, 0x51, 0x1b, 0xdd, 0xf3,
- 0xe6, 0xab, 0x1e, 0x3e, 0xde, 0x02, 0x89, 0x1a, 0xe4, 0xe8, 0x2b, 0x7a,
- 0xfe, 0xf8, 0xe3, 0xf3, 0x47, 0x08, 0x70, 0xc9, 0x52, 0x83, 0x56, 0xea,
- 0x8e, 0x8f, 0xe0, 0x27, 0xa3, 0xea, 0xe2, 0x91, 0xae, 0x10, 0xc2, 0x3b,
- 0xed, 0x1c, 0xa3, 0xae, 0x80, 0xd0, 0xa4, 0xcc, 0x59, 0x5d, 0x3e, 0xac,
- 0x05, 0xca, 0x0a, 0x78, 0x34, 0x22, 0x04, 0xbd, 0xcc, 0x17, 0xac, 0xb1,
- 0x85, 0xe8, 0xe8, 0x70, 0xf8, 0xe9, 0x11, 0x2e, 0x45, 0xa2, 0x70, 0x8e,
- 0x2e, 0x00, 0xeb, 0xe6, 0x6d, 0x4d, 0x3d, 0x9c, 0x65, 0x0b, 0x22, 0x88,
- 0xcc, 0x3d, 0xce, 0xaf, 0x7d, 0xcc, 0x26, 0x22, 0x87, 0x67, 0xe4, 0xac,
- 0x02, 0xd2, 0x5a, 0x8d, 0x32, 0x67, 0xf2, 0x39, 0xa7, 0x69, 0xc6, 0xf1,
- 0x27, 0x7a, 0xdd, 0xe1, 0x10, 0xc3, 0x08, 0x25, 0x7d, 0x72, 0xf0, 0x90,
- 0xab, 0x5d, 0xa3, 0x12, 0x94, 0x41, 0x8a, 0xea, 0xf2, 0xd9, 0xd4, 0xa3,
- 0x9e, 0x15, 0x8f, 0x84, 0x05, 0x61, 0x3e, 0x58, 0xdf, 0x9c, 0xc2, 0xb7,
- 0xff, 0x81, 0x48, 0x7c, 0x9f, 0x52, 0x73, 0x06, 0xa2, 0x55, 0x15, 0x75,
- 0x8a, 0x6b, 0xc8, 0x06, 0xf7, 0xe0, 0x04, 0x26, 0x89, 0xdf, 0x26, 0x3c,
- 0x6c, 0xb3, 0x19, 0xd5, 0x4d, 0x19, 0x14, 0xa3, 0x91, 0x56, 0x4f, 0xd1,
- 0x6d, 0xdc, 0x16, 0xc6, 0xa2, 0x4e, 0xb9, 0xa6, 0xb4, 0x30, 0x02, 0xa1,
- 0xe1, 0xe0, 0x82, 0x04, 0x62, 0xa8, 0x2b, 0xb9, 0xd1, 0xea, 0x90, 0x67,
- 0xe1, 0x40, 0xfe, 0x22, 0x55, 0x15, 0x52, 0xed, 0x88, 0xaf, 0x59, 0x7f,
- 0xdd, 0xa7, 0xe9, 0xf5, 0xb0, 0xac, 0x72, 0xba, 0x6f, 0x90, 0x34, 0xaa,
- 0xad, 0xd1, 0xc6, 0xef, 0x43, 0x9a, 0x90, 0xf5, 0x18, 0x6b, 0x4e, 0x02,
- 0x6b, 0x89, 0xc2, 0xf5, 0xb5, 0xdb, 0x9d, 0x63, 0xb3, 0x22, 0xe6, 0x66,
- 0xdb, 0x74, 0xd4, 0x96, 0xb1, 0x58, 0xb8, 0x94, 0x89, 0x25, 0x8e, 0xe9,
- 0x4f, 0x93, 0x5e, 0xec, 0x90, 0xdd, 0x58, 0x29, 0x0a, 0x7b, 0x97, 0x56,
- 0x28, 0x78, 0x0e, 0x7c, 0x51, 0x79, 0x5d, 0x2f, 0xb1, 0x60, 0x6f, 0x4e,
- 0x4e, 0x8f, 0x6d, 0x56, 0xdb, 0xff, 0xda, 0x19, 0xd2, 0x84, 0x57, 0x93,
- 0x20, 0x87, 0x8f, 0x2b, 0x0d, 0xbd, 0xb2, 0x51, 0x29, 0x45, 0xfc, 0xae,
- 0xcf, 0xac, 0x68, 0xf8, 0x71, 0xab, 0x0e, 0xf1, 0xf8, 0xdd, 0xf7, 0x27,
- 0x17, 0x67, 0xef, 0xde, 0x1e, 0xbf, 0xbb, 0xdc, 0xf0, 0xc4, 0x5d, 0x0c,
- 0xf3, 0xbb, 0x0e, 0xd3, 0x0b, 0x72, 0x0a, 0x07, 0xdd, 0xa1, 0x54, 0x8c,
- 0x91, 0xf7, 0xcd, 0x38, 0xe5, 0x5f, 0x43, 0xbf, 0x39, 0xef, 0x21, 0xf5,
- 0xec, 0x53, 0x22, 0xc9, 0x82, 0x1c, 0x3b, 0x53, 0x8a, 0xaa, 0x0e, 0x39,
- 0x16, 0x60, 0x59, 0x25, 0x09, 0x76, 0xfc, 0x13, 0xc1, 0xbc, 0x22, 0x15,
- 0x98, 0x2a, 0x8c, 0x36, 0xec, 0x94, 0x70, 0x14, 0xd0, 0xc5, 0x4a, 0x5b,
- 0x9d, 0x70, 0x9b, 0xfb, 0x3d, 0x57, 0xc2, 0xc6, 0xf1, 0xcb, 0xb9, 0x82,
- 0xa1, 0x71, 0xac, 0xd4, 0x5c, 0xae, 0xac, 0xb1, 0x17, 0x71, 0xdc, 0x24,
- 0x5e, 0x0e, 0xa8, 0x2b, 0x23, 0xf7, 0x09, 0x30, 0xbb, 0x08, 0xf7, 0xde,
- 0x28, 0x7e, 0x52, 0x6f, 0xd1, 0xc1, 0xce, 0xce, 0x2f, 0xe0, 0x5e, 0xfd,
- 0x52, 0xc8, 0x57, 0x43, 0x88, 0xc0, 0xda, 0xeb, 0x88, 0x48, 0x5c, 0xaf,
- 0x06, 0x8d, 0xf6, 0xad, 0x9d, 0x4e, 0xb8, 0x81, 0x3f, 0x9c, 0x5f, 0x9c,
- 0xfd, 0xf8, 0x97, 0xdf, 0xf9, 0x13, 0x5e, 0xb2, 0xd9, 0x4f, 0x94, 0x83,
- 0xa9, 0x8d, 0xff, 0xf2, 0x9b, 0xbe, 0xb6, 0xf6, 0x73, 0xed, 0xf6, 0xfb,
- 0x6d, 0x8a, 0xf0, 0x20, 0x70, 0x8e, 0x12, 0x5f, 0xe6, 0x44, 0xd1, 0x82,
- 0x5f, 0xe7, 0xe1, 0xb0, 0x89, 0x40, 0x7c, 0xbf, 0xd5, 0x3e, 0x86, 0x09,
- 0x9c, 0x4a, 0x69, 0x08, 0x8b, 0x3a, 0xe4, 0xc2, 0x53, 0x97, 0xc1, 0xab,
- 0xb5, 0xc7, 0x54, 0x5f, 0xcc, 0x15, 0xc8, 0xc8, 0x48, 0xb5, 0xf3, 0x71,
- 0x78, 0x7a, 0xfa, 0xdb, 0x27, 0x41, 0x59, 0xad, 0xdb, 0xd3, 0x00, 0x0a,
- 0x4b, 0x3b, 0xa0, 0x81, 0xd5, 0x51, 0xf5, 0x08, 0xac, 0x43, 0x6a, 0x7c,
- 0x77, 0x26, 0xbd, 0x79, 0x09, 0xe5, 0x78, 0x50, 0x67, 0x46, 0xa5, 0x4d,
- 0x29, 0xe2, 0xaf, 0xb0, 0xb3, 0xd4, 0xb1, 0x7a, 0x87, 0x13, 0x27, 0x03,
- 0x14, 0x5c, 0xff, 0x21, 0xce, 0xaa, 0xe4, 0xf9, 0xe4, 0xa2, 0x38, 0x94,
- 0x2d, 0x94, 0x16, 0xbb, 0x86, 0xb9, 0x74, 0x85, 0x54, 0xf9, 0x2a, 0x89,
- 0x90, 0x75, 0x32, 0x86, 0x00, 0xdd, 0xb7, 0x55, 0x5e, 0x7f, 0x44, 0x51,
- 0x07, 0x9d, 0x50, 0x68, 0x48, 0x5a, 0xe5, 0x4d, 0x2a, 0x2f, 0xfa, 0x34,
- 0x64, 0x20, 0x0a, 0x57, 0x4f, 0x97, 0xd7, 0xb1, 0xde, 0x81, 0xf5, 0x84,
- 0xaf, 0x62, 0x72, 0xa3, 0xb2, 0x13, 0x3a, 0x6d, 0x15, 0x77, 0x09, 0x74,
- 0x2f, 0x67, 0x50, 0xd5, 0xb6, 0x1a, 0x3d, 0x56, 0xbc, 0xdc, 0xd7, 0xa2,
- 0x54, 0xcb, 0x82, 0x9d, 0x37, 0x75, 0x36, 0xbb, 0x5a, 0x81, 0x7d, 0xef,
- 0x0b, 0x0c, 0x27, 0x31, 0xb4, 0x14, 0xdc, 0x32, 0x0a, 0xbb, 0x0d, 0x4e,
- 0x90, 0x0d, 0x88, 0x2c, 0x84, 0xfe, 0x3a, 0xd9, 0x89, 0xb6, 0x46, 0x80,
- 0x84, 0x87, 0x95, 0x1e, 0x36, 0x8e, 0x2f, 0xb4, 0x65, 0xf4, 0x71, 0x5d,
- 0xdb, 0x57, 0xd3, 0xb0, 0x60, 0xca, 0x88, 0x24, 0x1f, 0xe5, 0x41, 0x73,
- 0xf2, 0x06, 0x9f, 0x12, 0x85, 0x97, 0xe0, 0x95, 0x6a, 0x3d, 0x23, 0xbf,
- 0x79, 0x4c, 0x73, 0x29, 0x3c, 0x5f, 0xca, 0xcc, 0x43, 0xd8, 0xe8, 0x15,
- 0xa1, 0xb5, 0x4b, 0x64, 0x43, 0x70, 0x6d, 0x00, 0xc8, 0x12, 0xa9, 0x93,
- 0xf0, 0x3a, 0x1e, 0xb6, 0xfc, 0x88, 0x9e, 0x46, 0x62, 0xc3, 0xe6, 0x31,
- 0x72, 0xc2, 0x33, 0xd4, 0x88, 0xdf, 0x9e, 0xed, 0x28, 0xe0, 0x1a, 0xb9,
- 0x97, 0xac, 0xc7, 0x29, 0xe0, 0x52, 0x16, 0x0b, 0xc2, 0xc5, 0xd3, 0x97,
- 0xb0, 0xe1, 0x50, 0x0c, 0xe2, 0x48, 0xad, 0xeb, 0xa4, 0x55, 0xfd, 0xac,
- 0xa5, 0x43, 0x2e, 0xd6, 0x8e, 0x68, 0x4b, 0x77, 0x46, 0x11, 0x7d, 0xc9,
- 0x04, 0x68, 0x0f, 0xa1, 0x12, 0x5b, 0x75, 0xc0, 0x67, 0x8b, 0xab, 0xeb,
- 0xc6, 0x8a, 0xda, 0xa0, 0xb1, 0x2d, 0xaa, 0xe6, 0x9e, 0x95, 0x75, 0x0c,
- 0x74, 0x71, 0x4c, 0x69, 0xf3, 0x19, 0x68, 0x1a, 0xf8, 0xc8, 0x9b, 0xff,
- 0x5e, 0x9e, 0x1d, 0x9d, 0x9d, 0x9a, 0xbf, 0x1c, 0xbf, 0x39, 0xf9, 0xd1,
- 0x69, 0x05, 0x0c, 0x63, 0xe0, 0x6a, 0xd3, 0x38, 0x7e, 0xae, 0x24, 0xd5,
- 0xbe, 0x38, 0xe6, 0x24, 0xc4, 0x00, 0x21, 0x87, 0xb3, 0x0c, 0x37, 0xdc,
- 0x84, 0xa9, 0x9c, 0x13, 0x9e, 0xe9, 0x16, 0x67, 0xb4, 0xc0, 0xf3, 0x90,
- 0x16, 0xcd, 0xad, 0xda, 0x5a, 0x0a, 0x37, 0xc9, 0x27, 0x2d, 0x11, 0x07,
- 0xcd, 0xca, 0xd7, 0x1c, 0xda, 0xc2, 0x91, 0x3b, 0x85, 0x24, 0x8c, 0x5c,
- 0x41, 0x63, 0xf8, 0x87, 0x1b, 0xb6, 0x00, 0x56, 0x98, 0x0c, 0x99, 0x91,
- 0x80, 0x32, 0x78, 0x7c, 0xd4, 0xe7, 0x22, 0xeb, 0x7b, 0x83, 0x54, 0x85,
- 0xb7, 0xa9, 0x32, 0x08, 0x46, 0xe4, 0x35, 0xb5, 0xb0, 0x20, 0x3a, 0x3b,
- 0x82, 0xb6, 0x82, 0x6b, 0xae, 0x3d, 0x26, 0x99, 0x00, 0x49, 0xe5, 0x43,
- 0x6e, 0x05, 0x29, 0xf2, 0x1e, 0x10, 0x8c, 0xec, 0xd6, 0x68, 0xb9, 0x20,
- 0x97, 0x29, 0xd1, 0x1f, 0xae, 0x13, 0x2a, 0x52, 0x2f, 0x3d, 0x5e, 0x5e,
- 0xbe, 0x11, 0x34, 0x28, 0xb5, 0x08, 0x4d, 0x2b, 0x5a, 0x03, 0x51, 0xf6,
- 0xdb, 0x1a, 0x47, 0xbd, 0xe6, 0xd3, 0xe1, 0x04, 0x04, 0x59, 0xd7, 0x4c,
- 0x4c, 0xbd, 0xae, 0x0d, 0xd2, 0x08, 0xff, 0xb6, 0xcc, 0x6f, 0x53, 0xd4,
- 0x96, 0x11, 0x9b, 0xba, 0xb0, 0x59, 0x77, 0xda, 0x48, 0x7f, 0x53, 0x23,
- 0x69, 0xbb, 0x95, 0x67, 0xbf, 0xa5, 0x91, 0x67, 0x9d, 0x36, 0x6e, 0x7e,
- 0x53, 0x23, 0x03, 0xbd, 0x20, 0x8c, 0x62, 0xfc, 0xe3, 0xc9, 0x65, 0x72,
- 0x74, 0xf6, 0xda, 0x1d, 0xb0, 0x4b, 0xc9, 0x07, 0xa4, 0x2d, 0x90, 0x8c,
- 0x97, 0x85, 0xd9, 0x83, 0x44, 0xa5, 0x01, 0x1e, 0x4c, 0x6a, 0x87, 0xf3,
- 0x14, 0x29, 0x09, 0xa7, 0xd6, 0x92, 0xb5, 0xbc, 0x62, 0xc4, 0x1a, 0x4a,
- 0xac, 0x81, 0xf7, 0xc6, 0xab, 0xd1, 0xa5, 0x87, 0xe7, 0x04, 0x87, 0x73,
- 0xad, 0xf7, 0x2f, 0x9d, 0x48, 0x42, 0x44, 0x4b, 0x2b, 0x2d, 0x29, 0x1d,
- 0xa7, 0x04, 0x79, 0x53, 0x70, 0x6d, 0x24, 0x15, 0xa5, 0x84, 0x00, 0xb5,
- 0xda, 0x9c, 0x8f, 0x53, 0x6b, 0x74, 0xe7, 0xbc, 0xd1, 0x9e, 0xf8, 0x99,
- 0x84, 0x7b, 0x9a, 0xeb, 0xdf, 0xda, 0xe9, 0x42, 0x4e, 0x84, 0xcb, 0x8f,
- 0x92, 0xba, 0x91, 0xe8, 0x02, 0x39, 0x42, 0x4a, 0x71, 0xe1, 0x72, 0xf6,
- 0x99, 0xa2, 0x34, 0xb8, 0xb1, 0x6d, 0x13, 0xf6, 0x3b, 0xfb, 0x12, 0x4a,
- 0x30, 0x2a, 0x3a, 0x7b, 0x0d, 0x24, 0xaf, 0x2c, 0xff, 0xbb, 0xa7, 0xa0,
- 0x3f, 0xb1, 0xfa, 0x98, 0x19, 0xf9, 0x0c, 0xbc, 0x9f, 0x53, 0x3e, 0x11,
- 0xf5, 0xbd, 0xb9, 0xd4, 0x3f, 0xc1, 0x20, 0x27, 0xeb, 0x49, 0x40, 0x7f,
- 0xdc, 0x9b, 0x4f, 0x45, 0x2b, 0xb3, 0xe0, 0x42, 0x65, 0x65, 0xed, 0x51,
- 0xb5, 0xe4, 0x9d, 0xc7, 0x42, 0x2b, 0xa4, 0x21, 0x52, 0xcc, 0x94, 0xe4,
- 0x08, 0x87, 0x85, 0xc7, 0x4b, 0x62, 0x96, 0xfa, 0x55, 0xad, 0xb8, 0x2e,
- 0xd9, 0xb5, 0xe9, 0xb1, 0x4c, 0x59, 0x4c, 0x18, 0xf3, 0x29, 0xcc, 0xd7,
- 0x80, 0x19, 0x36, 0x82, 0xba, 0x74, 0x57, 0x81, 0xa9, 0x36, 0xc7, 0xb4,
- 0xc4, 0x04, 0xf6, 0x91, 0xca, 0x4b, 0x84, 0xc8, 0xe6, 0x17, 0xf7, 0x4c,
- 0x6c, 0x95, 0x16, 0x5c, 0x69, 0xa8, 0x2b, 0x10, 0xaf, 0xb9, 0x73, 0x35,
- 0x4f, 0xcf, 0xf8, 0x8f, 0x23, 0xd5, 0xd9, 0xb4, 0x6e, 0x28, 0xb1, 0xea,
- 0xda, 0xa5, 0x85, 0x07, 0x12, 0x13, 0xa7, 0x04, 0x98, 0x03, 0xdd, 0x43,
- 0x5c, 0x47, 0x10, 0x99, 0x84, 0xba, 0xe3, 0xe3, 0x7c, 0xde, 0xf9, 0x8a,
- 0x7e, 0x84, 0x81, 0x7f, 0xdc, 0x17, 0x7c, 0x9f, 0xbc, 0xce, 0xa0, 0x3c,
- 0xeb, 0xb5, 0xf6, 0x59, 0x77, 0x5f, 0x78, 0x9e, 0x7d, 0xb4, 0x68, 0x9f,
- 0xfc, 0x5c, 0x7c, 0x11, 0x19, 0x15, 0x2d, 0x8a, 0xe6, 0x5c, 0x65, 0x8b,
- 0x99, 0xc8, 0x4c, 0xf9, 0x09, 0x42, 0xc7, 0xf0, 0x27, 0x60, 0x96, 0x27,
- 0xda, 0x4b, 0xa3, 0x0e, 0xfb, 0xa6, 0xe0, 0x0b, 0xf9, 0xac, 0x91, 0xbb,
- 0xac, 0x39, 0x98, 0x6d, 0x50, 0xe4, 0x76, 0xb7, 0x09, 0x61, 0x30, 0x7e,
- 0x44, 0xe9, 0x8d, 0xe6, 0x6e, 0x2a, 0xed, 0xbf, 0xf5, 0x8d, 0x10, 0x0f,
- 0x8d, 0xaf, 0x2f, 0xe7, 0x4b, 0xc6, 0x78, 0x97, 0x15, 0x97, 0xed, 0x3a,
- 0x0c, 0x40, 0x64, 0xb2, 0xa7, 0x45, 0xc3, 0x03, 0xae, 0x08, 0xb9, 0x6d,
- 0x98, 0xbc, 0x2d, 0x03, 0x8c, 0xc2, 0xf2, 0xaa, 0x91, 0xca, 0x7b, 0xca,
- 0x4c, 0xe4, 0xd9, 0xb9, 0x49, 0x8b, 0xeb, 0x8c, 0x5d, 0x2f, 0x1e, 0x84,
- 0x21, 0xf3, 0x2c, 0xc9, 0x65, 0x68, 0x8e, 0x3a, 0xd4, 0x97, 0x22, 0xd2,
- 0xbb, 0x2e, 0x6a, 0xf6, 0xde, 0xae, 0x9d, 0x07, 0x61, 0x51, 0x41, 0x79,
- 0x0a, 0x4d, 0xc4, 0x0f, 0x00, 0xae, 0xbb, 0x4b, 0x99, 0x65, 0x51, 0xb9,
- 0x88, 0x9d, 0xc9, 0xa2, 0x0b, 0x45, 0x81, 0xb5, 0x30, 0x4f, 0x1a, 0xf9,
- 0x3b, 0x29, 0x3b, 0xd5, 0x38, 0xd3, 0x93, 0xcb, 0x1b, 0xe5, 0xb6, 0xea,
- 0xc3, 0x0c, 0xb7, 0xe2, 0x91, 0xc3, 0xac, 0xd0, 0xae, 0xa9, 0x32, 0x66,
- 0x85, 0x47, 0x86, 0xd0, 0x8d, 0xbc, 0x6c, 0x0e, 0xaa, 0x81, 0x61, 0x30,
- 0x5d, 0x6f, 0x3c, 0x7b, 0x6e, 0x3c, 0x77, 0xd8, 0x29, 0xe7, 0x87, 0xa3,
- 0x91, 0xee, 0x93, 0xa3, 0x70, 0x4b, 0x88, 0xcf, 0x12, 0x40, 0x2b, 0x52,
- 0x25, 0x1d, 0xaa, 0x8a, 0xd2, 0x46, 0x27, 0xc9, 0x60, 0x8f, 0x65, 0xda,
- 0x6b, 0x16, 0xcc, 0xf1, 0xe1, 0xde, 0xb5, 0x26, 0x91, 0x3d, 0xd8, 0x1d,
- 0x14, 0x90, 0x38, 0xc3, 0x3d, 0xc7, 0x2b, 0x69, 0x9a, 0x51, 0x8e, 0xac,
- 0x32, 0x9e, 0x74, 0x43, 0x23, 0x77, 0xda, 0xbc, 0xc9, 0x7b, 0x4f, 0x22,
- 0x83, 0xfe, 0x9e, 0x47, 0xd5, 0xff, 0x47, 0x06, 0xfd, 0x7d, 0x64, 0xd0,
- 0x4f, 0xed, 0xb7, 0xf8, 0x53, 0xfb, 0xfb, 0x9f, 0x49, 0x55, 0x05, 0xfb,
- 0xe8, 0xa8, 0xe8, 0xdf, 0x0a, 0x20, 0xfe, 0x1a, 0x8f, 0xd8, 0x3c, 0x38,
- 0x50, 0x54, 0xdd, 0x20, 0xcb, 0xdf, 0x1d, 0x5e, 0xef, 0x53, 0xcf, 0xdc,
- 0xb0, 0x8c, 0xea, 0x4d, 0xed, 0x91, 0x56, 0xcf, 0x72, 0x26, 0x10, 0x3f,
- 0x6a, 0xcc, 0x91, 0x1e, 0x7e, 0x47, 0x19, 0x54, 0x4d, 0x3c, 0xf5, 0x57,
- 0xbb, 0xe1, 0x7d, 0xe7, 0xb9, 0x75, 0xa3, 0xec, 0xec, 0x6b, 0x08, 0xfd,
- 0x50, 0xc9, 0xe9, 0xb1, 0x35, 0xa7, 0x59, 0x63, 0xd6, 0xc4, 0x79, 0x00,
- 0xb9, 0xe6, 0xee, 0xaa, 0x4a, 0x81, 0xc9, 0x3b, 0x4b, 0xef, 0x23, 0x90,
- 0x4c, 0xe2, 0x29, 0x66, 0x73, 0xc5, 0x9c, 0xcf, 0xeb, 0xac, 0x20, 0x4b,
- 0x01, 0x8a, 0x80, 0xb8, 0xcd, 0xc8, 0x0f, 0x8b, 0xa8, 0xf9, 0x95, 0x75,
- 0xd5, 0xca, 0x57, 0x03, 0x38, 0x80, 0x5a, 0xc8, 0xad, 0xf8, 0xcc, 0x88,
- 0x96, 0x10, 0x47, 0x10, 0xdb, 0xfb, 0xcc, 0xce, 0x9b, 0x5d, 0x09, 0xf2,
- 0x6c, 0x31, 0x46, 0x88, 0x37, 0x75, 0x2a, 0x4c, 0x34, 0x20, 0x20, 0x3c,
- 0x13, 0x88, 0xd2, 0x45, 0x08, 0xd6, 0x2b, 0x4f, 0x41, 0xdc, 0x63, 0x69,
- 0x7c, 0x4e, 0xb2, 0x4e, 0x60, 0x59, 0x87, 0xc9, 0x19, 0xbc, 0x70, 0x2d,
- 0x20, 0x6a, 0xae, 0x04, 0x4a, 0x5d, 0xd1, 0x68, 0x7b, 0xe3, 0xbe, 0xf0,
- 0x56, 0x58, 0x7b, 0xa5, 0xd9, 0x2f, 0x3b, 0x22, 0x66, 0x1d, 0xa4, 0x9d,
- 0xfa, 0x9a, 0xb3, 0xe4, 0xe2, 0xf8, 0xf2, 0x02, 0x81, 0x5e, 0x12, 0x00,
- 0x01, 0x94, 0x66, 0x5a, 0x6d, 0x5b, 0xf8, 0x52, 0x91, 0x66, 0x4e, 0x0f,
- 0x71, 0x02, 0x82, 0x51, 0xae, 0xec, 0x7a, 0xf3, 0x3f, 0xf5, 0x3d, 0xae,
- 0x7e, 0xc9, 0xb4, 0xd6, 0xc4, 0x85, 0x74, 0xda, 0xf8, 0x5b, 0xfb, 0xfb,
- 0x2e, 0x0b, 0x09, 0xbc, 0x97, 0x7c, 0xcb, 0x49, 0x26, 0xf9, 0x50, 0x92,
- 0x36, 0xb5, 0xfa, 0x42, 0x79, 0x8e, 0xe8, 0x21, 0x4e, 0xc6, 0x2e, 0xab,
- 0x98, 0xde, 0x21, 0x9f, 0xb6, 0x0a, 0x80, 0x74, 0xc2, 0x2f, 0x4c, 0xe0,
- 0x6a, 0x70, 0x4f, 0x82, 0x72, 0x0d, 0xe0, 0xd3, 0xdd, 0x08, 0xb6, 0x7e,
- 0x3a, 0x36, 0x42, 0x55, 0xb4, 0x39, 0xa9, 0xea, 0xc1, 0x2b, 0xec, 0x35,
- 0x85, 0x7a, 0x59, 0x93, 0xad, 0x31, 0xb8, 0x22, 0x37, 0x26, 0xcd, 0x58,
- 0x68, 0x54, 0xec, 0xb3, 0x8c, 0xf9, 0x01, 0x65, 0x46, 0x32, 0x67, 0x6d,
- 0xc9, 0xc2, 0x15, 0x48, 0xca, 0xab, 0x98, 0x6a, 0x92, 0x31, 0x6a, 0x82,
- 0xc5, 0xfb, 0x1d, 0xf4, 0x2c, 0x90, 0xdf, 0xfb, 0xcf, 0x22, 0x3b, 0x22,
- 0x19, 0x5d, 0x9e, 0x5d, 0x28, 0x10, 0x6c, 0x78, 0x3f, 0x23, 0xf3, 0x81,
- 0x9e, 0xb0, 0x50, 0x2b, 0xfd, 0x10, 0x72, 0x67, 0x6a, 0xf1, 0x01, 0x2c,
- 0xd6, 0xa5, 0xf7, 0x55, 0x96, 0x00, 0x20, 0x57, 0x92, 0xb1, 0x7d, 0x2f,
- 0x80, 0x00, 0x8a, 0xea, 0xaa, 0xe7, 0xd2, 0x7b, 0x89, 0x8f, 0xd9, 0x19,
- 0x9f, 0x5f, 0xae, 0x5f, 0xa7, 0x7d, 0x24, 0x95, 0xec, 0x84, 0x0a, 0x2b,
- 0xe9, 0xb0, 0x96, 0x05, 0xae, 0xbb, 0x17, 0xf9, 0x10, 0x9d, 0x39, 0xe0,
- 0x5e, 0x96, 0xf0, 0x32, 0x48, 0x6b, 0x19, 0x83, 0x89, 0x90, 0xe4, 0x04,
- 0x03, 0xdb, 0x4a, 0x62, 0x53, 0xca, 0xbe, 0xb0, 0x49, 0x00, 0xfe, 0x5d,
- 0x56, 0x53, 0x49, 0x5f, 0x91, 0x8b, 0x53, 0x8d, 0x05, 0xa7, 0x67, 0x7b,
- 0xb7, 0xfe, 0xf9, 0xd9, 0xc5, 0x65, 0x62, 0x2f, 0x7d, 0x7c, 0x19, 0x3f,
- 0xea, 0x1c, 0x20, 0x22, 0xd6, 0x80, 0xcf, 0xce, 0x95, 0x6d, 0x04, 0x0e,
- 0x49, 0xb1, 0x09, 0x9a, 0x4e, 0x13, 0x7d, 0x30, 0x71, 0x4e, 0x4b, 0xc6,
- 0xf2, 0x71, 0xe1, 0x47, 0x41, 0xe9, 0xc2, 0x3d, 0xb3, 0x8a, 0xd5, 0xcf,
- 0x29, 0xb7, 0x4f, 0xf6, 0x22, 0x3b, 0x83, 0xac, 0xe8, 0x8b, 0xe3, 0xd1,
- 0x25, 0xcf, 0x18, 0xfd, 0x2d, 0xe8, 0x37, 0x17, 0x88, 0xca, 0x0f, 0x03,
- 0x43, 0xc5, 0xee, 0x0c, 0x4a, 0x40, 0x33, 0xd6, 0x06, 0xda, 0xb7, 0x05,
- 0xee, 0xde, 0x8c, 0x3d, 0xf1, 0xb2, 0x0d, 0x21, 0x35, 0x65, 0x9f, 0xe0,
- 0x80, 0xe3, 0x07, 0x3d, 0xf9, 0x48, 0xcf, 0x28, 0x66, 0x7c, 0x20, 0x5a,
- 0x20, 0xdd, 0x4f, 0x9e, 0x7a, 0x92, 0x82, 0xee, 0x29, 0x69, 0xe0, 0x44,
- 0x29, 0x14, 0xe9, 0x87, 0x03, 0xdd, 0x2a, 0xb8, 0x2c, 0x78, 0x53, 0xf0,
- 0x73, 0xae, 0x9d, 0x67, 0x52, 0xa2, 0x7e, 0x6a, 0x55, 0x05, 0xaf, 0x2b,
- 0xf4, 0x63, 0xcd, 0xf8, 0x81, 0xda, 0xd6, 0xd9, 0x72, 0x4f, 0x78, 0xa7,
- 0x7f, 0x6d, 0x36, 0xba, 0xcd, 0x5a, 0xe4, 0xa1, 0xfb, 0xf7, 0x82, 0xd1,
- 0xb5, 0xf2, 0x62, 0x99, 0x41, 0x47, 0x4b, 0xab, 0x19, 0x11, 0x02, 0x18,
- 0x19, 0x52, 0x49, 0x01, 0xd9, 0x5d, 0x11, 0x03, 0x2f, 0xf6, 0xbe, 0x21,
- 0xf7, 0xcf, 0xc9, 0xe9, 0xb1, 0x5b, 0x29, 0x66, 0x13, 0xc0, 0x09, 0x76,
- 0xba, 0x3e, 0xd1, 0x1e, 0xdb, 0x6b, 0x62, 0x98, 0x9c, 0x13, 0x9f, 0x2d,
- 0xf4, 0xa6, 0xfa, 0x3f, 0x5c, 0x6b, 0x7c, 0x48, 0xe0, 0x81, 0x37, 0xd7,
- 0x26, 0xcc, 0x94, 0xbc, 0x30, 0x0b, 0x8b, 0x9f, 0xd0, 0x5f, 0x3d, 0xe4,
- 0xeb, 0x60, 0xb8, 0x2f, 0xdc, 0xcb, 0xb5, 0x19, 0x8a, 0x31, 0xd0, 0xbb,
- 0x8f, 0x3c, 0x95, 0x7d, 0x65, 0xac, 0x77, 0x34, 0x61, 0x65, 0x33, 0x9d,
- 0x65, 0xa1, 0x14, 0x99, 0x72, 0x0b, 0x57, 0xfa, 0x4c, 0x4b, 0x86, 0x7b,
- 0x4d, 0xf1, 0x65, 0x70, 0x38, 0xb6, 0x34, 0x33, 0x94, 0x26, 0x4c, 0x8a,
- 0x9c, 0x69, 0xab, 0x20, 0x49, 0x3b, 0xb3, 0xb9, 0xf6, 0x36, 0x0c, 0x4c,
- 0xb2, 0x72, 0xac, 0xc7, 0x86, 0x46, 0xd2, 0x9d, 0xdc, 0x0e, 0x39, 0xef,
- 0x53, 0xde, 0x89, 0x76, 0xdb, 0xd8, 0xfb, 0xab, 0xd5, 0x3b, 0xc9, 0x4f,
- 0x16, 0xd0, 0x3b, 0x72, 0x1a, 0x50, 0x3c, 0xc0, 0x5c, 0xf0, 0xbe, 0xf2,
- 0xff, 0xf4, 0x99, 0x6b, 0xea, 0x8a, 0x6a, 0x3a, 0x6d, 0x5b, 0x4e, 0xf6,
- 0x58, 0xae, 0x01, 0x46, 0x60, 0xc0, 0x63, 0x62, 0x31, 0x62, 0x0a, 0xc2,
- 0x8a, 0xcd, 0xf6, 0xbd, 0xf1, 0xf4, 0x33, 0x31, 0x7d, 0xc9, 0xf6, 0x2d,
- 0xee, 0x5d, 0xee, 0xfd, 0x90, 0xa3, 0xca, 0xec, 0x37, 0x63, 0x3a, 0x13,
- 0xf9, 0x8d, 0xc0, 0xc1, 0xdf, 0x88, 0x5f, 0x86, 0x58, 0x21, 0x03, 0x1c,
- 0xeb, 0xe5, 0x5c, 0x72, 0x78, 0xbd, 0x2f, 0x7d, 0x2e, 0x9e, 0x0c, 0xaa,
- 0x3c, 0x2f, 0x2c, 0xf8, 0x92, 0x93, 0xa2, 0xa5, 0x5a, 0xcc, 0x16, 0xc6,
- 0xc8, 0x6c, 0x1e, 0xe4, 0x96, 0xd6, 0x1e, 0xb0, 0x74, 0x04, 0x3c, 0x11,
- 0x57, 0xb1, 0xa8, 0xbb, 0xea, 0x54, 0x28, 0x3d, 0xe8, 0x2b, 0x9a, 0x70,
- 0x79, 0x8e, 0x7f, 0xa5, 0x00, 0x29, 0xa1, 0x4b, 0xbc, 0xca, 0xfe, 0x0a,
- 0x45, 0x72, 0x68, 0x99, 0xfc, 0x34, 0xa6, 0x9c, 0x16, 0xcb, 0xd4, 0xb3,
- 0xe5, 0x9f, 0xbe, 0x10, 0x0f, 0x95, 0xb8, 0x41, 0x94, 0x39, 0xba, 0x1b,
- 0x5e, 0x7c, 0xb6, 0x67, 0x7d, 0x95, 0x94, 0x31, 0x2b, 0x75, 0x20, 0x7e,
- 0xde, 0x2c, 0x81, 0xe4, 0x8e, 0xbe, 0x4d, 0xde, 0xbe, 0x7e, 0x46, 0xe9,
- 0x3c, 0xd7, 0x59, 0xb5, 0xa8, 0x28, 0x85, 0x53, 0xf7, 0xf0, 0xd9, 0x77,
- 0x5e, 0x63, 0xfb, 0xce, 0xf1, 0x29, 0x57, 0x6c, 0x2e, 0xa7, 0x97, 0x6c,
- 0x05, 0xb3, 0x7e, 0x54, 0xf7, 0x7c, 0xad, 0xc8, 0x08, 0xec, 0xfd, 0x02,
- 0xf4, 0x82, 0x80, 0x55, 0xb1, 0xd2, 0xd2, 0x65, 0xe3, 0x6e, 0x0b, 0xb0,
- 0x67, 0x4f, 0x9c, 0x00, 0xab, 0xee, 0x17, 0x44, 0xc1, 0x51, 0x5c, 0x93,
- 0x5d, 0x10, 0x39, 0x51, 0xcf, 0x58, 0x68, 0x1e, 0xf1, 0xb9, 0x27, 0x25,
- 0x36, 0x7c, 0x0d, 0xea, 0x39, 0xfc, 0xa5, 0xde, 0x7b, 0xcf, 0x7c, 0xaf,
- 0x02, 0x81, 0xa8, 0x22, 0x51, 0x8a, 0x89, 0x13, 0xa0, 0xa3, 0x78, 0xcf,
- 0x3e, 0xb7, 0xcf, 0x92, 0xe3, 0x28, 0x2f, 0x3c, 0xa2, 0x9b, 0x15, 0x6f,
- 0x88, 0xf2, 0xab, 0x06, 0x82, 0x46, 0x72, 0x58, 0xe3, 0xf1, 0xe6, 0xde,
- 0x7b, 0xe5, 0x45, 0xdb, 0x69, 0x02, 0x04, 0x7c, 0xbb, 0x35, 0x31, 0x28,
- 0x10, 0x2d, 0x7a, 0x6e, 0x16, 0xbe, 0xa3, 0xcf, 0x29, 0x0d, 0xba, 0xb5,
- 0x9e, 0x2a, 0x04, 0x33, 0x1f, 0x43, 0x44, 0xcf, 0x3a, 0xef, 0xfd, 0xa3,
- 0xc3, 0x55, 0x45, 0x40, 0xd8, 0xed, 0xde, 0x47, 0xf6, 0xe4, 0xcc, 0x10,
- 0x67, 0xe9, 0x75, 0x91, 0xff, 0x5d, 0xe1, 0x0b, 0xe8, 0x82, 0x56, 0x92,
- 0x22, 0xef, 0xf1, 0x7d, 0x11, 0x18, 0xcc, 0x4b, 0x09, 0xa1, 0x48, 0xc1,
- 0x53, 0xf7, 0xc0, 0x13, 0xd9, 0xb5, 0x4c, 0xe4, 0x0a, 0xed, 0x1f, 0x34,
- 0xcc, 0x14, 0xba, 0xcf, 0x5a, 0x69, 0xf5, 0xcf, 0x9f, 0x8a, 0xce, 0xa5,
- 0xca, 0x31, 0xdd, 0xbc, 0x34, 0x11, 0x33, 0x40, 0x32, 0x76, 0xc5, 0xf4,
- 0x73, 0xb9, 0xf6, 0x64, 0x29, 0x2d, 0x51, 0x91, 0x25, 0x7d, 0xa2, 0xbf,
- 0xde, 0xe5, 0x85, 0xa4, 0xba, 0x07, 0xaf, 0x3f, 0x5f, 0xe1, 0x7e, 0xac,
- 0xf9, 0xce, 0x3c, 0xc6, 0x5e, 0xf2, 0x9e, 0xff, 0xcc, 0x9e, 0x04, 0x0f,
- 0xdc, 0x53, 0x81, 0x0c, 0xfb, 0x9e, 0xef, 0xc1, 0x1e, 0x24, 0xf1, 0x9f,
- 0xf0, 0x11, 0x98, 0x46, 0x59, 0x63, 0xae, 0xec, 0xe7, 0x67, 0xe5, 0x75,
- 0xe2, 0x63, 0xb2, 0x3c, 0xe7, 0x2d, 0xf5, 0x06, 0x8c, 0x06, 0xce, 0x3a,
- 0x28, 0x5a, 0x3c, 0xe4, 0xee, 0xe9, 0x17, 0xb2, 0x37, 0xf4, 0xbe, 0xb4,
- 0xc6, 0xea, 0xaa, 0x37, 0x3e, 0xdb, 0xf5, 0x95, 0xd5, 0x29, 0x45, 0x65,
- 0xb9, 0x8c, 0x7f, 0xe5, 0x0b, 0xbc, 0x33, 0x4e, 0x66, 0x44, 0xe9, 0x3d,
- 0x53, 0xa2, 0x70, 0x85, 0x32, 0x74, 0x8f, 0xed, 0xb7, 0x84, 0xee, 0xa5,
- 0xaf, 0x3e, 0x25, 0x27, 0xaf, 0xbd, 0x07, 0x9f, 0xb8, 0x01, 0xa6, 0x33,
- 0xd2, 0x06, 0xee, 0xd9, 0x51, 0x55, 0x0b, 0x45, 0xb9, 0xf7, 0x28, 0xef,
- 0x8c, 0x77, 0x25, 0x83, 0x6e, 0x61, 0xfe, 0x83, 0x67, 0x78, 0x3b, 0x1c,
- 0xdd, 0x98, 0x5b, 0x6d, 0xd2, 0x20, 0x27, 0xb4, 0xd0, 0x08, 0x57, 0x77,
- 0xed, 0x3f, 0x7b, 0xbe, 0xe6, 0x59, 0xb9, 0x34, 0x6b, 0x7b, 0xd5, 0x7b,
- 0xef, 0x7d, 0x16, 0x1e, 0x73, 0x35, 0x07, 0xb4, 0x4a, 0x41, 0x4e, 0x5a,
- 0xb2, 0x45, 0xe5, 0xd1, 0xff, 0xa1, 0x9e, 0xc1, 0x8a, 0xf0, 0x04, 0xeb,
- 0xff, 0xf0, 0xfb, 0xfb, 0xb9, 0x5f, 0xc3, 0xc7, 0x3e, 0xc1, 0x2a, 0x43,
- 0x98, 0x60, 0xd2, 0x22, 0x15, 0x70, 0x19, 0x42, 0x98, 0x1d, 0xaf, 0x05,
- 0x5e, 0x73, 0xa3, 0x47, 0x2c, 0x0b, 0x27, 0x39, 0xd8, 0x00, 0x14, 0x2c,
- 0x82, 0xa9, 0x8f, 0x3b, 0x49, 0x32, 0x5f, 0xbc, 0x50, 0x9e, 0x0f, 0x75,
- 0xb7, 0x73, 0x0c, 0xea, 0x9b, 0x25, 0x5b, 0xdc, 0x76, 0x44, 0xce, 0xc1,
- 0xe6, 0xbd, 0xb6, 0xef, 0xa4, 0x97, 0x5c, 0xfb, 0x5c, 0x70, 0x72, 0x44,
- 0x51, 0x60, 0x36, 0xcb, 0x2d, 0xd2, 0x3c, 0xdc, 0xe3, 0x55, 0xc9, 0x3e,
- 0x43, 0x02, 0xdb, 0xd8, 0x4a, 0xe3, 0xa9, 0x99, 0x92, 0x44, 0xee, 0x7d,
- 0x46, 0x54, 0x1b, 0x4a, 0x71, 0x32, 0xab, 0x74, 0x93, 0x4d, 0x3e, 0xea,
- 0x91, 0xb1, 0x6d, 0x44, 0xde, 0x7a, 0x6a, 0xa7, 0x96, 0x76, 0xdf, 0xf9,
- 0xc5, 0x71, 0xd7, 0x08, 0x70, 0x8f, 0xf2, 0xae, 0xb9, 0xb8, 0x1c, 0x9d,
- 0x1f, 0x50, 0x7f, 0x39, 0x6c, 0x68, 0x0e, 0xc4, 0xd1, 0x28, 0xfb, 0x9b,
- 0x94, 0x99, 0xd5, 0xee, 0xe9, 0xe7, 0x2b, 0x9e, 0x1e, 0x89, 0x73, 0xef,
- 0x64, 0x4a, 0xd2, 0xd7, 0xac, 0x83, 0xff, 0x12, 0x6f, 0x9a, 0x65, 0xa1,
- 0xfe, 0x7d, 0x76, 0x81, 0x51, 0xcf, 0x20, 0x0d, 0x29, 0xb4, 0xec, 0x1e,
- 0xfe, 0xdc, 0x79, 0x6a, 0x6e, 0x96, 0xc5, 0x47, 0xab, 0x2f, 0x0a, 0x8e,
- 0x9e, 0x2e, 0xb0, 0x7b, 0xe1, 0x85, 0x1e, 0x0d, 0xcf, 0x0f, 0x6a, 0xf3,
- 0x9e, 0xfa, 0xe2, 0xa1, 0x50, 0x5a, 0x72, 0x8e, 0x77, 0x1a, 0xf9, 0xba,
- 0xf4, 0xe6, 0xe0, 0xc5, 0xae, 0xbd, 0x7e, 0x05, 0x91, 0xe7, 0x63, 0x76,
- 0xef, 0x76, 0x9d, 0xe6, 0x58, 0x2c, 0xf2, 0x82, 0x5c, 0x10, 0xee, 0x11,
- 0xd7, 0xc0, 0x5e, 0xeb, 0x12, 0xe8, 0xaa, 0x1b, 0x75, 0x93, 0x36, 0x4b,
- 0xef, 0x8a, 0x79, 0xc1, 0x7b, 0x67, 0x44, 0x51, 0xc7, 0xb9, 0xec, 0xd7,
- 0xbc, 0x50, 0x6f, 0x5b, 0xc7, 0x85, 0xa6, 0x2f, 0xfd, 0xf8, 0x23, 0xdf,
- 0x23, 0x16, 0x2c, 0x4e, 0x42, 0x57, 0x96, 0x22, 0xc8, 0xc8, 0x5d, 0x06,
- 0x10, 0xa6, 0x23, 0x8c, 0x80, 0x4f, 0x95, 0x11, 0x8b, 0xa1, 0xa2, 0xdf,
- 0xe0, 0xf0, 0xc4, 0xa2, 0xe7, 0x44, 0x54, 0x8f, 0x80, 0x1d, 0x25, 0x6f,
- 0xc2, 0xf3, 0x59, 0x90, 0xe7, 0x4d, 0x7c, 0x61, 0xa6, 0x07, 0x87, 0xef,
- 0x2f, 0xbf, 0x3d, 0xbb, 0x18, 0x25, 0x3b, 0x54, 0xda, 0x7e, 0x79, 0x71,
- 0xf2, 0xf5, 0xfb, 0x4b, 0xf3, 0x4f, 0x6d, 0xe9, 0x75, 0x5a, 0xe4, 0xe6,
- 0x76, 0x32, 0xc3, 0xc9, 0x0a, 0xb3, 0x59, 0xae, 0x95, 0xca, 0x87, 0xa1,
- 0x8b, 0xcd, 0x7d, 0x5c, 0x56, 0x8a, 0x68, 0x42, 0xf9, 0x28, 0xe5, 0xcc,
- 0xe3, 0x7d, 0x26, 0x0f, 0x36, 0x65, 0xf8, 0x95, 0xce, 0x72, 0xce, 0x3b,
- 0x45, 0xf9, 0x9a, 0xb6, 0x93, 0x5c, 0x7e, 0x7b, 0xf8, 0xee, 0xbb, 0x91,
- 0xf2, 0x3c, 0xfc, 0xf0, 0xc3, 0x0f, 0xdd, 0xe0, 0xae, 0xcf, 0xd6, 0xbc,
- 0xb1, 0x31, 0x3a, 0x3e, 0x4e, 0x0e, 0x4f, 0x47, 0x67, 0x1b, 0x0e, 0xc7,
- 0x61, 0x6b, 0x8f, 0x10, 0xac, 0xae, 0xb3, 0xc6, 0xfc, 0x65, 0x63, 0xe3,
- 0xf4, 0xf0, 0x92, 0x8c, 0x63, 0x61, 0x5c, 0xa7, 0x79, 0x26, 0x78, 0x98,
- 0x74, 0x76, 0x47, 0x20, 0x9b, 0x57, 0x39, 0xf2, 0xe8, 0x09, 0x61, 0x12,
- 0x99, 0xc6, 0x5d, 0xe4, 0x59, 0x73, 0xc1, 0xdd, 0x11, 0x68, 0x8f, 0xe4,
- 0xc3, 0x51, 0xaa, 0xaf, 0x19, 0x92, 0x26, 0x32, 0x6c, 0x24, 0xce, 0x3b,
- 0xc6, 0x30, 0x1e, 0xd9, 0x18, 0xbe, 0x30, 0xa3, 0xc8, 0xc3, 0x05, 0x82,
- 0xb0, 0x98, 0x87, 0x5d, 0xb2, 0x62, 0x08, 0x27, 0x04, 0x9a, 0x9c, 0xbc,
- 0x1f, 0x1d, 0x7e, 0x73, 0x4c, 0xcf, 0x7e, 0x93, 0x35, 0x6e, 0x66, 0xe1,
- 0x5a, 0xc3, 0x57, 0xde, 0x65, 0x4d, 0x3d, 0x49, 0x17, 0xd9, 0x26, 0xf5,
- 0x69, 0x3c, 0x10, 0x8a, 0x12, 0xd7, 0x38, 0x9b, 0x0e, 0x8e, 0x59, 0xa5,
- 0x90, 0xe7, 0xc1, 0x81, 0xe2, 0xb7, 0x7b, 0x71, 0x7c, 0xf8, 0xfa, 0xed,
- 0xb1, 0x54, 0x2c, 0xc8, 0x35, 0x6f, 0x1a, 0xbd, 0x29, 0xe7, 0x99, 0x17,
- 0x59, 0x21, 0x55, 0x62, 0x69, 0xda, 0x30, 0xbf, 0x31, 0x73, 0xba, 0xe2,
- 0x73, 0x8e, 0x70, 0x05, 0xcf, 0x0e, 0xaf, 0xf2, 0x1d, 0x6e, 0x5d, 0xbf,
- 0x97, 0xda, 0x39, 0x11, 0xbc, 0x24, 0x55, 0xaf, 0xd9, 0x05, 0x02, 0xaf,
- 0xc9, 0xe7, 0xbb, 0xbb, 0xbb, 0x6b, 0xc6, 0x01, 0xeb, 0x43, 0x2e, 0x69,
- 0x33, 0x94, 0x03, 0x7a, 0x7c, 0xc7, 0xb5, 0xef, 0x7a, 0x4c, 0xdb, 0x0d,
- 0xeb, 0x76, 0x45, 0xe6, 0x3b, 0xae, 0xf6, 0xbc, 0xc9, 0xe2, 0x5d, 0x9e,
- 0x94, 0xa5, 0xa3, 0xfc, 0xf6, 0x27, 0xc7, 0x28, 0xd4, 0x50, 0x90, 0x04,
- 0x8f, 0x12, 0x6f, 0x70, 0xc7, 0x8d, 0xc1, 0x04, 0x0c, 0xbe, 0xea, 0xbe,
- 0xdb, 0x24, 0xfd, 0x06, 0x59, 0x45, 0x93, 0x66, 0x58, 0x56, 0xd7, 0x3b,
- 0xf3, 0x03, 0x68, 0x40, 0xe6, 0xa1, 0x37, 0x94, 0x42, 0x9d, 0x18, 0x4d,
- 0xda, 0xa2, 0xcf, 0xd4, 0x34, 0xb1, 0xa5, 0xb9, 0xfa, 0x1e, 0xd1, 0xaf,
- 0x5f, 0x31, 0x0b, 0x0c, 0x8d, 0x76, 0xa5, 0x23, 0x57, 0x92, 0xd8, 0xc8,
- 0x47, 0x68, 0xff, 0xc1, 0x33, 0x39, 0x34, 0xb2, 0xc0, 0x7c, 0x85, 0x40,
- 0xfa, 0xb0, 0x45, 0xcc, 0x5f, 0x2b, 0x4a, 0xae, 0x69, 0x3e, 0x41, 0x4c,
- 0x0b, 0x3d, 0x33, 0xd7, 0x1d, 0x53, 0x98, 0x7f, 0x61, 0x34, 0x2d, 0x63,
- 0x40, 0xa5, 0x0c, 0x60, 0x32, 0x22, 0x8a, 0x18, 0x12, 0x22, 0xd7, 0x32,
- 0x71, 0xc8, 0x15, 0xa5, 0x86, 0xbb, 0xdf, 0x1c, 0x0c, 0xb0, 0x7f, 0x6a,
- 0xbb, 0x5b, 0x1e, 0xf1, 0x71, 0x6f, 0x50, 0x3c, 0xfb, 0x85, 0xdc, 0xea,
- 0xde, 0xde, 0x19, 0x99, 0x5e, 0x04, 0xdf, 0x5a, 0x3a, 0x82, 0xe9, 0x9a,
- 0x3f, 0xe7, 0x33, 0x01, 0x99, 0xd5, 0xd8, 0x41, 0x1a, 0xf1, 0xa3, 0xbf,
- 0x71, 0x74, 0x2e, 0x7f, 0xa3, 0x7c, 0xcb, 0xfc, 0x96, 0x06, 0x4f, 0x37,
- 0x42, 0x92, 0x6c, 0xd1, 0x95, 0xa1, 0x5a, 0x31, 0xd2, 0x37, 0x61, 0xdd,
- 0x32, 0x40, 0x88, 0x67, 0x9d, 0xac, 0xe9, 0xe1, 0x81, 0x99, 0x1a, 0xba,
- 0x81, 0xfe, 0xd7, 0xce, 0xb0, 0xae, 0x6f, 0x76, 0xf2, 0xe9, 0x87, 0xaa,
- 0x4e, 0x93, 0x9f, 0x37, 0x3a, 0x75, 0xd9, 0xdd, 0x41, 0xfc, 0x2f, 0xcc,
- 0xe0, 0xaf, 0x9a, 0xa9, 0xd5, 0xa3, 0xf8, 0x23, 0x46, 0x30, 0x18, 0x50,
- 0xab, 0xfa, 0xa5, 0x0f, 0xe6, 0x81, 0x0f, 0x16, 0x07, 0xfd, 0x37, 0x8c,
- 0x2e, 0x22, 0x0a, 0xcd, 0x20, 0x19, 0x1e, 0xd7, 0xc8, 0x96, 0xf8, 0x46,
- 0x57, 0x76, 0x9f, 0x9f, 0xf6, 0x77, 0x77, 0xf7, 0x0e, 0xf6, 0x3e, 0x7f,
- 0xb1, 0x7b, 0xb0, 0xb7, 0xb7, 0xb7, 0x7f, 0xb0, 0x77, 0x70, 0xb0, 0xbf,
- 0xfb, 0xcb, 0x4e, 0x6f, 0xd5, 0xd4, 0xbd, 0xfd, 0x7a, 0x45, 0x83, 0x66,
- 0xd4, 0x3d, 0xce, 0xb8, 0xfc, 0xd9, 0x8e, 0x1e, 0xa3, 0x9a, 0xf6, 0x92,
- 0x7a, 0x3e, 0xa6, 0xec, 0x3c, 0x3e, 0x9c, 0xfe, 0x60, 0x6a, 0xa3, 0x78,
- 0x67, 0xde, 0x80, 0x5e, 0x9f, 0xfd, 0xf0, 0xee, 0xf4, 0xec, 0xf0, 0x75,
- 0x72, 0x79, 0x96, 0x1c, 0xc2, 0x4d, 0x18, 0x91, 0x93, 0xc0, 0xcf, 0xa5,
- 0xac, 0x7b, 0xe6, 0x3d, 0xf2, 0xd8, 0xff, 0xc4, 0xa7, 0x65, 0xd3, 0x63,
- 0xd1, 0x89, 0x6e, 0x3f, 0x4b, 0x98, 0x81, 0xd4, 0xd2, 0xf0, 0xa6, 0x99,
- 0x3f, 0x7c, 0x23, 0x3c, 0xe6, 0xcb, 0x7d, 0xce, 0xde, 0x70, 0x96, 0x3e,
- 0xba, 0xa3, 0x27, 0x1f, 0x39, 0x42, 0x89, 0xc6, 0xbd, 0x24, 0xf9, 0x41,
- 0xe5, 0x5d, 0xb2, 0xc5, 0xa9, 0x5c, 0x8e, 0xb1, 0x8e, 0xc9, 0x10, 0x3b,
- 0xf9, 0x6f, 0x96, 0x58, 0x4c, 0x52, 0x6a, 0xa0, 0xee, 0x90, 0x0e, 0xbb,
- 0x1d, 0x0c, 0xf0, 0x6c, 0xe5, 0x90, 0xcc, 0x65, 0x9e, 0x7d, 0xc2, 0xa8,
- 0xdb, 0xb2, 0x97, 0xc1, 0x59, 0xdd, 0xe8, 0x80, 0x15, 0xa7, 0xbe, 0x8b,
- 0xbc, 0xd2, 0x2e, 0x23, 0xd7, 0x31, 0xf2, 0x39, 0xfa, 0x8e, 0x8a, 0x64,
- 0xf7, 0x09, 0xfa, 0x8d, 0x7f, 0x8f, 0xef, 0xd8, 0xda, 0x75, 0xee, 0xc0,
- 0xfb, 0xd1, 0xc9, 0xbb, 0x6f, 0x10, 0x3f, 0xff, 0xe1, 0xec, 0xe2, 0xf5,
- 0xc8, 0x34, 0x6b, 0xe4, 0x15, 0x1a, 0xbf, 0x2c, 0x49, 0x12, 0x4a, 0xaf,
- 0xf8, 0x5c, 0xd2, 0xa7, 0xff, 0x9d, 0xb7, 0x53, 0xdf, 0xa7, 0xde, 0x98,
- 0xfb, 0xf6, 0x11, 0x71, 0xae, 0xc5, 0x6f, 0x0d, 0x6f, 0x37, 0x7e, 0x35,
- 0x4f, 0xa9, 0x86, 0x37, 0x1b, 0xf2, 0x66, 0x45, 0x3a, 0xf6, 0x0e, 0xd5,
- 0x0b, 0xed, 0x90, 0x9d, 0xb6, 0xd3, 0x94, 0xd8, 0x8e, 0x68, 0xa5, 0xac,
- 0x7c, 0xb2, 0x08, 0xcf, 0x9b, 0x63, 0xf6, 0xfa, 0xd5, 0x2c, 0xbd, 0xc6,
- 0x07, 0xc3, 0x63, 0xe0, 0x7d, 0x4c, 0x3e, 0xff, 0xd8, 0x4f, 0xd2, 0xb5,
- 0x81, 0xf6, 0x4e, 0xb0, 0x01, 0x50, 0xe1, 0x05, 0x22, 0xb9, 0x2b, 0xa5,
- 0x3f, 0x22, 0xfd, 0x11, 0x9c, 0x96, 0x94, 0xfd, 0x45, 0xf9, 0xa6, 0x5d,
- 0x46, 0x30, 0xb0, 0x36, 0x33, 0x15, 0x81, 0x51, 0xbf, 0x5d, 0xa6, 0xb8,
- 0x50, 0xea, 0xa0, 0x25, 0x4f, 0x27, 0xaf, 0x5d, 0xea, 0xba, 0xa3, 0x47,
- 0xe7, 0x29, 0xa7, 0xce, 0x50, 0x3e, 0x27, 0x97, 0x5e, 0x48, 0x3a, 0x21,
- 0x8d, 0xbe, 0x47, 0x0c, 0x1f, 0x94, 0xdd, 0xd4, 0xc3, 0x15, 0x07, 0x27,
- 0x9b, 0x42, 0x1c, 0xba, 0xb8, 0xba, 0xd6, 0x6d, 0xd7, 0x92, 0xe8, 0x20,
- 0xa0, 0x3d, 0xc6, 0xfa, 0xe2, 0xa2, 0x96, 0x9e, 0xe6, 0x48, 0x71, 0x2b,
- 0x79, 0xcd, 0xe0, 0x47, 0x16, 0xb9, 0x8f, 0x2e, 0x2f, 0xfa, 0x3a, 0xfb,
- 0x49, 0x99, 0x24, 0x48, 0xef, 0x49, 0xe7, 0xe9, 0xa4, 0x3b, 0xce, 0xe8,
- 0xe3, 0x46, 0x80, 0xf3, 0xce, 0xd1, 0xc8, 0xba, 0x63, 0x52, 0x6e, 0x4d,
- 0x9b, 0x62, 0x87, 0x73, 0x73, 0x24, 0x99, 0x9d, 0xd3, 0xd6, 0xce, 0xe0,
- 0x06, 0xb2, 0xd4, 0xec, 0x2d, 0x60, 0x73, 0xf0, 0x1d, 0x27, 0x64, 0xea,
- 0x88, 0x73, 0xbc, 0x69, 0xe3, 0x7c, 0x52, 0xf7, 0x9e, 0x59, 0x23, 0x6a,
- 0x8a, 0xb3, 0xc7, 0xc9, 0xdc, 0xb2, 0x57, 0x08, 0xd3, 0xcc, 0x3b, 0x06,
- 0x21, 0x21, 0x49, 0x58, 0x16, 0xc6, 0x52, 0x49, 0x25, 0xf7, 0x87, 0x65,
- 0xc9, 0x35, 0xc4, 0x3a, 0x3f, 0x87, 0x2d, 0xd9, 0x92, 0x21, 0x1c, 0x3c,
- 0xfd, 0x82, 0x6b, 0xac, 0x6c, 0x73, 0x2d, 0xd1, 0xe1, 0x55, 0xa2, 0xf0,
- 0xad, 0xa3, 0x73, 0x47, 0xb3, 0x75, 0xbf, 0xa0, 0xf4, 0x64, 0xca, 0x04,
- 0xf1, 0x58, 0x56, 0x15, 0x7c, 0x1c, 0x2c, 0x00, 0xd9, 0x27, 0x82, 0xe2,
- 0x96, 0xb1, 0x39, 0x9b, 0xd0, 0x6a, 0xf5, 0x32, 0x5e, 0x6a, 0x0d, 0x3f,
- 0x87, 0x2c, 0xa4, 0xd9, 0x36, 0xfd, 0x06, 0xc1, 0x83, 0x54, 0x6b, 0xb0,
- 0x1a, 0xa8, 0x96, 0xa4, 0xa5, 0xf6, 0x25, 0x8d, 0xc9, 0xdc, 0xc2, 0x8c,
- 0x92, 0x7f, 0xaf, 0x61, 0x42, 0xc4, 0x68, 0x53, 0xb6, 0x37, 0xa1, 0x04,
- 0x7b, 0x1f, 0x46, 0x5d, 0x98, 0xc0, 0x29, 0xae, 0x18, 0xe5, 0x72, 0xec,
- 0x16, 0x96, 0xf6, 0x08, 0xf2, 0x78, 0xa9, 0xc9, 0xa3, 0x90, 0x7e, 0x52,
- 0x89, 0x58, 0xbc, 0xd9, 0x93, 0x9c, 0x5b, 0x23, 0x50, 0x50, 0x17, 0xb7,
- 0xac, 0xed, 0xce, 0x31, 0xb3, 0xf5, 0x51, 0x2e, 0xc4, 0x0d, 0x24, 0xd9,
- 0x85, 0xe2, 0x46, 0x24, 0xef, 0x6a, 0x79, 0xf3, 0xb0, 0xa8, 0x09, 0xbb,
- 0xa4, 0xa6, 0xdf, 0xec, 0x9e, 0xa5, 0x41, 0x5e, 0xac, 0x17, 0x3a, 0xd2,
- 0x89, 0x47, 0x7d, 0x18, 0x63, 0x05, 0x1e, 0x7f, 0xcd, 0x51, 0x18, 0x97,
- 0xa2, 0xca, 0x39, 0x1f, 0x80, 0x7b, 0xe9, 0x40, 0x52, 0x23, 0x4f, 0xc5,
- 0xaf, 0xa7, 0xc1, 0x81, 0xe7, 0x34, 0x95, 0x83, 0xe4, 0xeb, 0xb4, 0xce,
- 0x27, 0x7d, 0x61, 0x8c, 0x11, 0x06, 0x19, 0x7a, 0xc3, 0xb2, 0xca, 0x24,
- 0x5b, 0x0c, 0x46, 0xbe, 0x3d, 0x4c, 0x7e, 0x50, 0x0a, 0x20, 0x63, 0x44,
- 0x32, 0xb3, 0x49, 0x3e, 0x01, 0xdb, 0x93, 0x4b, 0x38, 0x31, 0xf3, 0x21,
- 0xfb, 0x53, 0x7c, 0xf9, 0xa0, 0x10, 0xc0, 0x47, 0x1c, 0x92, 0x29, 0x56,
- 0x35, 0xad, 0x3f, 0xda, 0xc0, 0x19, 0xd6, 0x4a, 0x44, 0x11, 0x2a, 0x32,
- 0x59, 0x97, 0x66, 0x23, 0x5f, 0x12, 0x6b, 0x10, 0x56, 0x2b, 0x34, 0xa1,
- 0xd6, 0x4b, 0x61, 0x63, 0x77, 0x6d, 0x6d, 0x33, 0xdb, 0x2c, 0x6d, 0x22,
- 0x76, 0xa6, 0x15, 0x51, 0x83, 0x81, 0x99, 0x30, 0x9a, 0x1a, 0x11, 0xa0,
- 0x67, 0x97, 0xc7, 0xff, 0x92, 0x1c, 0x4e, 0x3a, 0x51, 0x76, 0xa0, 0x04,
- 0x89, 0x18, 0x16, 0x8e, 0x6d, 0xbb, 0xc1, 0xd0, 0x77, 0xce, 0x5a, 0x65,
- 0x6c, 0xdf, 0x14, 0xcb, 0xbf, 0x21, 0xb5, 0xd7, 0xce, 0xa9, 0x5c, 0x97,
- 0x52, 0x75, 0x03, 0x0e, 0x52, 0x4b, 0x56, 0x89, 0x08, 0x84, 0x87, 0x26,
- 0xca, 0x8c, 0x17, 0x79, 0xaa, 0x70, 0x7c, 0x7d, 0x26, 0x08, 0x85, 0x00,
- 0x45, 0xad, 0x83, 0x30, 0xb0, 0x52, 0x3e, 0x3a, 0x72, 0xcc, 0x1b, 0x61,
- 0xac, 0x10, 0xb6, 0x40, 0x8f, 0xed, 0xc9, 0xb6, 0x40, 0xbb, 0xff, 0x03,
- 0x1d, 0xb9, 0x0f, 0x7a, 0xb1, 0xc8, 0x15, 0xc8, 0x7d, 0xb9, 0x62, 0x3b,
- 0xa8, 0xbd, 0x65, 0xf5, 0xd8, 0xf1, 0x6d, 0x76, 0xae, 0xa9, 0xab, 0x73,
- 0xce, 0x29, 0x9d, 0xcf, 0x91, 0x5e, 0x82, 0x00, 0x3b, 0xee, 0x54, 0x95,
- 0x9a, 0xfe, 0xc5, 0x04, 0xf0, 0x5c, 0xba, 0x23, 0x98, 0x5f, 0x5e, 0xa0,
- 0x73, 0xb9, 0xae, 0xc1, 0xb4, 0xda, 0x2e, 0xe7, 0x02, 0x8a, 0x37, 0x66,
- 0x95, 0x7a, 0x31, 0x3a, 0x3b, 0xfa, 0x6e, 0xd4, 0x2a, 0x27, 0x33, 0xad,
- 0xe1, 0x43, 0xca, 0xab, 0xd6, 0xd9, 0xd0, 0x46, 0x1a, 0x9e, 0x34, 0x1d,
- 0xf1, 0x64, 0x71, 0x60, 0xbd, 0x74, 0xe6, 0x37, 0x9a, 0x8b, 0xaf, 0xcd,
- 0x12, 0xfd, 0xd0, 0x24, 0xf3, 0xa0, 0xba, 0x8b, 0x72, 0xc3, 0xbb, 0xf9,
- 0x78, 0xff, 0x94, 0xb5, 0xca, 0x44, 0xc6, 0x5c, 0x66, 0xd2, 0x97, 0x71,
- 0xc6, 0x90, 0x65, 0xc4, 0x8e, 0x8b, 0x55, 0xa4, 0xfe, 0xe1, 0x04, 0xf2,
- 0xce, 0x9c, 0x63, 0x73, 0x6f, 0xb8, 0xdd, 0x4d, 0x77, 0xd0, 0xaa, 0x71,
- 0xe6, 0xcc, 0x66, 0x6b, 0xdd, 0xeb, 0x8e, 0xdf, 0xb6, 0x10, 0x6a, 0x25,
- 0xd2, 0xad, 0xb4, 0xd7, 0xb4, 0x3a, 0xd0, 0x6c, 0x0b, 0xab, 0x67, 0xe9,
- 0xa2, 0xfb, 0x05, 0x07, 0x90, 0x29, 0xd3, 0x64, 0x7e, 0x2f, 0x05, 0x48,
- 0xa2, 0x1b, 0x10, 0xc2, 0x0f, 0xbc, 0x12, 0x9f, 0x7f, 0x1e, 0xe8, 0x82,
- 0x9f, 0xec, 0xd3, 0x07, 0xe6, 0xd7, 0x9e, 0xf7, 0x63, 0x46, 0x39, 0x29,
- 0xe4, 0x6d, 0x80, 0x1e, 0x6a, 0x5d, 0x20, 0x11, 0x0b, 0xc3, 0xa3, 0x32,
- 0xe4, 0x2f, 0xda, 0x30, 0x4e, 0xb0, 0xcb, 0xfa, 0x4e, 0xee, 0x6f, 0xb0,
- 0x79, 0xcd, 0x1d, 0x4d, 0x6b, 0xce, 0x6b, 0x5a, 0x61, 0x98, 0xa9, 0x98,
- 0xec, 0xf6, 0xd6, 0xd3, 0x9a, 0x8d, 0xe6, 0x3e, 0xa4, 0x4b, 0x95, 0x8c,
- 0x80, 0x51, 0x29, 0x0d, 0xd3, 0x24, 0x4b, 0x67, 0xec, 0xee, 0xe8, 0xec,
- 0x23, 0xcb, 0x17, 0xe8, 0x64, 0xc4, 0xfb, 0xd5, 0xdd, 0x79, 0xff, 0x5b,
- 0xba, 0x73, 0x98, 0xac, 0x2d, 0xe3, 0xc3, 0x04, 0x49, 0x29, 0x9f, 0xa2,
- 0xd4, 0x97, 0xd8, 0xd5, 0xaa, 0xf7, 0xf0, 0x1c, 0x81, 0xb0, 0x6b, 0xdc,
- 0x86, 0x9a, 0x0e, 0x1d, 0x13, 0x45, 0xc9, 0x4f, 0xc3, 0xa8, 0xa1, 0xf6,
- 0xfb, 0xda, 0x95, 0xc7, 0x76, 0xf7, 0xc4, 0x2f, 0x7d, 0x6b, 0x69, 0x26,
- 0xd8, 0xf0, 0x52, 0xdc, 0xb6, 0x37, 0xdc, 0xf5, 0xf5, 0x2b, 0x5b, 0x30,
- 0x5b, 0xa1, 0x04, 0xae, 0x41, 0xb1, 0x9c, 0x53, 0x51, 0x68, 0x24, 0x70,
- 0x12, 0x77, 0x5e, 0x93, 0x9f, 0xed, 0x31, 0x6e, 0x86, 0x39, 0x49, 0x8a,
- 0x40, 0x4a, 0x74, 0xc0, 0xf3, 0x05, 0xea, 0xa2, 0x62, 0x1c, 0xd4, 0x38,
- 0x47, 0x4f, 0xdd, 0x91, 0x7a, 0x66, 0x97, 0x5b, 0xfa, 0xc8, 0x95, 0x27,
- 0xc2, 0xd0, 0xc8, 0xc5, 0x1f, 0x50, 0x3e, 0xb3, 0x8c, 0x5b, 0x6a, 0x56,
- 0x16, 0x41, 0x1f, 0xb5, 0xe9, 0x31, 0x68, 0x3f, 0xe3, 0xb2, 0xb5, 0x74,
- 0xc2, 0x42, 0x89, 0x20, 0x39, 0xcc, 0xd4, 0x2a, 0x65, 0x7b, 0x47, 0x24,
- 0x0d, 0xb0, 0x49, 0x32, 0xf0, 0x2d, 0xd2, 0xb9, 0x66, 0x47, 0x37, 0x6d,
- 0x2d, 0x45, 0xfc, 0x76, 0xa1, 0x3a, 0xab, 0x9e, 0x99, 0x76, 0x67, 0xb9,
- 0xe9, 0xd0, 0x26, 0x40, 0xb9, 0x94, 0x4a, 0x4e, 0x64, 0xa1, 0x6e, 0x61,
- 0x0b, 0x99, 0xd2, 0xe6, 0x69, 0x0b, 0xa1, 0x78, 0xbb, 0x42, 0x97, 0xaf,
- 0x81, 0x7e, 0x32, 0xf8, 0x1f, 0x32, 0x33, 0xa4, 0x9e, 0x9b, 0xab, 0x93,
- 0xf1, 0xd3, 0x16, 0x1e, 0xae, 0x8a, 0xe4, 0xb4, 0x0a, 0xec, 0xd2, 0x86,
- 0x1d, 0x87, 0x65, 0x0b, 0xd1, 0x52, 0x3c, 0xc8, 0x3f, 0x1d, 0x7b, 0x9e,
- 0x75, 0xe9, 0xf3, 0x44, 0x54, 0x28, 0x1a, 0xb8, 0x25, 0x9e, 0x46, 0x52,
- 0x61, 0xd0, 0x61, 0x7b, 0x91, 0x7d, 0x4d, 0x40, 0xed, 0x47, 0x65, 0xea,
- 0x4f, 0xab, 0xda, 0x72, 0x1b, 0xda, 0x53, 0xde, 0xfc, 0xd6, 0x95, 0xc1,
- 0xac, 0x1c, 0x03, 0xf3, 0xc2, 0xe0, 0xbd, 0xb8, 0x33, 0xbe, 0xe2, 0x2f,
- 0x0c, 0x49, 0x9e, 0xc9, 0x17, 0xce, 0xc1, 0x5a, 0xaa, 0x0f, 0x1c, 0xc8,
- 0x4b, 0x44, 0xe5, 0xd1, 0xf3, 0x3c, 0x39, 0xed, 0x99, 0xe1, 0x77, 0x94,
- 0xee, 0xa3, 0x43, 0x04, 0x8e, 0x83, 0xc6, 0x7f, 0x75, 0xef, 0x8b, 0x11,
- 0x79, 0x4f, 0xcd, 0x0c, 0xb9, 0x5e, 0x43, 0x7c, 0x30, 0xfb, 0x7b, 0x3b,
- 0xdc, 0x29, 0xe5, 0xf0, 0x86, 0x7e, 0x27, 0x5b, 0xd3, 0xe5, 0x8e, 0xe0,
- 0x40, 0x80, 0x5b, 0xcf, 0x4d, 0x00, 0xd5, 0x97, 0x50, 0xce, 0xcf, 0x9c,
- 0x12, 0x25, 0x14, 0xb5, 0x9f, 0xae, 0x28, 0x73, 0xe7, 0x32, 0xd8, 0x69,
- 0x29, 0xeb, 0xb4, 0xe1, 0x16, 0xaa, 0x6f, 0x55, 0x3f, 0xb3, 0xa5, 0x06,
- 0xb7, 0xbe, 0xf5, 0x94, 0x51, 0x64, 0x25, 0x05, 0xdb, 0xf6, 0x9d, 0xad,
- 0xb7, 0xce, 0x6b, 0xcd, 0xb0, 0x30, 0x3b, 0xfb, 0xe2, 0xf0, 0xdd, 0x37,
- 0xc7, 0xd0, 0x08, 0x20, 0xe3, 0xe9, 0xa0, 0xe6, 0xb4, 0xeb, 0xa7, 0xcb,
- 0x09, 0x4c, 0x22, 0x33, 0x73, 0x48, 0x97, 0xab, 0x87, 0x52, 0x8e, 0xcf,
- 0xc5, 0x2f, 0xa9, 0x6c, 0x62, 0x2c, 0xbb, 0x24, 0xc1, 0x6d, 0x24, 0xea,
- 0x59, 0x85, 0x26, 0x81, 0x64, 0xe9, 0x8a, 0xdd, 0xb0, 0xf5, 0x72, 0xbc,
- 0x00, 0x5f, 0x15, 0xec, 0x34, 0x27, 0x6e, 0xd4, 0xdf, 0x32, 0x6c, 0x9f,
- 0xc9, 0x0d, 0x41, 0x2f, 0x73, 0xb6, 0x7d, 0x05, 0xdb, 0x7e, 0xe8, 0x7b,
- 0xd7, 0x18, 0x7a, 0x65, 0x6f, 0x77, 0xd7, 0x01, 0x20, 0xa6, 0xb6, 0xc1,
- 0x40, 0x6a, 0x56, 0xc9, 0xee, 0xe0, 0xc5, 0x8b, 0x55, 0x02, 0xd1, 0x36,
- 0x0a, 0xb8, 0x8d, 0x67, 0x8f, 0x6e, 0x73, 0x40, 0x8f, 0xae, 0x6a, 0x33,
- 0x62, 0xd9, 0x80, 0x87, 0x53, 0x12, 0x10, 0x6b, 0xab, 0xbd, 0x88, 0xa7,
- 0x87, 0xa3, 0x36, 0x88, 0x87, 0x59, 0xfe, 0x46, 0x4c, 0xe5, 0x46, 0x62,
- 0xed, 0x10, 0x46, 0xa8, 0x11, 0xa7, 0xd0, 0x82, 0x72, 0x10, 0x73, 0x1b,
- 0xfa, 0x7d, 0xd4, 0xc4, 0x78, 0x86, 0xfc, 0x8a, 0x29, 0xba, 0x0a, 0x47,
- 0xa3, 0xaa, 0xc1, 0xfb, 0x73, 0xf2, 0x03, 0x9e, 0xbc, 0xfb, 0x86, 0xdd,
- 0x22, 0xc6, 0xc6, 0x87, 0x4f, 0x7d, 0xa7, 0x63, 0xf1, 0xbf, 0x67, 0x24,
- 0x43, 0xca, 0x3e, 0x45, 0xce, 0x07, 0x93, 0x6f, 0xe4, 0x05, 0x8b, 0x04,
- 0xb7, 0xfa, 0x2b, 0x7c, 0x96, 0x97, 0xc9, 0xc0, 0x53, 0x52, 0x04, 0xc6,
- 0x90, 0x34, 0x94, 0xf9, 0xbd, 0x5a, 0x48, 0xf2, 0x05, 0xb4, 0xae, 0x11,
- 0x1a, 0xdb, 0x2c, 0xdb, 0xbb, 0x6c, 0xa6, 0x63, 0x07, 0x05, 0x3a, 0x4a,
- 0xe4, 0x93, 0xfc, 0x19, 0x9c, 0xf1, 0x8e, 0x46, 0xf2, 0xb8, 0xae, 0xb4,
- 0x5c, 0x9e, 0x6d, 0x94, 0x33, 0xd2, 0xb0, 0xfa, 0xea, 0x03, 0xea, 0xba,
- 0x23, 0x99, 0x74, 0xd3, 0x97, 0xee, 0xb4, 0xda, 0xe0, 0x86, 0x28, 0xcb,
- 0x7f, 0xbc, 0x9f, 0x6b, 0x7a, 0x48, 0x07, 0x95, 0x6e, 0xac, 0x62, 0xea,
- 0x7c, 0x1b, 0xd2, 0xe3, 0x68, 0x40, 0xe4, 0x92, 0xdf, 0xe7, 0x4f, 0xa7,
- 0xf1, 0xcf, 0xf1, 0xfb, 0x3a, 0x35, 0x91, 0x03, 0x40, 0xaa, 0xad, 0x00,
- 0x5d, 0x5a, 0x78, 0x02, 0xb5, 0x69, 0x48, 0x1b, 0x87, 0xe4, 0xc8, 0xdb,
- 0xea, 0xc9, 0x46, 0x22, 0x78, 0x28, 0x40, 0xc1, 0xa4, 0x3d, 0x04, 0x0c,
- 0x1e, 0x5c, 0x62, 0x1f, 0x73, 0x01, 0xf5, 0x5e, 0x16, 0x45, 0x46, 0xc6,
- 0x2a, 0xa8, 0x77, 0x73, 0xb6, 0x1b, 0xfa, 0xf6, 0x14, 0x55, 0xcb, 0x42,
- 0x64, 0x1f, 0xd9, 0x5d, 0xa6, 0xf3, 0x69, 0x7d, 0x83, 0x6c, 0x43, 0xeb,
- 0x92, 0x0a, 0xd5, 0x2c, 0x7c, 0x9e, 0xdb, 0x25, 0xbd, 0x8a, 0x95, 0x2a,
- 0x28, 0xd9, 0xad, 0xa9, 0x68, 0xcf, 0xc0, 0xc6, 0x06, 0x39, 0xe3, 0x77,
- 0xc8, 0x25, 0x3f, 0x0a, 0x27, 0x50, 0x7d, 0xea, 0x6b, 0xfd, 0xf2, 0xdd,
- 0x60, 0xc3, 0x7a, 0x37, 0xbd, 0xe7, 0x4a, 0x79, 0xec, 0xb1, 0x63, 0x65,
- 0x3e, 0x12, 0x64, 0xc4, 0xc9, 0xf3, 0xa4, 0x59, 0x74, 0xbf, 0xb7, 0x5d,
- 0x6b, 0xbe, 0x61, 0x00, 0x0f, 0x10, 0xcc, 0x34, 0xb0, 0x0b, 0x75, 0xd6,
- 0x8c, 0x8b, 0xd5, 0xce, 0xdf, 0x5f, 0x0a, 0x62, 0x99, 0xca, 0x78, 0x9f,
- 0x75, 0xcd, 0xa7, 0x57, 0x86, 0x48, 0x23, 0x45, 0x83, 0x6d, 0x61, 0x04,
- 0xbe, 0xb9, 0xfc, 0x12, 0xdf, 0xc4, 0x08, 0xb9, 0x83, 0x7d, 0x5b, 0x6c,
- 0x73, 0x7e, 0x36, 0xba, 0x24, 0x9f, 0x02, 0xee, 0x3f, 0x35, 0x4e, 0xbf,
- 0x3f, 0xbe, 0xf8, 0xfa, 0x6c, 0x74, 0x6c, 0x16, 0xe5, 0xf5, 0xf1, 0xd7,
- 0xef, 0x49, 0x74, 0xd1, 0x16, 0x61, 0x3f, 0x34, 0x15, 0xe2, 0x88, 0x33,
- 0x8c, 0x18, 0xb0, 0x51, 0x8f, 0x87, 0xbd, 0xca, 0x4a, 0x91, 0x32, 0x1f,
- 0x5b, 0x7d, 0x8f, 0x19, 0x9c, 0x67, 0x19, 0x3b, 0x2e, 0x73, 0x14, 0x2e,
- 0x30, 0x56, 0x94, 0x54, 0x3c, 0x81, 0xf3, 0x15, 0xb6, 0xa6, 0x9c, 0x27,
- 0x06, 0xe4, 0xaf, 0x0f, 0x9c, 0x87, 0xf3, 0x96, 0xdd, 0xd4, 0x72, 0x02,
- 0x1d, 0x4b, 0x2d, 0x80, 0xab, 0xb0, 0x83, 0x8f, 0xac, 0x52, 0x2d, 0xd0,
- 0x4d, 0xb3, 0x92, 0xaf, 0x4e, 0x10, 0xab, 0x52, 0xdb, 0xb8, 0xcc, 0xf3,
- 0x06, 0xf7, 0x38, 0x5b, 0x17, 0x42, 0xf2, 0x5a, 0xf3, 0x0e, 0x67, 0x46,
- 0x6b, 0xca, 0x5b, 0xcb, 0x3c, 0x82, 0xdf, 0x1a, 0xaa, 0xf1, 0x4c, 0xae,
- 0x6e, 0x09, 0x8e, 0x73, 0x9e, 0xb0, 0xa0, 0xc5, 0x6d, 0x89, 0x45, 0x7c,
- 0x87, 0x71, 0x0a, 0xd5, 0x01, 0xb3, 0xa4, 0x66, 0x0a, 0x92, 0x4d, 0x33,
- 0xef, 0x33, 0x56, 0xf1, 0xd6, 0xb9, 0x5d, 0x2d, 0x7f, 0x2e, 0x79, 0xa4,
- 0x80, 0xd8, 0x80, 0x36, 0x20, 0x15, 0x50, 0xe8, 0x77, 0x87, 0xa4, 0xc9,
- 0x69, 0x29, 0x7c, 0x80, 0xa9, 0x12, 0xc1, 0xb3, 0x27, 0x57, 0xd3, 0xaa,
- 0xaa, 0x6a, 0x2b, 0xd1, 0x26, 0x57, 0x80, 0xc4, 0x12, 0x56, 0x52, 0xf8,
- 0x68, 0x49, 0x11, 0x1f, 0xe0, 0xcd, 0x17, 0x1e, 0x7a, 0x6e, 0x1d, 0xff,
- 0xc5, 0x41, 0xf5, 0xa2, 0x28, 0x1b, 0x1b, 0x1b, 0xaf, 0x8f, 0x2f, 0x0f,
- 0x4f, 0x4e, 0x8f, 0x5f, 0x27, 0x27, 0xef, 0xde, 0x9c, 0x5d, 0xbc, 0x3d,
- 0xbc, 0x94, 0xdc, 0x8c, 0xd7, 0xd6, 0x3d, 0xe7, 0xf8, 0x28, 0x85, 0x75,
- 0xcd, 0x73, 0xdd, 0x61, 0x0b, 0x9b, 0x55, 0x34, 0x93, 0x81, 0x88, 0x3f,
- 0x4f, 0x43, 0xd6, 0x9a, 0x83, 0x0d, 0xc5, 0x5e, 0x74, 0x04, 0x9e, 0xa4,
- 0x1c, 0xec, 0xd8, 0x40, 0xfc, 0x50, 0xa7, 0xd3, 0x02, 0x76, 0x11, 0x88,
- 0xf9, 0xda, 0xa6, 0x2c, 0x1f, 0x33, 0x5f, 0x8c, 0x8e, 0x3c, 0x1d, 0x7b,
- 0x72, 0x70, 0xb2, 0x33, 0x00, 0x33, 0x89, 0xc7, 0x7d, 0xa2, 0x14, 0x5a,
- 0x40, 0x7d, 0xa1, 0x76, 0x3c, 0xa4, 0xa6, 0xab, 0x12, 0x29, 0x26, 0x7e,
- 0x9b, 0x16, 0x7f, 0x08, 0x2b, 0x6a, 0x54, 0x01, 0xce, 0xe9, 0xc1, 0x4f,
- 0xfc, 0xf5, 0x25, 0x00, 0xa0, 0x0d, 0x4a, 0x45, 0x6b, 0x84, 0x56, 0x92,
- 0xb0, 0xb4, 0x6a, 0xb3, 0x52, 0xf6, 0xac, 0x03, 0xdf, 0xcb, 0x4a, 0x6d,
- 0x0d, 0xd5, 0x09, 0xfc, 0xb5, 0xdf, 0xd4, 0x96, 0x0d, 0xde, 0x1b, 0xb5,
- 0x69, 0x70, 0x22, 0x58, 0xec, 0x34, 0x17, 0x84, 0x22, 0x4a, 0x7f, 0x16,
- 0x8a, 0x8c, 0x68, 0x53, 0x4f, 0x9d, 0xf9, 0x9f, 0xef, 0x78, 0x14, 0xb9,
- 0x38, 0x6d, 0xee, 0xdc, 0x2a, 0x76, 0xfe, 0xe0, 0xb5, 0x79, 0x68, 0xba,
- 0x9c, 0x2f, 0x84, 0xb6, 0x45, 0xd5, 0x6a, 0x38, 0xf6, 0x74, 0x09, 0x59,
- 0x73, 0x83, 0x06, 0x02, 0x2f, 0xd0, 0x1b, 0x99, 0x03, 0x1e, 0x07, 0xf6,
- 0x77, 0xa3, 0x71, 0x41, 0x00, 0x87, 0xd8, 0x50, 0x5e, 0x97, 0xe8, 0xb8,
- 0xad, 0xbe, 0x60, 0x42, 0x46, 0xf6, 0xd9, 0x2e, 0x33, 0x72, 0xea, 0x12,
- 0x8f, 0x30, 0xff, 0x5b, 0x8a, 0x33, 0x47, 0x5b, 0x56, 0x1a, 0x94, 0xab,
- 0x22, 0x8c, 0x44, 0xb6, 0x06, 0xe5, 0xbf, 0xd8, 0xce, 0xef, 0xf1, 0x25,
- 0xbd, 0x7e, 0xda, 0xc1, 0xaa, 0x75, 0x7b, 0x20, 0x52, 0xdc, 0xc8, 0x93,
- 0x7b, 0x65, 0xcc, 0x21, 0xe8, 0x4e, 0xe4, 0x1e, 0x91, 0xe7, 0x14, 0x78,
- 0x07, 0x22, 0x29, 0x11, 0x1d, 0xd3, 0xed, 0xbb, 0x04, 0x0d, 0x4c, 0xf9,
- 0x91, 0x0c, 0x7b, 0x25, 0xb7, 0xf6, 0xea, 0xf6, 0x38, 0xa5, 0x4c, 0x00,
- 0x15, 0x21, 0xf4, 0x8a, 0x0d, 0x2d, 0x30, 0xd6, 0x97, 0x34, 0xf9, 0x11,
- 0xd2, 0x7f, 0x8b, 0xe6, 0x0a, 0x78, 0x91, 0xa0, 0xf0, 0xc9, 0xd2, 0x1a,
- 0x56, 0x15, 0x2a, 0x78, 0xf8, 0xce, 0xb0, 0x3e, 0x59, 0x87, 0x0e, 0xe8,
- 0x51, 0x7e, 0x42, 0x44, 0x4f, 0x93, 0x97, 0xf4, 0x2c, 0xa1, 0x2e, 0x79,
- 0xf8, 0x3e, 0x99, 0xd7, 0x8a, 0x46, 0x3b, 0x4c, 0x33, 0x48, 0xbb, 0x96,
- 0x3c, 0xd4, 0x73, 0x7a, 0x20, 0x55, 0x35, 0xbf, 0xe7, 0x78, 0xd4, 0x7a,
- 0x8b, 0x1b, 0xf3, 0x8d, 0x5e, 0x72, 0x4d, 0x86, 0xd2, 0xd8, 0x74, 0x3d,
- 0x10, 0xa0, 0x53, 0x7e, 0xfc, 0xd5, 0x45, 0x7a, 0x95, 0x66, 0xb3, 0x3f,
- 0xef, 0xef, 0x8e, 0xd2, 0xeb, 0xe5, 0x2c, 0xfd, 0x57, 0xbc, 0xf8, 0xea,
- 0xc9, 0x93, 0xfd, 0xdd, 0xcf, 0x3e, 0xdf, 0x0d, 0xb4, 0x03, 0x3f, 0xd7,
- 0x06, 0x18, 0x3b, 0x24, 0x74, 0xf1, 0x91, 0xe1, 0xe4, 0x3a, 0x87, 0x59,
- 0x47, 0xaa, 0x92, 0x4c, 0x40, 0xca, 0xf6, 0x24, 0x64, 0x24, 0xd7, 0x29,
- 0x9b, 0xed, 0x5b, 0x9b, 0x4d, 0xfd, 0xa7, 0xbd, 0x03, 0x96, 0x63, 0xd7,
- 0x70, 0xc3, 0xa7, 0xbc, 0x5d, 0x93, 0x97, 0x79, 0x61, 0xae, 0x9f, 0x2f,
- 0x93, 0x26, 0xbd, 0xb6, 0x1b, 0x55, 0x80, 0x18, 0xd2, 0xc6, 0xad, 0x65,
- 0x83, 0x60, 0xf5, 0x4c, 0x13, 0xa4, 0x4f, 0x84, 0x26, 0x71, 0x93, 0xfc,
- 0x20, 0x3d, 0x76, 0x84, 0xf4, 0xd0, 0x01, 0x3e, 0xda, 0x90, 0x3a, 0x53,
- 0xed, 0xd4, 0x10, 0x7f, 0x07, 0xb0, 0x47, 0xca, 0x10, 0x91, 0xbd, 0x05,
- 0x97, 0xd6, 0x5b, 0x6a, 0x3b, 0xf6, 0x98, 0xe5, 0xad, 0x2e, 0xa4, 0x2e,
- 0x2b, 0x33, 0x79, 0xa9, 0xae, 0x9d, 0xbd, 0x2f, 0x5f, 0x61, 0xe1, 0xf6,
- 0xbe, 0xfc, 0x57, 0xfb, 0xb3, 0x7d, 0xf9, 0xd9, 0xfe, 0x97, 0xff, 0x3a,
- 0x1c, 0xa2, 0x7f, 0xb4, 0x92, 0x9b, 0xfa, 0xeb, 0x4d, 0x01, 0x0b, 0x4a,
- 0xe5, 0xa8, 0xf1, 0xbf, 0xc8, 0xc6, 0x66, 0x3e, 0x3c, 0xac, 0x49, 0x4f,
- 0xbf, 0xec, 0x4f, 0x48, 0x5f, 0xc2, 0xa0, 0x56, 0xbe, 0xe4, 0xb5, 0x8f,
- 0x45, 0x58, 0xc7, 0xe6, 0xc7, 0x06, 0x2f, 0xd0, 0x8e, 0xe4, 0x3e, 0xe2,
- 0xe5, 0x7f, 0xa3, 0x1d, 0xf5, 0x6f, 0x1b, 0x89, 0x84, 0x24, 0x17, 0x59,
- 0x65, 0x14, 0x61, 0x8a, 0x52, 0xe8, 0xf6, 0x62, 0x80, 0x29, 0x86, 0x44,
- 0xa7, 0x96, 0xa9, 0xc4, 0x83, 0xee, 0x2a, 0x8f, 0xdd, 0xed, 0xdf, 0x05,
- 0xb4, 0x84, 0xd7, 0x66, 0x23, 0xb1, 0xcf, 0x70, 0x29, 0x8c, 0xd1, 0x05,
- 0x1a, 0x3a, 0xc5, 0x78, 0xf6, 0xcf, 0x3f, 0xfe, 0x28, 0x8a, 0x8f, 0xf9,
- 0x8b, 0xf4, 0xfc, 0xc6, 0xc8, 0x8c, 0xa9, 0x11, 0x43, 0x73, 0x70, 0x34,
- 0x09, 0x21, 0x9f, 0x5c, 0xcd, 0x57, 0x32, 0x52, 0x6e, 0xc4, 0x2c, 0xed,
- 0xe1, 0xe8, 0xe8, 0xe4, 0x04, 0x69, 0x9e, 0x98, 0xd4, 0x63, 0x16, 0x37,
- 0xd8, 0x46, 0x5b, 0xc8, 0xcb, 0x70, 0xb9, 0x84, 0xfe, 0x2e, 0xa5, 0xb5,
- 0xc3, 0xb2, 0x63, 0xa3, 0x9a, 0xc6, 0xd4, 0x5a, 0x96, 0xa5, 0xc4, 0xf6,
- 0x62, 0x6d, 0xe4, 0x55, 0x8f, 0x1f, 0xbc, 0xce, 0x7b, 0x12, 0x79, 0xe2,
- 0x9f, 0xf4, 0x1c, 0x1a, 0x1a, 0xaf, 0x07, 0x16, 0xed, 0x15, 0xab, 0x38,
- 0xf9, 0xdf, 0xb3, 0x57, 0x7b, 0xbb, 0xf1, 0x27, 0x10, 0x6a, 0x25, 0x1c,
- 0xc8, 0x57, 0x2e, 0x8a, 0xb7, 0xee, 0xf9, 0x7c, 0xca, 0x4f, 0xdf, 0xe4,
- 0xd3, 0xa9, 0x91, 0xdd, 0xe0, 0x16, 0x7c, 0xd5, 0x1b, 0xd3, 0x4d, 0x48,
- 0xff, 0x7f, 0x45, 0x3f, 0x10, 0x66, 0x92, 0x67, 0xeb, 0xe5, 0x78, 0x9e,
- 0xb7, 0x3a, 0xbc, 0x43, 0x03, 0xfc, 0x92, 0x06, 0xfc, 0x43, 0x66, 0x77,
- 0x47, 0x46, 0x2a, 0x18, 0xeb, 0x68, 0x9b, 0x57, 0x65, 0x39, 0x4e, 0xab,
- 0x4d, 0x89, 0xc1, 0x68, 0x3f, 0x37, 0xf7, 0xf6, 0x9f, 0x3c, 0x7d, 0xb6,
- 0x39, 0x14, 0x7d, 0x0a, 0xa7, 0xb9, 0xf1, 0x91, 0x48, 0xb8, 0x09, 0x8b,
- 0xa2, 0xc1, 0xe9, 0xd4, 0x28, 0xdf, 0x8f, 0x45, 0x44, 0x49, 0xda, 0xd0,
- 0xe7, 0x5e, 0xf1, 0xd7, 0xfe, 0x95, 0xbe, 0xf3, 0x0a, 0x9f, 0xf8, 0xd7,
- 0x7c, 0xfa, 0xca, 0x8e, 0xf0, 0x5f, 0x69, 0x2c, 0xaf, 0x64, 0x10, 0x6b,
- 0x44, 0x4f, 0x74, 0x51, 0x75, 0xf1, 0x36, 0x30, 0x58, 0xa4, 0x1b, 0x0c,
- 0xa6, 0x1c, 0xaa, 0x80, 0x36, 0xe9, 0xaa, 0xeb, 0x76, 0x3e, 0x0d, 0x4c,
- 0x2b, 0x03, 0x6a, 0x65, 0xe0, 0x04, 0x2a, 0x60, 0x3b, 0x07, 0xb4, 0x00,
- 0x7d, 0x29, 0xaf, 0x9c, 0xc1, 0x15, 0x22, 0x57, 0x75, 0x59, 0x22, 0x62,
- 0x7f, 0xf4, 0xcd, 0xc9, 0xa6, 0x64, 0xc9, 0xb0, 0x2d, 0xd7, 0x8f, 0x39,
- 0x93, 0x6d, 0x3e, 0xe0, 0x24, 0x5d, 0xd0, 0xa9, 0xdf, 0x50, 0x5c, 0xe2,
- 0x94, 0x92, 0x3e, 0xe8, 0xbb, 0x5c, 0x07, 0x6d, 0x3e, 0x26, 0xb7, 0xc2,
- 0x8c, 0xdc, 0xd3, 0x15, 0x03, 0x8a, 0x7a, 0xcd, 0x98, 0xf9, 0xa8, 0x25,
- 0xfb, 0x03, 0x01, 0x9a, 0x85, 0x2d, 0xa5, 0x1c, 0xbc, 0xb1, 0x11, 0x4a,
- 0x5b, 0xba, 0x27, 0x8f, 0x9a, 0x5f, 0xb1, 0x1c, 0x51, 0xd1, 0xd0, 0x83,
- 0x95, 0xea, 0xe4, 0x83, 0x2f, 0x35, 0x00, 0x30, 0x01, 0x60, 0x97, 0x74,
- 0xaa, 0xbe, 0x0d, 0x56, 0xdc, 0x48, 0x6e, 0xbe, 0xb4, 0xfc, 0x9c, 0x5f,
- 0x26, 0x80, 0x17, 0xe7, 0xb7, 0x24, 0x48, 0x28, 0x5e, 0x22, 0x76, 0xb0,
- 0xe2, 0xa5, 0x0d, 0xc7, 0x09, 0xca, 0x33, 0xe2, 0x52, 0x67, 0xe4, 0xe2,
- 0xf6, 0x91, 0x53, 0xc7, 0xf7, 0xe2, 0x11, 0xa0, 0x16, 0x36, 0xbf, 0xc0,
- 0xe6, 0x7f, 0x49, 0xcb, 0x80, 0x5f, 0x7f, 0xb9, 0xb9, 0x61, 0x39, 0xe1,
- 0xac, 0x66, 0xdd, 0x89, 0xf6, 0xf2, 0xc6, 0xf4, 0xc7, 0xe3, 0x61, 0x25,
- 0xb0, 0xb6, 0x44, 0xd8, 0x2c, 0xe0, 0x80, 0x31, 0xda, 0xce, 0x6c, 0x2a,
- 0x9c, 0xe1, 0xd6, 0x9b, 0xcc, 0x8d, 0x67, 0x04, 0x70, 0x43, 0xda, 0xdd,
- 0x26, 0xa5, 0x96, 0xe2, 0xbd, 0x4d, 0x8b, 0x92, 0x0b, 0xc7, 0x26, 0x04,
- 0x5d, 0x95, 0x29, 0x95, 0xf5, 0x86, 0x14, 0xdb, 0x3b, 0x6d, 0xdb, 0x1f,
- 0x58, 0xed, 0x5d, 0xee, 0xae, 0x80, 0x91, 0x31, 0x8a, 0x82, 0xa3, 0xf1,
- 0x86, 0x2a, 0x83, 0xe5, 0xa3, 0xaf, 0x68, 0xba, 0xf7, 0x86, 0xd7, 0xf9,
- 0x15, 0x4f, 0x86, 0x11, 0x8d, 0xd7, 0xd9, 0x8e, 0xf9, 0x67, 0xdf, 0xfc,
- 0x7c, 0x9f, 0xb4, 0x26, 0xfa, 0xcb, 0x13, 0x24, 0x4f, 0xad, 0x3b, 0x20,
- 0xf6, 0x70, 0xd0, 0x5f, 0x72, 0x7b, 0x37, 0x4b, 0x1c, 0x46, 0xba, 0x3a,
- 0x50, 0xf4, 0x5a, 0xd4, 0xce, 0xa9, 0x3e, 0xe8, 0xa7, 0x81, 0x90, 0x35,
- 0x44, 0x76, 0xe3, 0x92, 0x8a, 0x56, 0x6c, 0xba, 0x87, 0xa4, 0x3e, 0x88,
- 0x36, 0x4d, 0xca, 0x71, 0x2e, 0x8e, 0x14, 0x2a, 0xf2, 0xc1, 0xb5, 0x9a,
- 0xdd, 0x6d, 0xf7, 0xfd, 0xdc, 0x58, 0x23, 0xdb, 0x6f, 0xa9, 0x5c, 0x9e,
- 0x00, 0x45, 0x5c, 0xc1, 0x25, 0x7d, 0x7e, 0x4b, 0xf8, 0x5c, 0xbd, 0x52,
- 0x62, 0xac, 0x75, 0xde, 0x5d, 0xc6, 0x36, 0x25, 0x2a, 0xa7, 0xde, 0xe5,
- 0x75, 0xb3, 0x4d, 0x9f, 0xc9, 0x66, 0x8c, 0x96, 0x26, 0x1c, 0xcb, 0xfa,
- 0x55, 0x85, 0x49, 0xc3, 0x87, 0x36, 0x7d, 0x01, 0x50, 0x4e, 0x9a, 0xcc,
- 0x18, 0xa4, 0xa8, 0x39, 0x60, 0x21, 0x77, 0x3c, 0x67, 0x88, 0x6a, 0xec,
- 0xe3, 0xd9, 0x80, 0xaf, 0x4e, 0x51, 0x5d, 0x06, 0x6f, 0x86, 0xc9, 0x29,
- 0x72, 0xbc, 0xeb, 0x94, 0xd1, 0x79, 0xf4, 0x7a, 0xd5, 0x2d, 0x61, 0xf6,
- 0x0f, 0x2b, 0xca, 0x1b, 0x4c, 0x54, 0x4b, 0x58, 0x17, 0xba, 0xaf, 0x00,
- 0x43, 0xea, 0x2c, 0x43, 0x56, 0x2e, 0x44, 0x19, 0xe9, 0xc3, 0x6b, 0x6d,
- 0x9f, 0x83, 0x77, 0x9e, 0x3d, 0x74, 0xa8, 0xee, 0xb2, 0xbb, 0xd6, 0x6b,
- 0x84, 0xd3, 0xac, 0x44, 0x4b, 0xf4, 0x64, 0xba, 0x3d, 0x09, 0x9c, 0x04,
- 0x99, 0xb1, 0x67, 0x44, 0x39, 0x34, 0x10, 0xc5, 0x35, 0xad, 0x61, 0xab,
- 0x11, 0x57, 0x2d, 0xed, 0xa5, 0x1e, 0x8c, 0xbb, 0x59, 0x66, 0x2d, 0x60,
- 0x5e, 0xab, 0xd2, 0x26, 0x88, 0xc3, 0x61, 0x22, 0xe0, 0xcb, 0x36, 0xc0,
- 0x46, 0x9d, 0xa4, 0x7e, 0xa5, 0xb7, 0xe6, 0x2f, 0xe4, 0x38, 0x1c, 0x57,
- 0x66, 0xd5, 0xb3, 0x8a, 0xef, 0x05, 0xce, 0xea, 0xf1, 0x88, 0x7b, 0xbf,
- 0xbd, 0x7c, 0x7b, 0x9a, 0x28, 0xca, 0xd1, 0x95, 0x53, 0xe9, 0x34, 0x97,
- 0x12, 0x43, 0x14, 0xf7, 0x05, 0x2b, 0x43, 0xf2, 0x14, 0x5f, 0x71, 0x3c,
- 0xb7, 0x54, 0x06, 0x9f, 0xd0, 0xe4, 0xb4, 0xce, 0xad, 0xf7, 0x04, 0xbf,
- 0xba, 0xc1, 0x58, 0x6b, 0x9b, 0x34, 0x05, 0x9b, 0xfd, 0x64, 0x93, 0xba,
- 0x4a, 0xbf, 0xd8, 0xc4, 0x7c, 0xe2, 0xc7, 0xde, 0xf4, 0x6d, 0x0e, 0x23,
- 0x47, 0x91, 0x9e, 0x79, 0xf5, 0x55, 0x6b, 0x96, 0xf0, 0x73, 0x6d, 0xea,
- 0x15, 0x57, 0x78, 0x04, 0x87, 0x4f, 0xdf, 0xf5, 0xda, 0x7f, 0x75, 0x54,
- 0x12, 0xee, 0x2c, 0x11, 0x03, 0xbb, 0xc4, 0xd4, 0x89, 0xfd, 0x59, 0x8e,
- 0x92, 0xd8, 0xdf, 0x70, 0x8a, 0x2f, 0x55, 0x1e, 0xd9, 0xa4, 0x4d, 0x16,
- 0x71, 0xbc, 0x05, 0x54, 0xfc, 0x9a, 0xd5, 0xcc, 0xd9, 0x38, 0xbb, 0x2b,
- 0xe1, 0x0a, 0x80, 0xe0, 0xd9, 0x1b, 0xa2, 0x44, 0xd2, 0xa1, 0xe4, 0xdb,
- 0x06, 0xac, 0x85, 0xdd, 0xc3, 0x84, 0xf6, 0x6c, 0x1e, 0xad, 0xda, 0xdd,
- 0x3a, 0xcb, 0x31, 0x01, 0xb6, 0xc8, 0x27, 0x54, 0x64, 0x63, 0xe4, 0xd7,
- 0xb4, 0xbc, 0x26, 0xf1, 0xd5, 0x37, 0x07, 0x8d, 0xfe, 0x44, 0x0a, 0xf1,
- 0xbe, 0x7c, 0x94, 0x3b, 0x8c, 0xb3, 0xc2, 0x91, 0x16, 0xfd, 0xf7, 0x8a,
- 0xa4, 0xd2, 0x37, 0xe4, 0xb4, 0x9c, 0x48, 0xdb, 0xb6, 0x69, 0x5e, 0x0f,
- 0xd3, 0xbe, 0xfd, 0x85, 0xff, 0x2d, 0x9d, 0x9c, 0x54, 0x5a, 0x66, 0x82,
- 0x66, 0xe1, 0xaf, 0x9e, 0xdd, 0x5b, 0x00, 0x4d, 0x78, 0xa1, 0x08, 0xed,
- 0x9e, 0x2f, 0xaf, 0x99, 0xd4, 0xed, 0x6d, 0x7e, 0xb5, 0xc9, 0x59, 0xfd,
- 0x9b, 0x2f, 0x37, 0x21, 0xc1, 0x48, 0x2e, 0xcd, 0xc7, 0x19, 0xaa, 0xcb,
- 0xe4, 0x86, 0xda, 0xe4, 0xab, 0x71, 0xc0, 0x0a, 0x84, 0xc0, 0x50, 0xba,
- 0x03, 0x82, 0xbb, 0xd9, 0xd9, 0x7a, 0x7e, 0xba, 0x23, 0x6c, 0x79, 0x47,
- 0x1b, 0x4d, 0xc0, 0xd4, 0xe3, 0x86, 0x53, 0x5b, 0xe4, 0xe6, 0x85, 0x4e,
- 0x06, 0x18, 0x14, 0xc2, 0x05, 0x12, 0x5f, 0xe4, 0xb2, 0x58, 0x50, 0xf1,
- 0xfb, 0xa4, 0x81, 0x4b, 0x84, 0xcf, 0xd2, 0x30, 0x79, 0x5f, 0xc0, 0xe7,
- 0x76, 0x93, 0x91, 0x45, 0x9b, 0x57, 0x93, 0xe5, 0x9c, 0xfc, 0x09, 0x13,
- 0xf2, 0x62, 0xe1, 0xf6, 0x61, 0x1d, 0xa1, 0x15, 0x50, 0xf7, 0x3b, 0xcc,
- 0x1e, 0x0c, 0x76, 0x6d, 0xcb, 0x77, 0x91, 0x3c, 0x42, 0x29, 0x53, 0xe2,
- 0xba, 0x86, 0x6a, 0x60, 0xe1, 0x50, 0x44, 0x00, 0x51, 0x0c, 0xef, 0xf8,
- 0xcd, 0xf1, 0xc5, 0xc5, 0xf1, 0x05, 0xcd, 0xf7, 0x61, 0x87, 0x85, 0x4f,
- 0x41, 0xb1, 0x5d, 0x50, 0x50, 0x13, 0x75, 0x7d, 0x77, 0x8a, 0xd6, 0x11,
- 0x91, 0x28, 0x14, 0x0a, 0x3a, 0x98, 0x0f, 0x0c, 0x00, 0xc4, 0x44, 0x09,
- 0xbe, 0x0f, 0x10, 0x89, 0xda, 0xd6, 0xc1, 0x8f, 0xc4, 0x25, 0x78, 0x09,
- 0x5b, 0x0a, 0x86, 0x6b, 0xa1, 0x12, 0x32, 0x84, 0xa5, 0x96, 0xdc, 0xdf,
- 0x64, 0x2d, 0x1d, 0x75, 0x28, 0xb9, 0xb5, 0x99, 0x84, 0xbf, 0x67, 0xd6,
- 0x89, 0x80, 0x21, 0x5f, 0xd1, 0x19, 0x25, 0xc3, 0x09, 0x93, 0x51, 0x37,
- 0xcb, 0x45, 0x3e, 0xb5, 0x2e, 0x59, 0xf3, 0x73, 0xa3, 0x03, 0x26, 0x7c,
- 0xca, 0x6b, 0xcd, 0x4e, 0x41, 0xfc, 0x51, 0x3d, 0x06, 0xbe, 0x4b, 0x8c,
- 0x61, 0x77, 0x9c, 0x43, 0x0b, 0xa5, 0x6a, 0x9c, 0xe6, 0xa5, 0x30, 0xf7,
- 0xed, 0xe2, 0x71, 0xd9, 0xfb, 0x19, 0x5c, 0x81, 0x24, 0x2d, 0x34, 0x61,
- 0xc6, 0x97, 0x0c, 0xe4, 0x70, 0x9a, 0xbb, 0x0c, 0x75, 0x47, 0x63, 0x7d,
- 0x81, 0x9a, 0xd1, 0xea, 0x20, 0xf9, 0xa9, 0xce, 0x27, 0xbf, 0xb8, 0xcb,
- 0x03, 0x05, 0x3b, 0x6d, 0x7c, 0x2a, 0x4c, 0x9d, 0x4c, 0x94, 0x58, 0xc2,
- 0x5c, 0xab, 0xfd, 0x7e, 0x74, 0x7c, 0x91, 0x1c, 0x7e, 0x43, 0xf8, 0xee,
- 0xff, 0xe0, 0x02, 0xd3, 0x73, 0x72, 0x3b, 0x6c, 0x08, 0x84, 0x82, 0x00,
- 0x97, 0x64, 0xea, 0xaf, 0x16, 0x4a, 0xcc, 0xa3, 0x76, 0x4a, 0x1a, 0xf7,
- 0xca, 0x43, 0x99, 0x68, 0xad, 0x21, 0xf9, 0xf4, 0x1e, 0x58, 0xc5, 0xc7,
- 0xac, 0x21, 0x1d, 0x32, 0x7f, 0x15, 0x19, 0xee, 0x88, 0xe3, 0x06, 0xba,
- 0x36, 0xd2, 0xfb, 0x3a, 0xb0, 0x39, 0x79, 0x95, 0x0e, 0x93, 0xcd, 0xb7,
- 0xe5, 0xdf, 0x8d, 0x32, 0x90, 0xee, 0x3c, 0x19, 0xee, 0x26, 0x5b, 0x3f,
- 0xe4, 0xc5, 0x8b, 0x67, 0x5f, 0x24, 0x27, 0xdb, 0x9b, 0xad, 0xf4, 0x7b,
- 0xa6, 0x97, 0x19, 0xa7, 0xc5, 0x47, 0xbb, 0x64, 0x67, 0x38, 0xd9, 0x9c,
- 0x06, 0x27, 0x9e, 0x87, 0x9a, 0xc9, 0x1d, 0x56, 0xb6, 0x88, 0xca, 0x4e,
- 0xc9, 0xe4, 0x4f, 0xbe, 0x97, 0x02, 0xe5, 0x27, 0x30, 0xf1, 0xcd, 0x53,
- 0x53, 0x9a, 0xba, 0x17, 0xcf, 0x82, 0x26, 0x9e, 0xda, 0x36, 0xde, 0x73,
- 0x1b, 0xbf, 0xb2, 0x89, 0xfd, 0xe1, 0xee, 0x7e, 0xb2, 0x75, 0x36, 0xda,
- 0xd9, 0xb7, 0x2d, 0x84, 0x4d, 0xec, 0xa3, 0x09, 0x7a, 0xa8, 0xfd, 0xf2,
- 0x53, 0xfa, 0xfe, 0x4f, 0x59, 0xf1, 0x4b, 0xb2, 0xf5, 0xe3, 0xde, 0x9e,
- 0x69, 0xe0, 0x8b, 0xe4, 0xf0, 0xe4, 0xc7, 0xe4, 0xe9, 0xd0, 0x34, 0xf6,
- 0x2e, 0xbd, 0x95, 0xe6, 0x04, 0x0d, 0x7a, 0x84, 0x46, 0xcc, 0xef, 0x83,
- 0x36, 0x9e, 0x75, 0xda, 0x38, 0xcd, 0x8b, 0xe5, 0x27, 0x73, 0xad, 0xec,
- 0x0e, 0x9f, 0xec, 0x27, 0xf9, 0xb3, 0xcf, 0x9f, 0x6b, 0x43, 0xd2, 0x06,
- 0x7e, 0xdf, 0x76, 0x29, 0x32, 0x1e, 0x8a, 0x51, 0x75, 0x8e, 0x3f, 0x19,
- 0x81, 0x06, 0x11, 0x51, 0x91, 0x3b, 0xef, 0x86, 0x58, 0xc5, 0x78, 0xbb,
- 0x11, 0xf1, 0x8c, 0x59, 0x29, 0x21, 0x08, 0xc8, 0xe0, 0x5b, 0x34, 0x17,
- 0xe7, 0x41, 0xd0, 0x9d, 0x64, 0xcb, 0x3d, 0xfa, 0x45, 0xf2, 0x76, 0x74,
- 0x72, 0x6c, 0x46, 0xb4, 0x6b, 0xba, 0xe6, 0xe6, 0x90, 0x3b, 0x84, 0x5f,
- 0x61, 0x72, 0x5f, 0x00, 0x6d, 0x56, 0xda, 0x50, 0x9d, 0x9b, 0x53, 0x4f,
- 0xcd, 0xa6, 0x33, 0x17, 0x77, 0x8d, 0xef, 0x52, 0x12, 0xc9, 0xe0, 0xf0,
- 0x9a, 0xec, 0x08, 0xbe, 0x6a, 0xf1, 0xe9, 0xef, 0xca, 0xc2, 0x1c, 0x93,
- 0xaa, 0xac, 0x28, 0xd7, 0x69, 0xb3, 0xa5, 0x2d, 0x7c, 0xf7, 0xfa, 0x98,
- 0x6b, 0xe6, 0xdf, 0xa6, 0x85, 0x91, 0x91, 0x84, 0x79, 0x55, 0x7f, 0xa4,
- 0x48, 0x3d, 0xc7, 0x5c, 0xf8, 0xfd, 0xd3, 0xfb, 0xe2, 0x93, 0x59, 0xc7,
- 0xcf, 0x86, 0x7b, 0x94, 0x64, 0x4d, 0xa6, 0xef, 0x9b, 0xb7, 0xe6, 0xdf,
- 0x7b, 0x4f, 0x37, 0x13, 0xfa, 0x55, 0xdb, 0x7c, 0xd7, 0xf3, 0xba, 0x71,
- 0x74, 0x76, 0xf6, 0xdd, 0x09, 0xa7, 0x6a, 0x1c, 0x89, 0xef, 0x93, 0x94,
- 0x2b, 0x6b, 0x1a, 0xb3, 0x74, 0x35, 0x26, 0x9c, 0xab, 0x2f, 0x42, 0xc4,
- 0xec, 0x63, 0x96, 0x2d, 0x50, 0xe5, 0xdb, 0x91, 0x08, 0x8d, 0xc8, 0x68,
- 0x9b, 0x8d, 0x44, 0xea, 0x4f, 0x07, 0x9b, 0xb3, 0xa9, 0xad, 0x9f, 0x75,
- 0x7c, 0x6f, 0x71, 0x39, 0x52, 0xc7, 0xe0, 0x8d, 0x2e, 0xda, 0xfa, 0x02,
- 0xf5, 0x13, 0x63, 0x85, 0x89, 0xe1, 0x48, 0x0c, 0xe0, 0xcd, 0x91, 0xd1,
- 0xee, 0xb9, 0xd3, 0x07, 0xe2, 0x5a, 0xdd, 0xf4, 0x18, 0x03, 0xa0, 0xd1,
- 0xa2, 0xc0, 0x86, 0x93, 0xca, 0xc8, 0x40, 0x90, 0x54, 0x77, 0x0b, 0x0e,
- 0x9f, 0xc2, 0x27, 0x67, 0x6e, 0xcd, 0x77, 0x87, 0x6f, 0x8f, 0x5f, 0x7d,
- 0x7f, 0x78, 0xfa, 0xfe, 0xd8, 0xbc, 0x92, 0x9b, 0x8f, 0x6d, 0xb9, 0xa4,
- 0x3b, 0xf4, 0x71, 0x9e, 0x4f, 0xca, 0x19, 0x85, 0x82, 0x36, 0xbf, 0xd8,
- 0xdc, 0xe0, 0x84, 0xf0, 0xa4, 0x47, 0x6f, 0xed, 0xf1, 0x6b, 0x66, 0x5f,
- 0xd0, 0xbf, 0xf6, 0xf9, 0x5f, 0xfb, 0x5f, 0xf4, 0xb6, 0x5b, 0x83, 0x0e,
- 0x4c, 0xe5, 0x2b, 0x70, 0xce, 0x82, 0x2b, 0x14, 0x9c, 0xea, 0xa8, 0xb6,
- 0xe0, 0x59, 0xe9, 0x69, 0x20, 0x45, 0xef, 0x36, 0x7a, 0x76, 0x6b, 0x7c,
- 0xef, 0x1b, 0xe2, 0x3d, 0x7a, 0xe9, 0x15, 0x14, 0x8c, 0xde, 0x76, 0xdf,
- 0xaa, 0x1c, 0x08, 0x6a, 0x53, 0x1b, 0xda, 0x04, 0xa3, 0x44, 0x26, 0x5b,
- 0x3d, 0xfe, 0xcb, 0xab, 0xd7, 0x87, 0x97, 0xc7, 0xf4, 0x82, 0x7e, 0x5e,
- 0x91, 0xf3, 0xb5, 0xf0, 0x81, 0xfa, 0xb3, 0x25, 0x41, 0xe4, 0x57, 0x34,
- 0xa0, 0xde, 0x36, 0x07, 0x1c, 0x10, 0xfe, 0xee, 0xf4, 0xab, 0x2c, 0x34,
- 0xd5, 0xda, 0xd5, 0xa1, 0xd7, 0x9a, 0x5b, 0xb2, 0xd5, 0xe3, 0xdf, 0xf5,
- 0xb6, 0xd5, 0x7d, 0x2b, 0xdc, 0x37, 0x12, 0x53, 0x9c, 0xa2, 0x2c, 0x22,
- 0xa8, 0x85, 0xe5, 0x24, 0x32, 0xb7, 0x3e, 0x12, 0x51, 0x60, 0x77, 0x93,
- 0xc7, 0xa1, 0x60, 0x17, 0x5e, 0x0a, 0xdd, 0xc9, 0xc1, 0x54, 0x96, 0x7b,
- 0xfb, 0x4f, 0xbe, 0xc0, 0x7c, 0xbe, 0xea, 0xed, 0x98, 0xbb, 0xa1, 0xf7,
- 0x05, 0x7d, 0x3a, 0x6f, 0x3c, 0xce, 0x47, 0xf9, 0x0c, 0xd9, 0x53, 0xb2,
- 0xa3, 0x38, 0xb1, 0x85, 0x56, 0xdd, 0x83, 0xef, 0xc1, 0x84, 0xde, 0x71,
- 0x5d, 0x97, 0x02, 0xde, 0x68, 0x98, 0x1f, 0xeb, 0x05, 0x02, 0x33, 0x90,
- 0xb3, 0xb0, 0x47, 0x17, 0x9f, 0xf3, 0xef, 0x8f, 0x3e, 0xbf, 0xcb, 0x63,
- 0x14, 0x80, 0x20, 0xfa, 0xe6, 0xfc, 0x5e, 0x4b, 0xbf, 0xf0, 0x2d, 0xe8,
- 0xe4, 0xbc, 0x66, 0x81, 0x66, 0x3c, 0x16, 0x07, 0x8f, 0x1a, 0x23, 0xd0,
- 0x09, 0x8c, 0x68, 0xb9, 0x87, 0xa2, 0x84, 0xbc, 0x00, 0x3f, 0x1d, 0x42,
- 0xef, 0xec, 0x74, 0x9c, 0x1b, 0x4d, 0xd8, 0x16, 0xb3, 0x78, 0x56, 0xb9,
- 0x9d, 0x7a, 0x3d, 0x7e, 0xb9, 0x07, 0xbd, 0x44, 0x17, 0x25, 0xcf, 0x65,
- 0x6d, 0x1d, 0x49, 0x08, 0x09, 0xca, 0xb3, 0xed, 0x75, 0xea, 0x54, 0x90,
- 0x61, 0x18, 0x6c, 0xd2, 0xb3, 0x7d, 0x6c, 0x44, 0x4d, 0x91, 0x55, 0x6b,
- 0x53, 0x21, 0x22, 0x11, 0x23, 0x0c, 0xd1, 0xc7, 0xfe, 0x37, 0xef, 0x0c,
- 0x87, 0x43, 0x6b, 0xee, 0x20, 0xda, 0x25, 0x81, 0x22, 0x82, 0xb4, 0x6b,
- 0x33, 0x00, 0xa6, 0x4c, 0xfb, 0x27, 0x78, 0x89, 0xdb, 0x92, 0x22, 0x23,
- 0x7e, 0x02, 0x7b, 0x34, 0x3c, 0x1f, 0xc7, 0xa6, 0x7c, 0x76, 0x53, 0x51,
- 0x19, 0x3e, 0xc6, 0x16, 0x61, 0x4d, 0xdf, 0xd8, 0x01, 0x29, 0x94, 0x48,
- 0x56, 0x4e, 0x95, 0x76, 0x2e, 0x68, 0x07, 0x53, 0xca, 0x37, 0x13, 0xf7,
- 0xdd, 0x5b, 0x2a, 0x24, 0xed, 0x4a, 0x9f, 0x13, 0x04, 0x48, 0xc8, 0x95,
- 0x77, 0x40, 0x20, 0x00, 0xce, 0x01, 0x65, 0x89, 0x14, 0xec, 0x1e, 0xd0,
- 0x1b, 0x64, 0x61, 0xd5, 0x66, 0x69, 0x47, 0x10, 0xa3, 0xc9, 0x66, 0x86,
- 0xee, 0xdf, 0x77, 0xa8, 0xd2, 0x1b, 0x60, 0x69, 0xca, 0xc4, 0x7a, 0x36,
- 0x5d, 0x45, 0x6c, 0x4a, 0x06, 0xef, 0x7c, 0x56, 0x94, 0x17, 0x36, 0x60,
- 0xc4, 0x16, 0x2d, 0x1d, 0x54, 0xe9, 0x21, 0x98, 0x1d, 0xeb, 0x82, 0xda,
- 0x13, 0x6d, 0xd1, 0x46, 0xb4, 0x3b, 0x73, 0xe3, 0x6e, 0xe5, 0xb6, 0xe8,
- 0x32, 0x33, 0xca, 0xae, 0x65, 0xc6, 0xc6, 0x70, 0x72, 0x2f, 0x49, 0xef,
- 0xcc, 0xd5, 0x53, 0x64, 0x94, 0x51, 0x89, 0x74, 0x04, 0x78, 0x65, 0x4e,
- 0x3d, 0x67, 0xa3, 0xc3, 0xcd, 0x16, 0xc6, 0xac, 0xd4, 0x51, 0x66, 0x25,
- 0x5b, 0x6c, 0x68, 0x30, 0x5c, 0xb2, 0x7a, 0xf5, 0x48, 0x01, 0x2f, 0xe7,
- 0x84, 0x79, 0x2a, 0x9a, 0xba, 0x9a, 0xe7, 0xd4, 0x73, 0x23, 0xa2, 0x47,
- 0xb2, 0x6f, 0x72, 0x64, 0x10, 0x92, 0x9f, 0x83, 0x93, 0x1f, 0x74, 0xb6,
- 0xd2, 0x62, 0xea, 0x7d, 0xc4, 0x06, 0x91, 0xc5, 0xfd, 0x44, 0x09, 0xb9,
- 0xc5, 0x00, 0x28, 0x13, 0x1a, 0xb7, 0x15, 0xf3, 0xea, 0xfa, 0x9a, 0xad,
- 0xb6, 0xa4, 0x3b, 0xb4, 0xf8, 0x26, 0x3b, 0xa5, 0x59, 0xa1, 0xbc, 0xe5,
- 0xfb, 0x55, 0xb3, 0x79, 0x69, 0x79, 0x15, 0xc5, 0xeb, 0xd2, 0xda, 0xcc,
- 0x1a, 0x38, 0xe4, 0x75, 0x6b, 0x6c, 0x99, 0x14, 0x4a, 0x2a, 0xda, 0x81,
- 0xde, 0xb3, 0x8b, 0x0d, 0xd0, 0xe1, 0x14, 0x0e, 0x42, 0x41, 0x17, 0x1d,
- 0xf0, 0x7b, 0x2e, 0x4d, 0xc4, 0xe5, 0x8c, 0xde, 0xd9, 0xa4, 0x28, 0x6c,
- 0xd7, 0x64, 0x9c, 0x3a, 0x93, 0x6b, 0x23, 0x69, 0xb9, 0x7c, 0x89, 0xa3,
- 0xeb, 0xa4, 0x10, 0x39, 0x54, 0xde, 0x66, 0x0e, 0xfe, 0xd1, 0x39, 0x1c,
- 0x1d, 0xfa, 0xb0, 0x9c, 0x7e, 0x2b, 0x4c, 0x3a, 0x51, 0x58, 0x2b, 0xaf,
- 0x30, 0xc8, 0xce, 0xac, 0x0c, 0x13, 0xaf, 0x49, 0x76, 0x95, 0x94, 0x2d,
- 0x70, 0x6a, 0xf4, 0x4d, 0x82, 0xcb, 0xda, 0x22, 0xef, 0x11, 0xc6, 0x70,
- 0xf1, 0x4c, 0x13, 0xa6, 0x92, 0x52, 0xfa, 0x06, 0x9b, 0x4d, 0xe7, 0x82,
- 0xb4, 0x3a, 0xca, 0x9e, 0x5d, 0xa4, 0x9e, 0x12, 0x65, 0x60, 0x13, 0x60,
- 0x0f, 0x90, 0x42, 0x67, 0xe3, 0xec, 0x97, 0xb2, 0x4e, 0xd8, 0xc9, 0xf0,
- 0xa0, 0x75, 0x04, 0x69, 0x70, 0xe6, 0x6c, 0x1e, 0x05, 0x2a, 0x47, 0x08,
- 0xaa, 0x97, 0x82, 0xff, 0x83, 0xf1, 0x06, 0x57, 0x08, 0x0d, 0x26, 0x2a,
- 0xd1, 0xd7, 0x43, 0x0c, 0x8c, 0x5b, 0x07, 0xf3, 0xa1, 0x73, 0x7a, 0x7e,
- 0x71, 0xf6, 0xcd, 0xc5, 0xf1, 0x68, 0x94, 0xbc, 0x3d, 0xbe, 0x64, 0x5b,
- 0xff, 0x92, 0x93, 0xe4, 0xae, 0xc1, 0x18, 0x8f, 0x80, 0x83, 0x42, 0x34,
- 0x69, 0x5e, 0x88, 0x3a, 0x12, 0x50, 0xa5, 0x44, 0x64, 0xe8, 0xb8, 0x1d,
- 0xd9, 0x88, 0x9f, 0x49, 0x6e, 0xdd, 0x0d, 0x5c, 0xfe, 0x48, 0x3c, 0x42,
- 0x34, 0xd2, 0x7a, 0xd0, 0x9d, 0x1b, 0x15, 0x8a, 0x31, 0xa7, 0x22, 0xd9,
- 0x2a, 0x41, 0xe7, 0x47, 0xa7, 0x2b, 0xdb, 0xfc, 0x89, 0xe1, 0xfd, 0xd9,
- 0xcc, 0xa6, 0x90, 0x02, 0xfe, 0xd9, 0x18, 0xbf, 0xb2, 0x29, 0xfe, 0x9c,
- 0xfc, 0x68, 0xda, 0x9c, 0x1a, 0xe3, 0x55, 0xb8, 0xae, 0x47, 0x20, 0xb9,
- 0x76, 0xd8, 0xcb, 0xb9, 0x47, 0xe2, 0x9e, 0x70, 0x51, 0x60, 0xf5, 0x00,
- 0xe7, 0x28, 0xd0, 0x5d, 0x18, 0xd5, 0x48, 0x12, 0xdf, 0xec, 0x97, 0x85,
- 0x79, 0x2e, 0x49, 0x4e, 0xb3, 0x2b, 0xb0, 0x22, 0xe3, 0x73, 0xa6, 0xb9,
- 0x5d, 0x02, 0xa9, 0xde, 0x7b, 0x4b, 0x3f, 0xda, 0x4d, 0x9e, 0x7c, 0xfe,
- 0x7c, 0xf7, 0x73, 0xfe, 0xab, 0xfe, 0xf7, 0xc5, 0xd3, 0x5d, 0x41, 0xcb,
- 0x37, 0xff, 0x7a, 0x7a, 0xf0, 0x74, 0xef, 0x80, 0xd0, 0x1b, 0x77, 0x0f,
- 0x76, 0xcd, 0xff, 0x7f, 0x2a, 0x3f, 0x21, 0x88, 0xca, 0x17, 0xfb, 0x9f,
- 0x7f, 0x86, 0x94, 0x15, 0xda, 0x1f, 0x33, 0xf3, 0x91, 0x41, 0x53, 0x0e,
- 0x00, 0x22, 0x05, 0xcd, 0xe7, 0xcf, 0x6d, 0x4f, 0x24, 0xa5, 0xf9, 0x4f,
- 0x28, 0x92, 0x7a, 0xed, 0xc8, 0x34, 0xa7, 0xea, 0x55, 0x65, 0xcc, 0x19,
- 0x9f, 0xc5, 0xd2, 0x0e, 0x43, 0xde, 0x66, 0x5e, 0x45, 0xa0, 0xb2, 0xb5,
- 0xde, 0xe1, 0x94, 0x70, 0x0f, 0x00, 0xee, 0xd7, 0x7e, 0x5a, 0x4b, 0xbf,
- 0x37, 0x00, 0xeb, 0x26, 0x4b, 0x25, 0xef, 0x4d, 0x94, 0xbc, 0xcf, 0x27,
- 0x94, 0xef, 0xb0, 0xb0, 0xff, 0xda, 0xef, 0xb1, 0xe7, 0x8a, 0xde, 0x92,
- 0xdd, 0x90, 0x84, 0x5f, 0xb3, 0xd5, 0x03, 0x91, 0x6f, 0xb5, 0x36, 0xcf,
- 0x86, 0x5b, 0x7e, 0x37, 0x53, 0x1e, 0x9b, 0xba, 0xad, 0xba, 0x62, 0x3e,
- 0xf5, 0xc8, 0x90, 0x83, 0xe6, 0xde, 0x2f, 0xfc, 0xf6, 0x1e, 0xd3, 0x9c,
- 0x1b, 0x11, 0x76, 0xb0, 0x5d, 0xb9, 0x81, 0xb7, 0x38, 0x39, 0x67, 0x9f,
- 0x59, 0x16, 0x55, 0x85, 0x0d, 0xb5, 0x5c, 0xe6, 0x78, 0xd5, 0x6e, 0xd9,
- 0x01, 0xbf, 0x21, 0x3a, 0xa7, 0xad, 0x64, 0x03, 0x77, 0x2d, 0xae, 0x78,
- 0x7e, 0x5e, 0x77, 0x76, 0xf0, 0x29, 0xda, 0x8d, 0xde, 0xf7, 0xe4, 0x1b,
- 0x38, 0x4f, 0xf6, 0xd0, 0xad, 0x1d, 0x9a, 0xcb, 0x82, 0x57, 0x0a, 0x4f,
- 0x4e, 0xb6, 0x82, 0xf2, 0x1d, 0x3b, 0x92, 0xee, 0x39, 0x24, 0x9a, 0xdb,
- 0xe6, 0xfc, 0xdb, 0x67, 0x06, 0x60, 0x70, 0xe1, 0x3c, 0x99, 0x94, 0x4b,
- 0xe2, 0x76, 0xd8, 0x56, 0x11, 0x36, 0xf8, 0x93, 0xcd, 0xad, 0xc2, 0x65,
- 0xc6, 0xb9, 0x67, 0xd4, 0x14, 0xcd, 0xe7, 0xcc, 0xaf, 0x7e, 0xb5, 0xd2,
- 0x6e, 0x9c, 0x56, 0x2d, 0x16, 0x05, 0xd3, 0x14, 0x28, 0x38, 0xe6, 0x84,
- 0x40, 0x87, 0x02, 0x45, 0xd6, 0x23, 0xfe, 0x65, 0x63, 0x63, 0x74, 0x7e,
- 0x7c, 0xfc, 0x3a, 0x39, 0x3d, 0x79, 0x7b, 0x72, 0xe9, 0x69, 0xe1, 0xf6,
- 0xf6, 0x50, 0x4f, 0xab, 0x72, 0x09, 0x76, 0xa6, 0xc3, 0xc1, 0x31, 0x0b,
- 0xc3, 0x8b, 0xdc, 0xdf, 0xf3, 0x4c, 0xea, 0x1d, 0x66, 0xdd, 0xf7, 0x60,
- 0x6f, 0x03, 0x8b, 0x69, 0x98, 0x7c, 0xed, 0x65, 0x2f, 0x2a, 0xb1, 0xf9,
- 0x80, 0xf1, 0x00, 0x06, 0x7f, 0x91, 0x24, 0x8d, 0xb6, 0xba, 0x24, 0xd8,
- 0xb2, 0xb6, 0x08, 0x47, 0x12, 0x50, 0x3b, 0xbd, 0xa2, 0xb9, 0xcd, 0x38,
- 0x09, 0xda, 0x73, 0xcb, 0x21, 0xb7, 0xee, 0x2e, 0x03, 0x3e, 0xc1, 0x3c,
- 0xe7, 0xea, 0xc8, 0xb4, 0x83, 0x4b, 0xad, 0x37, 0x1e, 0xe4, 0xb8, 0xff,
- 0x45, 0xef, 0x74, 0xd8, 0xac, 0x57, 0xfd, 0x56, 0xcd, 0xec, 0x8c, 0x66,
- 0x02, 0x8a, 0xe4, 0xc9, 0xae, 0x2d, 0x2c, 0x58, 0x40, 0xe6, 0x88, 0x7e,
- 0x4f, 0x1f, 0xdb, 0x4b, 0x8c, 0x12, 0xb2, 0x24, 0x55, 0xbe, 0x5a, 0x16,
- 0xc1, 0x75, 0xf7, 0x17, 0x7e, 0xd7, 0x8c, 0xff, 0xf9, 0x2e, 0xae, 0xb7,
- 0xab, 0xb4, 0x1a, 0x18, 0x75, 0xeb, 0x7e, 0xa0, 0x2e, 0x55, 0xde, 0x11,
- 0x92, 0x14, 0xcc, 0xfe, 0x9e, 0xcc, 0xb1, 0x9e, 0x76, 0x54, 0x44, 0x57,
- 0x1d, 0x52, 0x22, 0x2e, 0x39, 0x93, 0x03, 0x40, 0x43, 0xa7, 0xda, 0x5c,
- 0xf5, 0x70, 0x3a, 0x05, 0xc7, 0xe1, 0x0e, 0xeb, 0x2a, 0x3a, 0x19, 0x45,
- 0xb5, 0x02, 0x10, 0xab, 0xd4, 0x6a, 0x4e, 0xc3, 0x94, 0xb1, 0x84, 0xfa,
- 0xf4, 0x3c, 0xd9, 0xfb, 0x9c, 0xc6, 0xf1, 0xb8, 0xf1, 0xbc, 0x29, 0xab,
- 0x89, 0xad, 0x02, 0x86, 0x8d, 0xe0, 0x95, 0x84, 0x72, 0x01, 0x03, 0x88,
- 0xf7, 0x78, 0x76, 0x35, 0x73, 0x15, 0x99, 0x75, 0x64, 0x94, 0x48, 0x50,
- 0x1d, 0xee, 0x28, 0x44, 0xb9, 0x59, 0x2d, 0xa2, 0xbb, 0x46, 0xe6, 0xc5,
- 0xe3, 0xab, 0xad, 0x6c, 0xc9, 0x28, 0x4f, 0x03, 0xb9, 0x44, 0xcc, 0x5e,
- 0xbb, 0xcb, 0xa7, 0x50, 0xa5, 0x1d, 0x02, 0x9d, 0x59, 0x2f, 0xde, 0x7c,
- 0x9c, 0xd0, 0x8c, 0x98, 0x25, 0x82, 0x9d, 0xb6, 0x67, 0xa2, 0xc0, 0xd0,
- 0xb4, 0x96, 0xf0, 0x28, 0x6c, 0x41, 0x7f, 0xa0, 0x8a, 0x64, 0x17, 0x17,
- 0x20, 0xfb, 0x89, 0x44, 0x73, 0xcf, 0x7d, 0x85, 0xb2, 0xfa, 0x9b, 0x66,
- 0xa6, 0xce, 0x84, 0xb7, 0x76, 0x63, 0xb7, 0xc7, 0x4c, 0xd8, 0x2a, 0xde,
- 0xb0, 0xf7, 0x76, 0x8d, 0xd2, 0x3a, 0x2b, 0xed, 0xb6, 0x92, 0x4d, 0x15,
- 0x5a, 0xa2, 0x18, 0xd6, 0x00, 0xb3, 0xb3, 0xb7, 0xfb, 0xdd, 0xea, 0x59,
- 0x07, 0x76, 0xfd, 0xda, 0x97, 0xf7, 0x9f, 0xae, 0x59, 0xb4, 0xb3, 0x0a,
- 0xc6, 0x78, 0xa6, 0x89, 0x8a, 0x50, 0x04, 0x5d, 0xe4, 0x25, 0x58, 0x36,
- 0xb3, 0xf1, 0xb3, 0xeb, 0x14, 0x2c, 0xd0, 0x6b, 0x7a, 0xaf, 0xd5, 0x1b,
- 0x9d, 0xae, 0xbc, 0x95, 0xd4, 0x69, 0xfe, 0x65, 0x4d, 0x6e, 0xb1, 0x05,
- 0xb0, 0xf1, 0x9c, 0xed, 0x6a, 0x0b, 0xc0, 0x19, 0x4d, 0xc1, 0x7b, 0x9b,
- 0x25, 0x67, 0xbf, 0x2d, 0x24, 0x74, 0xf7, 0x54, 0xd9, 0xf5, 0x92, 0xb1,
- 0x2b, 0x4a, 0xb6, 0xf5, 0x09, 0xae, 0x5a, 0xce, 0xab, 0x91, 0xcd, 0x94,
- 0x3b, 0xc4, 0xfb, 0x09, 0x82, 0x77, 0x92, 0xaa, 0xca, 0x2a, 0x54, 0xce,
- 0x9d, 0x8b, 0x81, 0x9c, 0xb2, 0x93, 0x72, 0x2e, 0x5c, 0xb0, 0x7c, 0xbc,
- 0x0a, 0xaf, 0x14, 0x9f, 0xf1, 0x18, 0x87, 0xa8, 0xcd, 0xe5, 0x8d, 0x62,
- 0x85, 0x3d, 0x15, 0x80, 0x51, 0x34, 0xac, 0xe1, 0xb0, 0x00, 0x1a, 0xe8,
- 0xcb, 0xae, 0x45, 0x4b, 0xf6, 0x53, 0x24, 0xf1, 0x6b, 0xc5, 0xc5, 0x64,
- 0xfc, 0x7c, 0x72, 0xf6, 0x1f, 0x9d, 0xbd, 0x7b, 0x73, 0xf2, 0x8d, 0x05,
- 0x1f, 0x62, 0x21, 0xde, 0x02, 0xc5, 0x60, 0xf7, 0xb1, 0x1f, 0xe9, 0x16,
- 0x8a, 0x5d, 0x49, 0x91, 0x35, 0xe2, 0xe9, 0x83, 0xff, 0x03, 0x08, 0x90,
- 0xe2, 0x09, 0x39, 0xc8, 0x19, 0xb1, 0xa3, 0xde, 0x76, 0xee, 0x86, 0x0e,
- 0xb8, 0x1c, 0x97, 0x52, 0xa4, 0x55, 0xb3, 0x5c, 0xd8, 0x0c, 0x42, 0x8f,
- 0xa2, 0x57, 0xf0, 0xb5, 0xb5, 0x78, 0x7c, 0xb9, 0x60, 0xd1, 0x24, 0x25,
- 0xa0, 0x2d, 0x6f, 0x2e, 0xdf, 0x01, 0xe4, 0x4e, 0x10, 0xf4, 0x93, 0x8d,
- 0x24, 0x9e, 0x9c, 0x33, 0x23, 0x40, 0x4e, 0x3f, 0xa9, 0x5d, 0xe3, 0x37,
- 0xd3, 0xb4, 0xbe, 0xe1, 0x81, 0xe2, 0xd2, 0xc8, 0x39, 0x97, 0x1a, 0xb1,
- 0xb6, 0x74, 0x4a, 0x86, 0xba, 0xcb, 0xc8, 0xb1, 0x29, 0xba, 0x2e, 0x3e,
- 0x64, 0x79, 0xcd, 0x5c, 0x92, 0x92, 0x16, 0x9e, 0xa6, 0x08, 0x55, 0x22,
- 0xd6, 0x89, 0x9f, 0xbc, 0xa2, 0xb0, 0xcc, 0x01, 0xc1, 0xcc, 0xcf, 0x19,
- 0x02, 0xce, 0x2f, 0x18, 0x15, 0x29, 0xe9, 0xb0, 0xe0, 0x4f, 0xae, 0xbc,
- 0xda, 0x33, 0x4e, 0x12, 0xd4, 0x4d, 0xc7, 0x3e, 0x62, 0x72, 0xb0, 0x6c,
- 0xfe, 0x69, 0x73, 0x50, 0xdf, 0xcf, 0xc7, 0xe5, 0x4c, 0xab, 0x23, 0x2c,
- 0xe4, 0x83, 0x3e, 0xe4, 0x93, 0xdd, 0x25, 0x1c, 0xa9, 0x6d, 0x3c, 0xb7,
- 0xa4, 0x4b, 0x98, 0x72, 0xfd, 0x67, 0x6e, 0x23, 0x84, 0x87, 0x74, 0x14,
- 0x40, 0xe3, 0x21, 0x19, 0xcf, 0xb4, 0x8c, 0x42, 0xc5, 0x62, 0xb6, 0x1f,
- 0x66, 0xaa, 0x3d, 0x74, 0x8a, 0xf8, 0x95, 0x4b, 0xf2, 0x70, 0x80, 0x51,
- 0xc4, 0xa8, 0x3b, 0x3d, 0xc1, 0xc0, 0xc0, 0x00, 0xe9, 0x6d, 0xfe, 0x85,
- 0xa4, 0xce, 0x7b, 0x88, 0x34, 0x4c, 0x41, 0x62, 0xba, 0xfa, 0x33, 0x3b,
- 0x14, 0x39, 0xee, 0xf7, 0x17, 0xfd, 0xb8, 0x3e, 0xda, 0x99, 0x7a, 0xb3,
- 0x9f, 0xd2, 0xea, 0x5a, 0x70, 0xf5, 0x24, 0x92, 0x06, 0x23, 0xd1, 0xd2,
- 0xdc, 0x58, 0xc7, 0x24, 0x29, 0x25, 0x36, 0x6b, 0x06, 0xea, 0xd3, 0x92,
- 0xab, 0xff, 0xa4, 0x36, 0x8a, 0x5d, 0x92, 0x76, 0x23, 0x7a, 0x12, 0xe7,
- 0x4f, 0x36, 0x17, 0x25, 0x75, 0x77, 0x99, 0x12, 0x56, 0x38, 0xff, 0xac,
- 0x5c, 0x66, 0xde, 0x6b, 0xe4, 0xc4, 0x83, 0x25, 0x9c, 0x89, 0xe3, 0x84,
- 0x3f, 0x05, 0x5d, 0x82, 0x90, 0x68, 0x84, 0xb7, 0xd3, 0x35, 0xc1, 0xbf,
- 0x7f, 0x25, 0x9c, 0x65, 0xe6, 0x3c, 0x0b, 0xb6, 0x89, 0x00, 0xfe, 0x7d,
- 0xbe, 0x2b, 0xee, 0xb7, 0x46, 0x72, 0x55, 0xeb, 0xe4, 0xf0, 0xe2, 0xd8,
- 0x68, 0xb6, 0xd7, 0x05, 0x50, 0x25, 0x8a, 0x46, 0xcb, 0xdf, 0x32, 0x2e,
- 0xe5, 0xa2, 0x59, 0x90, 0xf3, 0x41, 0x1f, 0xbc, 0xf3, 0xde, 0xa4, 0xcd,
- 0x24, 0x89, 0x01, 0x5c, 0x71, 0xed, 0xb6, 0xdc, 0x44, 0xd1, 0x82, 0x21,
- 0x75, 0x08, 0xd8, 0x80, 0xb7, 0x14, 0x85, 0x48, 0xcc, 0xa7, 0x4a, 0x45,
- 0x0a, 0x3e, 0x0f, 0xc4, 0xba, 0x0f, 0x11, 0xac, 0x73, 0x8d, 0x53, 0xed,
- 0xea, 0x05, 0xfe, 0xa6, 0x50, 0x9a, 0xf2, 0xad, 0x56, 0xd8, 0xd3, 0x6d,
- 0xa7, 0x7e, 0xdc, 0x65, 0xf4, 0x37, 0xdc, 0x33, 0xa4, 0x8b, 0x74, 0xf5,
- 0x82, 0xcc, 0xa6, 0xc1, 0xb3, 0xf7, 0x7a, 0xea, 0x29, 0xbf, 0x5c, 0xac,
- 0x77, 0x93, 0xcd, 0x16, 0xec, 0x98, 0x16, 0xec, 0x1e, 0xf1, 0xeb, 0xb0,
- 0x39, 0x30, 0x95, 0xb3, 0x4a, 0xbb, 0x82, 0x72, 0x85, 0xc7, 0x84, 0x6f,
- 0xf4, 0x91, 0x15, 0x00, 0x5f, 0x3e, 0x45, 0x7d, 0xbb, 0x7f, 0xb2, 0xa3,
- 0x75, 0x7d, 0xb0, 0xbf, 0xa4, 0x1f, 0xbd, 0xb2, 0x78, 0x74, 0xd4, 0x8b,
- 0x21, 0x7d, 0x08, 0x22, 0x15, 0x31, 0x53, 0xfa, 0x0b, 0x7e, 0x8c, 0xd4,
- 0x37, 0x05, 0x28, 0x85, 0xd4, 0xb1, 0xa0, 0x57, 0xa5, 0xc4, 0x54, 0x5d,
- 0x47, 0x38, 0xb0, 0x07, 0x09, 0x3d, 0xf6, 0x55, 0xe3, 0xc1, 0x77, 0x3b,
- 0xca, 0x6e, 0x4e, 0xfe, 0x1b, 0x2a, 0xf5, 0xd5, 0x03, 0x5f, 0x67, 0x2d,
- 0x3a, 0x74, 0x5b, 0xce, 0xd3, 0x1b, 0xf4, 0xcc, 0x5c, 0x6c, 0xce, 0x66,
- 0x4e, 0xe0, 0xeb, 0x63, 0xb4, 0xaa, 0xa8, 0x7c, 0x73, 0x0a, 0x93, 0xc8,
- 0x2e, 0xa2, 0xda, 0xb8, 0x6f, 0xd5, 0x21, 0x10, 0x6d, 0x1d, 0x95, 0xe9,
- 0x58, 0x28, 0x2e, 0xd4, 0x72, 0x20, 0x49, 0xe0, 0x36, 0xaf, 0x35, 0xf8,
- 0x68, 0xf6, 0xf6, 0x84, 0x73, 0x22, 0x1a, 0x86, 0x10, 0xc8, 0x9a, 0x89,
- 0x37, 0x95, 0xd9, 0xe4, 0xa6, 0xe4, 0x84, 0x5a, 0x33, 0x69, 0x5e, 0x4d,
- 0x66, 0x2f, 0xf9, 0x9f, 0xb2, 0x07, 0xbe, 0x73, 0x95, 0x75, 0xb4, 0x11,
- 0x86, 0x8c, 0x1c, 0x39, 0x74, 0x1b, 0xe2, 0xf8, 0xc7, 0xcb, 0x8b, 0xc3,
- 0xe4, 0xdb, 0xe3, 0xc3, 0xd7, 0xc7, 0x17, 0xa3, 0xce, 0xa5, 0x2f, 0xe9,
- 0x1f, 0xac, 0xa1, 0x91, 0x13, 0x18, 0xaa, 0xb1, 0x42, 0x05, 0xc0, 0x26,
- 0x4a, 0xe7, 0x2a, 0xf5, 0xcc, 0xe6, 0xa1, 0x83, 0x64, 0xce, 0x07, 0x19,
- 0x44, 0x1c, 0x2d, 0x00, 0xac, 0x71, 0x0d, 0x61, 0x63, 0xdb, 0x98, 0x18,
- 0x09, 0x45, 0x49, 0x0c, 0xea, 0x32, 0xf7, 0xcb, 0x5a, 0x1c, 0xba, 0x9e,
- 0xbb, 0x4c, 0xa6, 0xa5, 0x56, 0xec, 0xb5, 0x57, 0xee, 0x5b, 0x57, 0x99,
- 0xed, 0x89, 0x2d, 0xb9, 0x64, 0xc4, 0x6b, 0xd8, 0xfb, 0x71, 0x60, 0xbe,
- 0x3b, 0x30, 0x93, 0x3f, 0x20, 0xf8, 0xc5, 0xfb, 0xac, 0xee, 0x75, 0x5c,
- 0x80, 0xed, 0xcf, 0x43, 0x46, 0x5f, 0x87, 0x27, 0xe9, 0xdb, 0x68, 0x4b,
- 0x74, 0xba, 0x66, 0xc4, 0x98, 0xd4, 0xb5, 0x20, 0x94, 0xfb, 0x57, 0x95,
- 0x64, 0x39, 0x41, 0x41, 0x0d, 0x8a, 0x24, 0x28, 0x39, 0x33, 0x53, 0xf2,
- 0xc1, 0xd0, 0x11, 0x19, 0x02, 0x74, 0x1d, 0x73, 0xf6, 0xf8, 0x52, 0x9f,
- 0x31, 0x02, 0x33, 0x7b, 0xcc, 0x4c, 0xb7, 0xe4, 0x21, 0xff, 0x7e, 0x40,
- 0x00, 0x44, 0x12, 0xf0, 0xeb, 0x56, 0x7c, 0x54, 0x9c, 0xa1, 0xc2, 0xe2,
- 0x28, 0xcd, 0x51, 0x1f, 0xec, 0x9e, 0xd7, 0xbc, 0x7d, 0xfa, 0xa4, 0xf2,
- 0x86, 0xc8, 0xbb, 0x9c, 0x05, 0x46, 0x46, 0x3d, 0xfc, 0x9b, 0x4c, 0x9a,
- 0xcb, 0x54, 0x94, 0x2c, 0xd8, 0xbc, 0x82, 0x1d, 0x7f, 0x33, 0x83, 0xaa,
- 0x0d, 0xa9, 0xe3, 0xf6, 0xb9, 0x2c, 0xf9, 0xb6, 0xac, 0x71, 0x17, 0x84,
- 0x8f, 0xd3, 0x25, 0x1f, 0x9b, 0x7e, 0xbc, 0x21, 0xf1, 0x2d, 0x0b, 0xeb,
- 0xba, 0xb1, 0xa1, 0x75, 0x4f, 0xe7, 0x87, 0x97, 0xdf, 0x22, 0xba, 0x8a,
- 0x2d, 0xfc, 0x1a, 0x18, 0x27, 0x1a, 0x53, 0x0b, 0xeb, 0xa6, 0xac, 0x01,
- 0xc7, 0xfa, 0xaf, 0x42, 0x29, 0x5a, 0xca, 0x4b, 0x8a, 0xde, 0xe5, 0x9c,
- 0x88, 0x34, 0x63, 0xa2, 0x62, 0xc8, 0xe8, 0x16, 0x2f, 0x23, 0xf2, 0xde,
- 0x6d, 0x51, 0x9c, 0xcd, 0xb7, 0xdc, 0xe4, 0x92, 0xf5, 0x4d, 0x1e, 0x13,
- 0x36, 0x3d, 0x29, 0x73, 0x1b, 0x49, 0x1b, 0x2b, 0x18, 0xbf, 0xa0, 0x9a,
- 0x64, 0x0e, 0x40, 0x4d, 0xcb, 0x38, 0x52, 0xa1, 0x77, 0xa4, 0xbf, 0x9a,
- 0xdf, 0x0f, 0x43, 0xc8, 0x9c, 0xe4, 0xeb, 0x65, 0xd3, 0x16, 0x2b, 0x1d,
- 0xc4, 0x62, 0xab, 0x59, 0x56, 0x65, 0xd9, 0x78, 0x7d, 0x80, 0xf6, 0x93,
- 0x36, 0x72, 0xa2, 0x19, 0x92, 0x92, 0xfb, 0x42, 0x4d, 0x15, 0xa2, 0x77,
- 0xfb, 0x8a, 0x61, 0x3a, 0xae, 0xcb, 0xd9, 0xb2, 0xf1, 0x52, 0xb0, 0x7f,
- 0x5d, 0x9f, 0xbd, 0x4e, 0x6f, 0x9d, 0x0c, 0x15, 0x9e, 0xb3, 0x60, 0x50,
- 0x39, 0x63, 0xe9, 0x1b, 0xf5, 0x12, 0xc1, 0xc6, 0xaa, 0x2c, 0xda, 0xac,
- 0x70, 0xc8, 0xf6, 0xde, 0xde, 0xd8, 0x18, 0xe9, 0x62, 0x13, 0x40, 0x6b,
- 0xb8, 0xe8, 0x3f, 0x40, 0x9b, 0xa4, 0x3e, 0x70, 0xb0, 0x60, 0x62, 0xfe,
- 0xa2, 0xb0, 0x6d, 0x19, 0xaf, 0x29, 0x44, 0x38, 0xaf, 0x71, 0x5e, 0xb7,
- 0x07, 0x85, 0x5f, 0xd9, 0x70, 0x85, 0x16, 0x81, 0x5d, 0x96, 0x8a, 0xd4,
- 0x2f, 0xe1, 0x3a, 0xb7, 0x21, 0x5a, 0x75, 0xeb, 0x51, 0x4c, 0x68, 0xba,
- 0x04, 0x94, 0xfe, 0xda, 0xa6, 0xe3, 0x52, 0x27, 0x77, 0xfe, 0xd7, 0x4e,
- 0xd2, 0x67, 0xce, 0x82, 0x08, 0xcc, 0xce, 0x32, 0xf9, 0xff, 0x20, 0xf1,
- 0x4a, 0x00, 0x79, 0xa9, 0xcd, 0x61, 0x1b, 0xf2, 0x75, 0x68, 0x4c, 0xa8,
- 0x9b, 0x6a, 0xe2, 0x76, 0xbf, 0xd1, 0x0e, 0xb2, 0x3b, 0xb2, 0x5f, 0xd4,
- 0x46, 0x10, 0x60, 0x0f, 0x66, 0xa0, 0xb6, 0x90, 0x49, 0x00, 0xc6, 0xb8,
- 0xb2, 0x5e, 0x3d, 0xe2, 0x57, 0x65, 0x12, 0x52, 0x56, 0xeb, 0x41, 0xb2,
- 0xa4, 0x61, 0xd3, 0x8d, 0xa4, 0x65, 0xb7, 0x13, 0x3d, 0x21, 0xff, 0xa9,
- 0x15, 0x47, 0x92, 0xd8, 0x25, 0xdb, 0xdf, 0x23, 0xed, 0x13, 0xb2, 0x63,
- 0xd4, 0x35, 0x49, 0xc6, 0x29, 0x67, 0xd3, 0x69, 0x38, 0x52, 0x3b, 0xa9,
- 0x5a, 0x00, 0x45, 0x2b, 0x01, 0x44, 0x29, 0x18, 0x21, 0x94, 0x49, 0x46,
- 0xa8, 0xc3, 0x5c, 0x59, 0x4d, 0xa4, 0x5f, 0x6a, 0xc9, 0xe8, 0x95, 0xaa,
- 0xb5, 0x1c, 0x76, 0xa5, 0x5c, 0xf7, 0xe5, 0xee, 0x47, 0xb9, 0x3c, 0x22,
- 0x73, 0x44, 0xa9, 0xe9, 0xab, 0x04, 0x3a, 0x24, 0xa1, 0xf6, 0xe5, 0xe4,
- 0x0d, 0x3f, 0x21, 0xc5, 0x65, 0x6c, 0x5e, 0x53, 0xa9, 0x87, 0xb8, 0xa4,
- 0x04, 0x75, 0x04, 0xfe, 0xaf, 0x9b, 0x5c, 0xf2, 0x4a, 0x79, 0xd6, 0xdb,
- 0xac, 0xaa, 0xf0, 0xf0, 0x51, 0x4a, 0x81, 0x8b, 0xaa, 0xda, 0xc4, 0x87,
- 0x61, 0x78, 0x60, 0x86, 0x16, 0x07, 0x55, 0x2e, 0x91, 0x13, 0xbf, 0xf0,
- 0x9b, 0xb3, 0x30, 0x6c, 0xae, 0xf3, 0x23, 0xbf, 0xee, 0x7f, 0x92, 0x92,
- 0x58, 0x8b, 0x84, 0xab, 0x48, 0x04, 0xdc, 0x8d, 0x2e, 0x94, 0xfd, 0x3d,
- 0x18, 0xa6, 0x9c, 0xb3, 0x01, 0x64, 0x51, 0x6d, 0xa1, 0x45, 0xce, 0xe6,
- 0x4d, 0xfe, 0x76, 0x5f, 0x66, 0xc9, 0x96, 0xc5, 0x4b, 0x88, 0x99, 0xf5,
- 0x42, 0x2f, 0xee, 0xd4, 0x62, 0x85, 0xe3, 0x52, 0xeb, 0xba, 0xa9, 0x96,
- 0x93, 0xa6, 0xcd, 0x0b, 0xeb, 0x76, 0x98, 0x65, 0xa0, 0xe3, 0x39, 0x2e,
- 0x7d, 0xdb, 0xfe, 0xe4, 0x5c, 0xcc, 0x7b, 0xb6, 0x3e, 0xa8, 0x67, 0x5b,
- 0x69, 0xab, 0xd2, 0xc5, 0x72, 0x92, 0xfa, 0xdf, 0xdd, 0xb6, 0xbb, 0x6c,
- 0x70, 0x6e, 0xcb, 0xde, 0xdb, 0x80, 0x45, 0xa8, 0x4e, 0xf0, 0xee, 0x5e,
- 0x51, 0xc4, 0xa0, 0x78, 0x54, 0x89, 0xc0, 0x25, 0x42, 0xad, 0x21, 0x97,
- 0xe5, 0x86, 0x85, 0x34, 0x34, 0x5d, 0x1a, 0x48, 0xaa, 0x2a, 0x47, 0x7f,
- 0x77, 0xcc, 0x44, 0x2a, 0xff, 0x8f, 0xe5, 0xbe, 0xaa, 0x1d, 0x2c, 0x62,
- 0x27, 0x4f, 0x15, 0xa0, 0x4a, 0x56, 0x3f, 0x14, 0x78, 0x37, 0x99, 0xbf,
- 0x61, 0xf2, 0x5a, 0x0e, 0x85, 0x7c, 0xa1, 0xab, 0x4e, 0x84, 0x77, 0xe3,
- 0x39, 0x83, 0x96, 0x04, 0xfb, 0xe8, 0xb5, 0xfa, 0x54, 0x21, 0x72, 0x30,
- 0x37, 0x64, 0xd9, 0xe8, 0x22, 0x99, 0x79, 0xd5, 0x4f, 0x98, 0x2e, 0xd0,
- 0x88, 0x37, 0x67, 0xd9, 0xee, 0xa6, 0x47, 0xde, 0xb5, 0xc5, 0x49, 0xff,
- 0x25, 0xac, 0x1f, 0x0b, 0x2f, 0xc8, 0xde, 0x0b, 0x4a, 0x6e, 0xdb, 0x8e,
- 0x74, 0xc5, 0x34, 0xf1, 0x6b, 0x3b, 0xb3, 0xf7, 0x62, 0x7f, 0xb8, 0xf7,
- 0xfc, 0xf3, 0xe1, 0xee, 0x70, 0x6f, 0x97, 0xe4, 0x0b, 0x75, 0xc5, 0xeb,
- 0x1c, 0xcf, 0x4b, 0xe4, 0x53, 0xad, 0xf7, 0xc2, 0x6f, 0xbe, 0x3b, 0xbe,
- 0xfc, 0xe1, 0xec, 0xe2, 0xbb, 0xe4, 0xe4, 0xdd, 0xe5, 0xf1, 0xc5, 0x9b,
- 0xc3, 0xa3, 0xc7, 0x42, 0xec, 0xfb, 0x6e, 0x6b, 0x8f, 0xb8, 0x3c, 0x73,
- 0x13, 0x13, 0xfa, 0x06, 0xdd, 0x9c, 0x65, 0xcd, 0xcd, 0xee, 0xc1, 0xde,
- 0x5a, 0x10, 0xe9, 0x88, 0x7b, 0xd0, 0xbd, 0xaf, 0x83, 0xda, 0xa3, 0x41,
- 0xad, 0x6e, 0xc5, 0x82, 0x29, 0x8e, 0x38, 0xb7, 0xca, 0xe6, 0xe5, 0x42,
- 0xcc, 0x83, 0x1b, 0x09, 0x18, 0xaa, 0x22, 0xd8, 0xc7, 0x0c, 0x57, 0xcb,
- 0x4c, 0x6f, 0x02, 0x07, 0x23, 0x39, 0xe8, 0x22, 0x73, 0x29, 0x3f, 0x79,
- 0x99, 0xcf, 0x1a, 0x71, 0xa7, 0x30, 0x00, 0xed, 0x14, 0x2a, 0x9e, 0x4a,
- 0x65, 0x29, 0x60, 0xa3, 0xdd, 0x22, 0xb4, 0xa5, 0x0c, 0x11, 0x38, 0xb5,
- 0x75, 0x22, 0x16, 0x2a, 0x60, 0x23, 0xf1, 0xf4, 0x74, 0xf4, 0xb5, 0xcd,
- 0xf3, 0xee, 0xa7, 0xcf, 0x76, 0xd0, 0x52, 0x6b, 0xcd, 0x6b, 0xc6, 0xc0,
- 0x5a, 0xae, 0xd1, 0x23, 0xe9, 0x08, 0x4e, 0x83, 0xd7, 0x1b, 0xfe, 0x14,
- 0x14, 0x2a, 0x82, 0x35, 0x03, 0xa0, 0x63, 0x0b, 0xd3, 0x98, 0xef, 0x28,
- 0xd4, 0x4e, 0xb0, 0xfe, 0xa7, 0x44, 0x14, 0xd4, 0x7a, 0xdd, 0x82, 0x15,
- 0x4c, 0x98, 0xaa, 0xc4, 0x7f, 0x9d, 0x55, 0x6d, 0x64, 0x67, 0x4e, 0xab,
- 0xf4, 0x0e, 0xa4, 0x2b, 0xb9, 0x03, 0x09, 0xdd, 0x68, 0x73, 0x6e, 0x91,
- 0xe2, 0xe4, 0xe6, 0x3c, 0x39, 0x3f, 0x7e, 0x3b, 0x50, 0xce, 0x63, 0xf3,
- 0x77, 0x76, 0x46, 0x29, 0x22, 0x24, 0xd7, 0xf6, 0x2c, 0xb2, 0x42, 0x73,
- 0x69, 0x20, 0x13, 0x25, 0xf9, 0xc7, 0x1f, 0x00, 0x1d, 0x1a, 0x8b, 0x19,
- 0x29, 0x29, 0xa3, 0x9a, 0x73, 0xc9, 0x05, 0x86, 0x5d, 0x20, 0x4d, 0x5a,
- 0x4f, 0x49, 0x58, 0x4e, 0xb6, 0x6c, 0x92, 0x2e, 0x7d, 0x0f, 0x99, 0xa8,
- 0xc8, 0x1a, 0xb0, 0x69, 0x02, 0xa5, 0x92, 0x00, 0x9e, 0x7f, 0x77, 0x34,
- 0xfa, 0xd3, 0xde, 0xbe, 0x74, 0x67, 0x5b, 0xad, 0x02, 0x92, 0x55, 0xdd,
- 0xca, 0x79, 0x88, 0x6b, 0xbf, 0x8f, 0x5a, 0x5f, 0x8d, 0x03, 0x8e, 0xc5,
- 0xd8, 0xb2, 0x85, 0x41, 0xdb, 0xad, 0xca, 0x20, 0x64, 0x7e, 0xdd, 0x5b,
- 0x15, 0xd3, 0xb2, 0xf8, 0x52, 0x48, 0x04, 0xa4, 0x4f, 0x42, 0xbb, 0xd4,
- 0xd8, 0x54, 0xbf, 0xb4, 0xd0, 0x1f, 0x71, 0xcb, 0xd2, 0xda, 0x66, 0x2d,
- 0x45, 0x56, 0x9c, 0xce, 0xd2, 0x5d, 0x73, 0x9a, 0x6f, 0xf7, 0x5b, 0x42,
- 0x76, 0x95, 0x9b, 0x5d, 0xa1, 0x7b, 0xdc, 0x67, 0x70, 0x00, 0x24, 0x7b,
- 0x7d, 0xaa, 0xc4, 0x6e, 0x85, 0x63, 0x2e, 0xa1, 0xa7, 0xcf, 0xcc, 0x42,
- 0x99, 0x93, 0xc5, 0xe0, 0x0a, 0x24, 0x14, 0xca, 0x19, 0x99, 0x2e, 0xf6,
- 0x91, 0xd7, 0x15, 0x71, 0xbd, 0x2c, 0x38, 0x8f, 0xf4, 0xdd, 0x30, 0xf9,
- 0x36, 0x2b, 0xa8, 0xc0, 0x9d, 0x32, 0xee, 0xb4, 0xf6, 0x0a, 0x79, 0x81,
- 0xc4, 0x2c, 0x09, 0xa6, 0xbd, 0xd3, 0x2c, 0x15, 0x14, 0x4d, 0x23, 0xeb,
- 0x6a, 0xb6, 0x70, 0x95, 0x65, 0x2a, 0xa5, 0xec, 0x3c, 0x81, 0xfc, 0xb4,
- 0x88, 0x14, 0x0c, 0xeb, 0x4c, 0x0d, 0x6c, 0xb5, 0xa1, 0x30, 0x41, 0x62,
- 0x80, 0xe6, 0xe4, 0x98, 0x23, 0xd6, 0x24, 0x5e, 0xe5, 0x1b, 0x00, 0x60,
- 0x93, 0xb7, 0x90, 0x2d, 0x2e, 0x3d, 0x64, 0xd9, 0x78, 0x48, 0x34, 0x97,
- 0x04, 0x82, 0x41, 0x24, 0x1c, 0xe6, 0xdf, 0x3b, 0xfb, 0xbb, 0x7b, 0x9f,
- 0xed, 0x7e, 0xb6, 0xf7, 0x6c, 0xef, 0xd9, 0xb3, 0x67, 0x7b, 0xfb, 0x38,
- 0x87, 0xd3, 0xea, 0x86, 0xdc, 0x23, 0xb5, 0xb9, 0x92, 0xd2, 0x62, 0x72,
- 0x3f, 0x9c, 0x1a, 0x7d, 0x97, 0x1c, 0x6c, 0xc3, 0xe5, 0xc7, 0x1d, 0xef,
- 0x28, 0xd3, 0xb5, 0x70, 0xc3, 0xf5, 0xfe, 0x6d, 0xe7, 0xb8, 0x32, 0x1c,
- 0x87, 0x40, 0x60, 0x69, 0xeb, 0xdc, 0xd0, 0xb6, 0xe1, 0xcc, 0x49, 0x3d,
- 0xc2, 0x2b, 0x21, 0xb3, 0x8e, 0x13, 0x8b, 0x5b, 0x4c, 0x2d, 0x0c, 0x17,
- 0xd9, 0xfc, 0xc0, 0x96, 0x2b, 0xeb, 0xf0, 0x84, 0x2b, 0xc3, 0x1a, 0x1f,
- 0x9e, 0x23, 0xb7, 0xc8, 0xae, 0x67, 0xa2, 0x74, 0xf8, 0xe6, 0x8d, 0x6d,
- 0x22, 0x52, 0x26, 0xc2, 0x46, 0x91, 0xf0, 0x24, 0x41, 0xab, 0x37, 0x7b,
- 0xb5, 0x91, 0xb4, 0x5b, 0x7e, 0xb8, 0x22, 0xa5, 0xdf, 0x35, 0x22, 0x10,
- 0x20, 0x80, 0x50, 0x26, 0x85, 0x59, 0xdc, 0x40, 0x9a, 0xad, 0x24, 0x21,
- 0x2a, 0x82, 0x77, 0xc5, 0x2e, 0x02, 0x38, 0xbb, 0x64, 0x4e, 0x23, 0x40,
- 0xaa, 0x2c, 0xc2, 0x7c, 0x9e, 0xcc, 0xaf, 0x6f, 0x9f, 0x90, 0x57, 0xfc,
- 0xf2, 0x74, 0xa4, 0x91, 0x93, 0x22, 0xbb, 0xf3, 0xb6, 0x1f, 0x13, 0x0a,
- 0xc8, 0x1e, 0x25, 0x27, 0x11, 0x03, 0x25, 0x03, 0x0e, 0x01, 0x3d, 0x61,
- 0xc9, 0xe1, 0x42, 0x69, 0xae, 0x40, 0x42, 0x27, 0x41, 0x52, 0x8d, 0xa9,
- 0x2b, 0x4a, 0x7a, 0xc6, 0x0a, 0x93, 0x85, 0x6c, 0x21, 0x24, 0x3e, 0xa3,
- 0x50, 0x3d, 0xe9, 0x27, 0x83, 0x7d, 0x00, 0xe1, 0xec, 0xb5, 0x27, 0x31,
- 0x6d, 0x18, 0xf4, 0x8f, 0xda, 0x30, 0x2d, 0x69, 0x2b, 0x22, 0x32, 0xb6,
- 0x64, 0xdb, 0xdf, 0x9a, 0xf7, 0xe9, 0x8f, 0x7d, 0x19, 0xd0, 0xed, 0x1e,
- 0xb2, 0xba, 0x19, 0x8d, 0x72, 0x76, 0x1f, 0xaa, 0x15, 0xfb, 0x6b, 0x57,
- 0x15, 0xf5, 0x13, 0x77, 0xb9, 0x85, 0x85, 0x66, 0x2a, 0x04, 0xb8, 0x4b,
- 0x05, 0xe8, 0x53, 0x3b, 0x60, 0xa6, 0x50, 0x1c, 0xe1, 0x45, 0x72, 0xbb,
- 0xaf, 0xf1, 0x68, 0xfa, 0x8d, 0xce, 0x1b, 0x3b, 0xf4, 0x9d, 0xa0, 0x09,
- 0x4a, 0x1b, 0x29, 0x13, 0xce, 0xdb, 0xb5, 0x54, 0x19, 0x65, 0xf6, 0xac,
- 0x91, 0x34, 0x2d, 0x49, 0x54, 0x16, 0xe2, 0x7a, 0xe0, 0x9a, 0x78, 0x46,
- 0x99, 0x27, 0x23, 0xdf, 0x4b, 0x85, 0x42, 0x76, 0xb8, 0x97, 0x35, 0x79,
- 0x52, 0xd8, 0x62, 0x0a, 0x71, 0xf7, 0x03, 0x70, 0x0f, 0xcb, 0x7f, 0x93,
- 0xb3, 0xf3, 0x02, 0xf9, 0xa8, 0xb8, 0xf2, 0x8d, 0x74, 0xd8, 0x4c, 0xcc,
- 0x61, 0x5a, 0xd2, 0xad, 0xd0, 0x58, 0x06, 0xb6, 0x11, 0x03, 0x76, 0x6e,
- 0xfa, 0xa2, 0x70, 0xf0, 0x25, 0x0d, 0xa5, 0xde, 0x74, 0x63, 0x17, 0xe0,
- 0xf2, 0xf6, 0x40, 0x24, 0x16, 0xa2, 0x9c, 0x63, 0xe7, 0x95, 0x32, 0xaa,
- 0x6f, 0x1e, 0x7f, 0x22, 0x3d, 0x68, 0x53, 0xbe, 0xc4, 0xbf, 0xe6, 0xa2,
- 0x7f, 0xcc, 0xd1, 0xf9, 0xc9, 0x3b, 0x26, 0x09, 0xb7, 0x67, 0x21, 0x23,
- 0x20, 0xc5, 0x0d, 0xe6, 0xa2, 0x47, 0x7f, 0x52, 0x45, 0x76, 0x67, 0xe7,
- 0x12, 0xed, 0x19, 0xda, 0xe3, 0xb9, 0x7c, 0xeb, 0x62, 0xc9, 0x5f, 0xdf,
- 0xa4, 0xbb, 0xb0, 0xae, 0x67, 0x9b, 0x1d, 0x02, 0x5c, 0xbb, 0x26, 0x9d,
- 0x4b, 0xc7, 0x7a, 0xad, 0x26, 0x53, 0x67, 0x04, 0x24, 0x89, 0xb4, 0xd2,
- 0x92, 0x85, 0xfd, 0x4e, 0x35, 0xa4, 0xef, 0x2e, 0xff, 0x53, 0x32, 0xdc,
- 0x31, 0x1f, 0xac, 0x77, 0xf4, 0xc5, 0xc5, 0xc7, 0x49, 0x6d, 0x6e, 0x41,
- 0x2a, 0xfd, 0xfd, 0x09, 0x46, 0x3b, 0x96, 0xc3, 0xf4, 0x78, 0xfa, 0x4b,
- 0x32, 0x98, 0xcc, 0x30, 0xbe, 0x04, 0x34, 0xdb, 0x3f, 0x99, 0x95, 0xa7,
- 0x27, 0x7e, 0xb1, 0x6b, 0xf8, 0x26, 0xa7, 0xf3, 0xf6, 0xa9, 0xaf, 0x43,
- 0x3f, 0x63, 0xa3, 0x82, 0x51, 0x6b, 0x93, 0xc3, 0xe9, 0x2d, 0x15, 0xe6,
- 0x4d, 0xe5, 0x9f, 0x34, 0x9e, 0xe3, 0x02, 0x24, 0xa5, 0x18, 0x69, 0x3a,
- 0x66, 0x3e, 0xf2, 0xef, 0x73, 0x63, 0x98, 0x1c, 0x75, 0x74, 0x10, 0xaa,
- 0x11, 0xa4, 0x0e, 0xe2, 0x2d, 0xef, 0x97, 0x5a, 0xf0, 0xd1, 0x97, 0xba,
- 0x06, 0x97, 0x7e, 0x4a, 0xd2, 0x99, 0x96, 0x6e, 0x98, 0x7c, 0x4d, 0x71,
- 0xd0, 0x2a, 0xf3, 0x30, 0x5d, 0xe5, 0x72, 0x64, 0x32, 0x3f, 0x5a, 0x8c,
- 0x94, 0x01, 0x2a, 0x86, 0x76, 0x24, 0x41, 0x9d, 0x8c, 0x1d, 0x93, 0xfd,
- 0x4d, 0x7b, 0x70, 0xe8, 0x97, 0xd6, 0xbe, 0x9b, 0xa1, 0x68, 0x4d, 0x45,
- 0x12, 0x0c, 0xc5, 0x43, 0x99, 0xe4, 0x1e, 0xf2, 0xa5, 0x3a, 0xcd, 0x14,
- 0x01, 0xa0, 0xf4, 0xe1, 0x56, 0xd4, 0xbb, 0x8c, 0xa6, 0x54, 0x6b, 0xb0,
- 0x5b, 0x02, 0xf7, 0xbc, 0xeb, 0xf5, 0xd1, 0x8d, 0x11, 0xcd, 0x99, 0xed,
- 0xea, 0x88, 0xdd, 0x7e, 0xda, 0xc5, 0x11, 0xdd, 0x51, 0xba, 0x08, 0xf6,
- 0x97, 0x5a, 0x41, 0x09, 0x4d, 0x75, 0x87, 0x65, 0x97, 0xdd, 0xbb, 0x3c,
- 0xbb, 0xed, 0x21, 0x50, 0xe1, 0xe3, 0xe8, 0xfd, 0x5b, 0x22, 0x2c, 0x01,
- 0x77, 0xf5, 0xe5, 0xc5, 0xe1, 0xbb, 0xd1, 0x1b, 0x76, 0x9f, 0x5f, 0x96,
- 0x1e, 0x2b, 0xb6, 0xc4, 0x1e, 0x34, 0xc6, 0x6c, 0xf1, 0xde, 0xee, 0x98,
- 0x45, 0x43, 0x73, 0xee, 0x85, 0x32, 0xbb, 0xdf, 0x45, 0xd1, 0x67, 0xbe,
- 0x6d, 0x9a, 0x0d, 0xea, 0xda, 0xd6, 0x68, 0xdb, 0x2a, 0x4b, 0xb5, 0x4f,
- 0xb5, 0xe6, 0xb8, 0xea, 0x15, 0xef, 0x59, 0x1e, 0xa2, 0x69, 0x39, 0xd2,
- 0xce, 0xe8, 0x4f, 0xf9, 0xee, 0x5d, 0x09, 0x2d, 0x7a, 0x64, 0xcc, 0xc9,
- 0x81, 0xf0, 0xcf, 0x38, 0x60, 0x35, 0xe7, 0x72, 0xe5, 0xbb, 0x57, 0x30,
- 0xf9, 0x6c, 0xe3, 0x7e, 0x6d, 0xa8, 0x36, 0xbd, 0xf5, 0x6f, 0x7b, 0xdb,
- 0xf1, 0xe6, 0x2f, 0x7f, 0x6d, 0xf3, 0xf1, 0xbe, 0xab, 0xfd, 0xe6, 0xca,
- 0x8e, 0xb6, 0xfe, 0x6d, 0x7f, 0x7b, 0xed, 0x88, 0xfc, 0xca, 0x49, 0xf7,
- 0x4d, 0xf3, 0x06, 0x75, 0x36, 0x79, 0xc5, 0xc7, 0xcc, 0xea, 0x55, 0x36,
- 0x8b, 0xc7, 0x43, 0x11, 0x6e, 0x21, 0x7b, 0x50, 0x6a, 0xb7, 0xd5, 0xe6,
- 0x5d, 0x70, 0x4e, 0x2a, 0x50, 0x4e, 0xfe, 0x9f, 0x63, 0x1f, 0x14, 0xb2,
- 0xd8, 0x6c, 0xfc, 0x2b, 0x8a, 0x10, 0x04, 0xea, 0x72, 0x88, 0x6f, 0xef,
- 0xaf, 0xf9, 0xb6, 0x1b, 0x9d, 0xe7, 0xba, 0xa0, 0x48, 0x37, 0xa5, 0xca,
- 0x29, 0xc6, 0xb5, 0x7c, 0xc7, 0x7e, 0x7b, 0xdd, 0xf7, 0x2e, 0x4f, 0xde,
- 0x1e, 0x13, 0x16, 0xf6, 0xeb, 0x13, 0x42, 0x91, 0x1b, 0x09, 0x8e, 0xa3,
- 0x7a, 0x29, 0x2c, 0xbe, 0xae, 0xcf, 0x81, 0xc2, 0x21, 0x60, 0x9b, 0x91,
- 0x66, 0x25, 0x87, 0x5d, 0x09, 0xfa, 0xb4, 0xe4, 0x49, 0xd7, 0x5a, 0x8d,
- 0x79, 0x72, 0x35, 0x78, 0x5b, 0x4e, 0x61, 0x49, 0x0f, 0x46, 0x48, 0x27,
- 0x34, 0x6f, 0x99, 0x1f, 0xbe, 0x2f, 0xe6, 0xad, 0x1f, 0x0f, 0x23, 0xd5,
- 0xbc, 0x1b, 0xab, 0xa8, 0x76, 0xfe, 0xbe, 0x33, 0x18, 0x50, 0x67, 0x06,
- 0x9c, 0xfa, 0x25, 0x01, 0xa0, 0x16, 0x90, 0x87, 0x8a, 0x16, 0x33, 0x41,
- 0xf9, 0xec, 0x9e, 0x93, 0x15, 0x52, 0x97, 0x62, 0xe6, 0x2a, 0x3c, 0xaf,
- 0xa9, 0xca, 0xcc, 0xb9, 0x01, 0xd9, 0xd1, 0xb7, 0xe1, 0x43, 0x91, 0xc2,
- 0xd8, 0xca, 0xee, 0x5c, 0x8e, 0x94, 0x10, 0x37, 0x97, 0x8b, 0x7b, 0x8c,
- 0xf2, 0xae, 0x95, 0x7e, 0x11, 0x8d, 0xc1, 0xfe, 0x9d, 0xdf, 0x69, 0x91,
- 0x4b, 0x09, 0x72, 0xb4, 0xb7, 0x03, 0xe5, 0x27, 0xc2, 0xc5, 0x74, 0x56,
- 0x79, 0xd7, 0x95, 0x74, 0x5b, 0x39, 0xeb, 0x3c, 0x98, 0x52, 0x0f, 0x55,
- 0xb5, 0xdd, 0x4f, 0x1f, 0xd2, 0xb5, 0xa4, 0xf2, 0xd8, 0xd7, 0xa5, 0x0d,
- 0xa0, 0x19, 0xb1, 0xb3, 0x68, 0x53, 0x23, 0x67, 0x89, 0x16, 0x82, 0x73,
- 0x9d, 0xff, 0xe6, 0x60, 0x13, 0x6c, 0x0b, 0x79, 0x11, 0x19, 0xcc, 0xe0,
- 0xd7, 0x8f, 0x26, 0x08, 0xcf, 0x26, 0xbd, 0x2b, 0x02, 0xcb, 0xa0, 0x58,
- 0x57, 0x8f, 0x3b, 0xc0, 0x80, 0x32, 0xbc, 0xb9, 0xcc, 0x05, 0x41, 0x72,
- 0x4d, 0x8d, 0x4d, 0x36, 0xbc, 0x6d, 0xf6, 0xac, 0x75, 0xa4, 0xb3, 0xe7,
- 0x92, 0x04, 0xe9, 0x72, 0x31, 0x45, 0xe2, 0x06, 0xa7, 0xac, 0xfe, 0x27,
- 0x41, 0x5c, 0x57, 0xf7, 0xc9, 0xde, 0x7e, 0x3f, 0x31, 0xf6, 0xcc, 0x7e,
- 0x64, 0x0c, 0xbd, 0xff, 0xa4, 0xc4, 0xa9, 0x7d, 0xfc, 0xba, 0xf7, 0xd8,
- 0x51, 0xb8, 0x9a, 0x07, 0xdc, 0x24, 0x52, 0x1d, 0x6c, 0x84, 0x0f, 0xc5,
- 0x70, 0x01, 0xab, 0x0c, 0xbe, 0x64, 0xe0, 0xd2, 0xe1, 0xda, 0x62, 0x47,
- 0xa2, 0x32, 0x67, 0x5a, 0x42, 0xb0, 0x29, 0xf8, 0x71, 0x98, 0xb2, 0x16,
- 0xd9, 0x31, 0xd6, 0x9b, 0x9a, 0x56, 0x20, 0xf8, 0x6c, 0xaf, 0x51, 0xde,
- 0xe8, 0xb2, 0x50, 0xfa, 0x0d, 0xad, 0x8d, 0xd9, 0xef, 0xaf, 0x4f, 0x8e,
- 0x2e, 0x15, 0xb8, 0xf0, 0x8a, 0x94, 0xa7, 0xea, 0xfe, 0x71, 0x14, 0x8b,
- 0x6b, 0x9f, 0x99, 0x1e, 0xdc, 0x64, 0x46, 0x8d, 0x2e, 0xc6, 0xcb, 0xeb,
- 0x83, 0xbf, 0xa6, 0xd5, 0x75, 0x59, 0x3c, 0xf4, 0xfc, 0x14, 0x45, 0x67,
- 0x07, 0x46, 0x42, 0xed, 0xbd, 0xd8, 0x7b, 0x82, 0x1a, 0xf1, 0x59, 0x0e,
- 0x9a, 0x1f, 0x12, 0x10, 0x9b, 0xf3, 0x4d, 0x06, 0xe1, 0x40, 0x29, 0x85,
- 0x45, 0xde, 0x28, 0xa6, 0x9b, 0x7c, 0xdd, 0xa7, 0xfe, 0xb3, 0x53, 0x79,
- 0x96, 0xcb, 0xd3, 0x37, 0xa5, 0x9e, 0x61, 0x93, 0x4a, 0x39, 0x97, 0x8b,
- 0xcd, 0x36, 0xf0, 0xfb, 0x03, 0x63, 0xa5, 0x4f, 0x58, 0x46, 0xc9, 0x23,
- 0x0b, 0x67, 0x8f, 0x2a, 0xa3, 0x2a, 0x4b, 0x3f, 0x3a, 0x02, 0x65, 0x87,
- 0xd0, 0xa1, 0x61, 0x91, 0x8b, 0x37, 0x47, 0x0c, 0x45, 0xaa, 0x35, 0x55,
- 0x98, 0xea, 0xc4, 0xba, 0xaf, 0xb6, 0xa9, 0x97, 0x0f, 0x7c, 0x9f, 0xea,
- 0x1f, 0x0e, 0xa6, 0xe3, 0x47, 0x3c, 0x64, 0xce, 0x1d, 0xa3, 0xc9, 0x1d,
- 0xb6, 0x09, 0x75, 0xc8, 0x50, 0x03, 0x2b, 0x88, 0x32, 0x25, 0x6f, 0x31,
- 0x51, 0x2c, 0x47, 0x25, 0xa8, 0x6b, 0xca, 0x41, 0xad, 0x1e, 0x20, 0xd3,
- 0x6f, 0xe2, 0x6e, 0x7d, 0x7d, 0x78, 0xee, 0x19, 0xba, 0x30, 0x24, 0x9d,
- 0xe3, 0x8f, 0x9e, 0x23, 0x43, 0x07, 0x64, 0xec, 0xc2, 0xb1, 0xd4, 0x77,
- 0x26, 0x4a, 0x03, 0x39, 0x49, 0xba, 0x11, 0x92, 0xe8, 0x4b, 0xb9, 0x4f,
- 0xe0, 0xa3, 0x02, 0x47, 0xc1, 0x6c, 0x9a, 0x22, 0x58, 0x2a, 0xb7, 0x10,
- 0x55, 0x49, 0x9c, 0x15, 0x5a, 0xe9, 0xdc, 0xef, 0x10, 0x32, 0x98, 0x1f,
- 0xe3, 0x3b, 0xb8, 0xa2, 0xcf, 0x8d, 0x12, 0x0e, 0xa8, 0x97, 0xd1, 0xeb,
- 0xef, 0xa8, 0xc7, 0x12, 0xf8, 0x81, 0xd6, 0xa6, 0xfe, 0x6e, 0x1b, 0xad,
- 0x52, 0xab, 0x51, 0x1d, 0x5c, 0xea, 0x7f, 0xa4, 0xe6, 0x6e, 0x9f, 0x0c,
- 0xf9, 0xcf, 0x7d, 0x4b, 0x5a, 0x8c, 0xc7, 0x90, 0x0b, 0x7a, 0xa5, 0x94,
- 0xc8, 0xf3, 0x8c, 0x38, 0x7a, 0xf3, 0x7a, 0xee, 0x52, 0x57, 0xae, 0xe4,
- 0x75, 0x47, 0x94, 0x27, 0x4a, 0x24, 0x85, 0x1f, 0xd0, 0x0f, 0xf4, 0x36,
- 0x97, 0xdc, 0x2f, 0xb3, 0xcb, 0x3e, 0x25, 0x52, 0xb2, 0x22, 0xb5, 0x39,
- 0xc2, 0x87, 0x82, 0xc7, 0xa8, 0x06, 0xfb, 0x5e, 0x97, 0x82, 0x6f, 0x1a,
- 0xb3, 0x0c, 0x69, 0xfd, 0xd1, 0x5c, 0x0a, 0x9c, 0xae, 0x60, 0xe6, 0x31,
- 0x97, 0x80, 0x3f, 0xb9, 0xb8, 0x72, 0x4e, 0x1b, 0x22, 0x67, 0x1b, 0xa0,
- 0x9f, 0x5a, 0x5b, 0x8f, 0x2f, 0x53, 0xb2, 0x9d, 0x67, 0x75, 0xc6, 0x58,
- 0x8a, 0x00, 0x0d, 0xa2, 0xf8, 0x20, 0x6d, 0x3d, 0xd8, 0x4c, 0x9a, 0x77,
- 0x0b, 0x71, 0x46, 0xbb, 0x74, 0x7f, 0xff, 0xd9, 0xb3, 0x7e, 0xd2, 0x23,
- 0xdf, 0x24, 0xfa, 0x44, 0x1b, 0xfa, 0x0d, 0x04, 0x4f, 0x2f, 0xca, 0x9b,
- 0xbb, 0x53, 0x5d, 0x4d, 0xe8, 0x7f, 0xf4, 0x9e, 0xd2, 0x45, 0x5e, 0x4a,
- 0xb1, 0x0e, 0x75, 0x13, 0x81, 0x58, 0x0b, 0xa9, 0xc3, 0x3b, 0x8d, 0x7e,
- 0x77, 0x62, 0xdd, 0x4f, 0x14, 0x6b, 0x5a, 0x64, 0xe5, 0x42, 0x83, 0xca,
- 0x73, 0x21, 0x02, 0xc1, 0xf7, 0xbd, 0x48, 0x1c, 0xd2, 0x00, 0x38, 0x8b,
- 0x4e, 0xb0, 0x13, 0xea, 0xe5, 0x78, 0x20, 0x45, 0xc4, 0x6c, 0x68, 0xe6,
- 0xe6, 0x30, 0xcf, 0x69, 0x11, 0xc4, 0xcb, 0x1f, 0x08, 0xe9, 0xaf, 0x93,
- 0x9e, 0x6c, 0x37, 0xfa, 0x63, 0x88, 0x98, 0x70, 0x36, 0xa1, 0x61, 0x94,
- 0xaf, 0xe4, 0x1f, 0xff, 0xf1, 0x1f, 0xa6, 0xd9, 0xff, 0xa0, 0x56, 0x5e,
- 0xfd, 0x5b, 0xdd, 0xdc, 0x78, 0xcf, 0xf4, 0xe4, 0x0c, 0x9c, 0xb8, 0x88,
- 0x38, 0xb2, 0xdc, 0x00, 0x21, 0x8b, 0x5a, 0xb7, 0xb7, 0xa7, 0x22, 0xa4,
- 0xfb, 0xde, 0xf8, 0x72, 0x54, 0x21, 0xb2, 0x6f, 0xd5, 0x26, 0x99, 0x7c,
- 0x4d, 0xd1, 0xea, 0x8c, 0xaa, 0xd7, 0xcd, 0x22, 0x00, 0x79, 0x70, 0xdb,
- 0xa5, 0x9d, 0xb0, 0x7c, 0x87, 0xff, 0x94, 0x89, 0xe4, 0x3a, 0xc4, 0x58,
- 0x77, 0x7a, 0x53, 0xf0, 0x29, 0xc6, 0x3a, 0x99, 0x5f, 0xa5, 0xb3, 0xf2,
- 0xda, 0x8e, 0x38, 0x46, 0x45, 0xf3, 0xab, 0xc6, 0xde, 0xf3, 0x1b, 0xd2,
- 0x37, 0xfd, 0x18, 0xfc, 0x23, 0x5b, 0xa1, 0x5c, 0x02, 0x7b, 0x34, 0x91,
- 0x22, 0x1b, 0x52, 0x8f, 0x09, 0xb4, 0xb0, 0xb1, 0x54, 0x54, 0x90, 0xec,
- 0xe8, 0x41, 0xb7, 0x27, 0x9f, 0xd2, 0x7b, 0x27, 0x74, 0x04, 0x3a, 0x5c,
- 0x38, 0x4e, 0x56, 0x58, 0xe5, 0x46, 0x68, 0x4e, 0x44, 0x37, 0xc9, 0x8c,
- 0xbc, 0xca, 0xcd, 0x59, 0xc0, 0x05, 0x48, 0xdf, 0xe1, 0x14, 0x22, 0x09,
- 0x5a, 0x0f, 0x06, 0x63, 0x26, 0x12, 0x1b, 0x0c, 0x8a, 0x66, 0x36, 0x67,
- 0x1c, 0xe6, 0x29, 0x48, 0xc5, 0xb4, 0x88, 0x23, 0x2f, 0x42, 0x10, 0xc2,
- 0xf6, 0x34, 0xf3, 0xab, 0xff, 0xd8, 0x24, 0xf9, 0x32, 0x8f, 0xb9, 0x3a,
- 0xa9, 0x9d, 0x1d, 0x07, 0xec, 0xe8, 0xf0, 0xd3, 0xc8, 0x15, 0x3a, 0x28,
- 0x84, 0xe7, 0x0c, 0xd9, 0xff, 0x56, 0x32, 0x09, 0x40, 0x99, 0x9f, 0xd5,
- 0xaa, 0xc5, 0x48, 0x84, 0x17, 0x4d, 0xbe, 0x37, 0x23, 0xde, 0x33, 0xe4,
- 0x2d, 0xd7, 0xc9, 0xd6, 0x68, 0x74, 0x7e, 0xb2, 0xa3, 0x34, 0x69, 0x1b,
- 0x1b, 0xc7, 0xef, 0xbe, 0x3f, 0xb9, 0x38, 0x7b, 0xf7, 0xf6, 0xf8, 0xdd,
- 0x65, 0xf2, 0xfd, 0xe1, 0xc5, 0xc9, 0xe1, 0xd7, 0xa7, 0x82, 0xcf, 0x40,
- 0xc3, 0xa4, 0xb4, 0x34, 0xb6, 0x04, 0x3b, 0xe0, 0xc2, 0x5e, 0xe9, 0x5c,
- 0x94, 0x9f, 0xa6, 0x43, 0xbd, 0xfd, 0x41, 0xe0, 0xf1, 0x61, 0x17, 0x7f,
- 0x00, 0xd5, 0x56, 0x9f, 0x4c, 0xa1, 0x0f, 0xca, 0xba, 0x45, 0xa6, 0xfc,
- 0xbd, 0x57, 0xf1, 0x4f, 0x19, 0x73, 0x24, 0xcd, 0x54, 0x96, 0x3b, 0xbe,
- 0x49, 0x4b, 0xe0, 0xf2, 0x0d, 0x83, 0x46, 0x28, 0x9b, 0x8d, 0xbe, 0x0a,
- 0xf1, 0xc1, 0xaa, 0x8e, 0xeb, 0xc3, 0xe1, 0xe9, 0xa9, 0xfb, 0xd4, 0x7a,
- 0xa2, 0x23, 0x01, 0x0c, 0xe3, 0x72, 0x43, 0x34, 0x4a, 0xa1, 0xec, 0xeb,
- 0xd2, 0x61, 0xfd, 0x17, 0xf7, 0x3e, 0xac, 0x3f, 0x7d, 0xcc, 0x6c, 0x97,
- 0x2d, 0x46, 0x7a, 0xa1, 0xbc, 0x86, 0x26, 0xab, 0xf2, 0xfa, 0x63, 0x3f,
- 0xd9, 0xfc, 0xb7, 0x4d, 0xa1, 0xb6, 0x07, 0x06, 0x35, 0xd3, 0x28, 0x6d,
- 0xbb, 0x4e, 0xbd, 0x3b, 0x73, 0x7d, 0x92, 0x50, 0xbd, 0xed, 0x80, 0x7d,
- 0xd1, 0x25, 0x5a, 0xd4, 0xaa, 0x5d, 0x23, 0xc3, 0xd9, 0x3d, 0x2e, 0x1c,
- 0x23, 0x16, 0xc0, 0x42, 0xc4, 0x23, 0x85, 0x62, 0xa3, 0xef, 0xc2, 0x87,
- 0x90, 0x4e, 0x3c, 0xa8, 0x71, 0x8c, 0xb5, 0x20, 0xc7, 0x9b, 0xe5, 0x7f,
- 0x53, 0xdf, 0xb4, 0x99, 0xea, 0xa9, 0x00, 0x33, 0xa6, 0xda, 0xb2, 0x54,
- 0x3b, 0xa3, 0x9a, 0xdc, 0x06, 0xa9, 0x3c, 0x1f, 0x63, 0x2a, 0x39, 0xef,
- 0x43, 0x33, 0xd3, 0x38, 0xf8, 0xec, 0x43, 0x6a, 0x39, 0x77, 0x11, 0x36,
- 0xea, 0x94, 0x87, 0x4a, 0x38, 0xa4, 0x6c, 0xfd, 0x4c, 0xd6, 0x55, 0x79,
- 0xa6, 0xd2, 0x0d, 0x4d, 0xd6, 0x05, 0x4e, 0x06, 0x3b, 0x33, 0x75, 0x22,
- 0x91, 0x52, 0xe9, 0xbf, 0xdd, 0x43, 0xf5, 0x12, 0x47, 0x63, 0x2c, 0x76,
- 0x22, 0x81, 0x12, 0x61, 0x8a, 0x5d, 0xe6, 0x7a, 0xf6, 0x89, 0xd1, 0x86,
- 0xec, 0x26, 0x73, 0x1b, 0x81, 0x19, 0xf2, 0x24, 0x51, 0xbd, 0xdb, 0x61,
- 0xdb, 0x2b, 0x65, 0x5b, 0x42, 0x64, 0x8d, 0x15, 0x2e, 0xa8, 0x4c, 0xdd,
- 0xd1, 0xc0, 0x65, 0xc8, 0x29, 0xd1, 0xad, 0x4e, 0x77, 0x1a, 0xee, 0x69,
- 0xc6, 0xc1, 0xb2, 0x16, 0x05, 0x0a, 0x37, 0xc8, 0xa7, 0x1d, 0xe5, 0xaf,
- 0x42, 0x1a, 0x02, 0x95, 0x0c, 0x55, 0x46, 0x86, 0xd6, 0xab, 0x69, 0xa2,
- 0x86, 0x88, 0x5e, 0x5f, 0x1c, 0x81, 0x5a, 0xa1, 0x20, 0xa6, 0x55, 0xc7,
- 0x8b, 0x83, 0xf2, 0x82, 0x22, 0x6b, 0x2a, 0xaa, 0xd9, 0x2d, 0xc4, 0x06,
- 0x41, 0xca, 0x3e, 0x4c, 0xf4, 0xf4, 0xba, 0x54, 0xf3, 0x3b, 0xb5, 0x79,
- 0x35, 0x96, 0x45, 0xd0, 0x33, 0xe9, 0x2d, 0xb6, 0xa0, 0x95, 0x5b, 0xc8,
- 0xc0, 0xd1, 0x18, 0x22, 0x65, 0xa0, 0xd2, 0x19, 0x53, 0x56, 0xf8, 0xda,
- 0x43, 0x6f, 0x70, 0x05, 0x4e, 0x24, 0xc7, 0xb9, 0x8e, 0x47, 0xc1, 0xfe,
- 0x00, 0xb0, 0xa8, 0x68, 0x0f, 0xc8, 0x85, 0x46, 0xb7, 0xe8, 0x41, 0x34,
- 0x29, 0x69, 0xed, 0x68, 0x52, 0xc3, 0x5b, 0x46, 0x5c, 0xcd, 0xa8, 0xc6,
- 0x54, 0xb5, 0x8e, 0x34, 0x19, 0xe7, 0xd7, 0x8c, 0x1a, 0x42, 0x10, 0x15,
- 0x74, 0x2c, 0x01, 0x02, 0x59, 0xce, 0x33, 0x3a, 0x1b, 0x80, 0x78, 0x84,
- 0xe9, 0x7e, 0x53, 0xce, 0x7c, 0x1c, 0x42, 0x1d, 0x89, 0xac, 0xbe, 0x8d,
- 0x7c, 0x20, 0x3a, 0xba, 0xa4, 0x79, 0xd4, 0x84, 0x55, 0x61, 0x19, 0x90,
- 0xf4, 0x5d, 0x0a, 0xbb, 0x01, 0x52, 0xb5, 0x40, 0xb1, 0xa0, 0xa2, 0x2d,
- 0x60, 0x1e, 0xb4, 0xb4, 0x81, 0x36, 0x2e, 0xdc, 0xe8, 0xc4, 0xdd, 0xba,
- 0x65, 0x69, 0x02, 0xa8, 0x95, 0x09, 0x03, 0x38, 0x93, 0x94, 0xe1, 0xa4,
- 0x93, 0x36, 0xc9, 0x97, 0x2c, 0x96, 0xa0, 0xeb, 0x99, 0x3d, 0x41, 0x9d,
- 0x36, 0x33, 0xb5, 0xe5, 0x29, 0x19, 0x85, 0xd9, 0x22, 0xfc, 0x18, 0xfb,
- 0x8f, 0xe4, 0x5f, 0x03, 0xcb, 0x4f, 0x28, 0xa9, 0x29, 0xdb, 0x2e, 0x35,
- 0x89, 0x8d, 0x00, 0x12, 0x0f, 0x13, 0x61, 0x88, 0x45, 0x12, 0x0f, 0xd1,
- 0xdb, 0x02, 0x32, 0xae, 0x15, 0x7a, 0x48, 0xb4, 0x24, 0x6f, 0x36, 0xf3,
- 0x78, 0x02, 0xd8, 0x1b, 0x99, 0x06, 0xa6, 0x07, 0x89, 0x89, 0x21, 0x8b,
- 0x5c, 0x4e, 0x0e, 0x64, 0x4c, 0x71, 0x6f, 0x20, 0x52, 0x76, 0x42, 0xc6,
- 0x59, 0x27, 0xa2, 0xe1, 0xdd, 0x20, 0x9a, 0x40, 0xe3, 0x2b, 0xa1, 0xc2,
- 0x8d, 0x93, 0xa7, 0x73, 0x36, 0x1d, 0xdd, 0xee, 0x9b, 0xdf, 0x73, 0x62,
- 0xf2, 0xc6, 0xc6, 0xd1, 0xfb, 0xd1, 0xe5, 0xd9, 0xdb, 0xe4, 0xec, 0xfd,
- 0xe5, 0xf9, 0xfb, 0x4b, 0xd1, 0x52, 0xc7, 0x5c, 0xd6, 0xc1, 0xc9, 0x4d,
- 0xac, 0x39, 0xeb, 0x62, 0xce, 0x25, 0x05, 0x08, 0x59, 0x68, 0x25, 0x80,
- 0x47, 0x3d, 0xcc, 0x31, 0x5b, 0xb6, 0x09, 0x34, 0x3e, 0x46, 0x1e, 0xc7,
- 0x94, 0xdf, 0x99, 0x29, 0x47, 0xc9, 0x3d, 0xfc, 0xf8, 0x5a, 0x05, 0x0a,
- 0xaf, 0x87, 0x9e, 0xb5, 0x36, 0xef, 0xd4, 0x7d, 0xdb, 0x8b, 0x81, 0xfc,
- 0x9d, 0x36, 0xc6, 0x9b, 0x4f, 0x83, 0xcb, 0xae, 0x5d, 0xe7, 0xf9, 0xf5,
- 0xb3, 0xbe, 0x85, 0x44, 0x57, 0xe3, 0x4f, 0x9a, 0x78, 0x8f, 0x6c, 0xc4,
- 0x76, 0xed, 0xb1, 0x5f, 0x02, 0xdd, 0x94, 0x66, 0x84, 0x37, 0xb6, 0x68,
- 0x86, 0x12, 0x0d, 0x91, 0x2c, 0xcc, 0x39, 0x56, 0x94, 0x95, 0xcb, 0x0e,
- 0x83, 0x22, 0xbb, 0x23, 0xbd, 0x27, 0xd0, 0xa8, 0xef, 0x92, 0xcd, 0x1f,
- 0x32, 0xbf, 0xc1, 0x3f, 0xff, 0x17, 0x55, 0x76, 0x7f, 0xd0, 0x9f, 0xfc,
- 0x37, 0x7f, 0xf2, 0xe7, 0x62, 0x13, 0x02, 0xb3, 0x9d, 0x4c, 0xf3, 0xdd,
- 0xf1, 0xc5, 0xd7, 0xc7, 0x17, 0x67, 0x23, 0xc8, 0x03, 0xf5, 0x76, 0x87,
- 0x7b, 0xfd, 0x63, 0x56, 0x8d, 0xb3, 0xaa, 0x14, 0x6e, 0x3c, 0xfd, 0xd7,
- 0xb3, 0x9d, 0x6f, 0x46, 0xa3, 0xc3, 0xf3, 0x13, 0xcb, 0x3a, 0x65, 0x6b,
- 0x4c, 0xd9, 0x43, 0x52, 0x70, 0x15, 0x34, 0x8d, 0x5f, 0x5f, 0x31, 0xfb,
- 0x62, 0xf2, 0x91, 0x6b, 0x0f, 0x82, 0xb4, 0x15, 0x0d, 0xab, 0x51, 0xbe,
- 0x8a, 0x94, 0x1e, 0x53, 0xc3, 0x8a, 0x15, 0xe7, 0x93, 0x46, 0x30, 0xbb,
- 0x03, 0x85, 0x02, 0xfb, 0x36, 0x49, 0xf7, 0x63, 0x35, 0x1e, 0x98, 0xdd,
- 0xfe, 0x51, 0xc9, 0xd8, 0xb9, 0x54, 0xca, 0x88, 0x4a, 0xae, 0xa1, 0x70,
- 0xae, 0xc6, 0x8f, 0x79, 0x91, 0x37, 0x3b, 0x1f, 0xe9, 0x7c, 0x10, 0x23,
- 0xd2, 0x6c, 0xc8, 0xd2, 0x9d, 0x0f, 0x94, 0x26, 0xc6, 0x93, 0x88, 0x5d,
- 0x87, 0x5f, 0x63, 0xbe, 0x66, 0xe9, 0x4c, 0xd9, 0xdd, 0x6d, 0x7e, 0xf2,
- 0xd4, 0x02, 0xf9, 0x89, 0xde, 0x8f, 0x5c, 0xda, 0x2b, 0x73, 0x57, 0x2d,
- 0xee, 0xa6, 0x72, 0x89, 0x00, 0xc4, 0x9e, 0x75, 0x4b, 0x91, 0xe1, 0xdd,
- 0xf8, 0x34, 0x51, 0xae, 0xa2, 0xa6, 0x4b, 0x2a, 0x56, 0x92, 0xf1, 0x2c,
- 0x2d, 0x3e, 0x42, 0x7d, 0x80, 0x42, 0x40, 0x77, 0x9f, 0xc2, 0xd3, 0x11,
- 0x15, 0x2e, 0x52, 0x16, 0x04, 0x31, 0x06, 0x06, 0xdf, 0x8c, 0x84, 0xdb,
- 0x3d, 0x87, 0xf2, 0x2c, 0x0a, 0x9f, 0x17, 0x78, 0xc7, 0x71, 0x72, 0x93,
- 0x40, 0x9e, 0xe3, 0xe3, 0x53, 0x73, 0x31, 0xd9, 0x3a, 0x34, 0x78, 0xe8,
- 0xb2, 0x19, 0x45, 0x82, 0x34, 0x69, 0x90, 0x4b, 0xaf, 0x73, 0x08, 0x32,
- 0x96, 0x1e, 0xca, 0x83, 0x80, 0xf0, 0x31, 0xb6, 0x0b, 0x2a, 0xcc, 0x6b,
- 0xcb, 0x16, 0x24, 0x92, 0x9b, 0x85, 0x18, 0xf0, 0x83, 0x1d, 0x79, 0x90,
- 0xcf, 0x65, 0x25, 0x19, 0xb9, 0x47, 0x2e, 0x65, 0xd0, 0x92, 0xfc, 0x71,
- 0x27, 0x9c, 0x09, 0x6a, 0x13, 0x0c, 0x5a, 0x05, 0x70, 0x2b, 0x97, 0x89,
- 0x5f, 0x8f, 0xf9, 0x00, 0x19, 0xf6, 0x70, 0x2a, 0xe1, 0x4e, 0x8b, 0x18,
- 0xa6, 0x55, 0x0d, 0xed, 0x4a, 0x02, 0xed, 0x38, 0x27, 0x0c, 0x51, 0xec,
- 0x66, 0xd6, 0x58, 0x37, 0x45, 0xcd, 0x18, 0x6c, 0xd0, 0xb9, 0xa6, 0x10,
- 0x39, 0x55, 0x0b, 0xd1, 0xda, 0x4f, 0xe0, 0x67, 0x50, 0x9b, 0xd2, 0x9a,
- 0x98, 0x6c, 0xfb, 0x5b, 0x5b, 0x76, 0xf0, 0x8e, 0xae, 0x8b, 0x72, 0x30,
- 0x5e, 0xc2, 0x2d, 0xe3, 0x91, 0xee, 0x71, 0x99, 0x77, 0x79, 0xc5, 0x9a,
- 0x07, 0xff, 0x9e, 0xc2, 0xd1, 0x00, 0xd0, 0xe0, 0x08, 0x35, 0x2a, 0xaa,
- 0xdb, 0x58, 0x5c, 0x16, 0x81, 0x89, 0xcb, 0x94, 0x1c, 0x2b, 0xb8, 0x1d,
- 0xa0, 0x2c, 0xb2, 0x75, 0xd1, 0x78, 0x26, 0x4d, 0xbf, 0x53, 0x94, 0xd1,
- 0x58, 0xde, 0x8a, 0x4b, 0xa8, 0x09, 0x99, 0x10, 0x3a, 0x68, 0xb5, 0x85,
- 0xd6, 0x76, 0xdd, 0x36, 0x44, 0x13, 0xc7, 0xe0, 0x31, 0xe9, 0x8c, 0xe9,
- 0x76, 0x56, 0x5e, 0x25, 0x7c, 0x98, 0x9a, 0xcb, 0xcb, 0xbf, 0x9c, 0x1f,
- 0xbf, 0xd2, 0x37, 0xd7, 0xad, 0x19, 0x63, 0x2a, 0x22, 0xad, 0x2e, 0x13,
- 0x0c, 0x63, 0x8f, 0xf0, 0xde, 0x6c, 0xb2, 0x41, 0xa3, 0xe9, 0x3e, 0xfc,
- 0x99, 0x41, 0xf2, 0xe3, 0xeb, 0x93, 0xd1, 0xf9, 0xe9, 0xd9, 0xd1, 0xab,
- 0x97, 0x3f, 0xaa, 0x48, 0xfe, 0x92, 0x22, 0x84, 0xac, 0xa7, 0xd9, 0x9f,
- 0x39, 0xcc, 0x17, 0x79, 0xef, 0xdd, 0xf1, 0x0f, 0x1f, 0x8c, 0x39, 0xf6,
- 0x8a, 0x68, 0x1f, 0xfa, 0xb7, 0xe9, 0x4c, 0x5e, 0x22, 0xfd, 0x34, 0xa2,
- 0xdb, 0x0d, 0xdb, 0x20, 0x9d, 0xdd, 0x89, 0xb5, 0x9c, 0xc3, 0xae, 0x94,
- 0xe9, 0x5e, 0x33, 0x6d, 0x3d, 0x5a, 0xb9, 0xb4, 0x55, 0x79, 0x1f, 0x61,
- 0x08, 0x77, 0xd7, 0xff, 0x66, 0xc3, 0x69, 0xd7, 0x94, 0x65, 0xe4, 0x27,
- 0xe6, 0x20, 0xb5, 0x5d, 0x7e, 0xe3, 0x52, 0xfe, 0x05, 0x66, 0xbd, 0x22,
- 0x2f, 0x9a, 0x85, 0xa8, 0x15, 0xda, 0x79, 0xa4, 0xbc, 0x08, 0x8e, 0xad,
- 0x80, 0xb3, 0x51, 0x96, 0xbd, 0x16, 0xdc, 0xa8, 0x1c, 0x13, 0x15, 0xc6,
- 0xf6, 0x25, 0x55, 0x02, 0x6c, 0x10, 0x6b, 0x9d, 0x1f, 0x5f, 0x8c, 0x4e,
- 0x46, 0x97, 0x64, 0xb7, 0x0a, 0x1b, 0xab, 0x84, 0xa0, 0x94, 0x2a, 0x17,
- 0xb0, 0x2e, 0x6d, 0x48, 0x62, 0x9f, 0xf4, 0xa7, 0x75, 0xa2, 0xad, 0x98,
- 0x6b, 0xd7, 0x79, 0xd3, 0x0d, 0xc0, 0xc5, 0xe3, 0xa4, 0x88, 0x32, 0xb0,
- 0x76, 0x7a, 0xa5, 0x07, 0xb8, 0x94, 0xad, 0xd1, 0xe1, 0xbe, 0x01, 0x6f,
- 0x15, 0x56, 0x67, 0x96, 0x8f, 0x9d, 0x2b, 0xb3, 0x93, 0x41, 0x42, 0xc9,
- 0x49, 0x02, 0xe2, 0xe3, 0x1f, 0x21, 0x0d, 0x87, 0x39, 0xf0, 0x04, 0x21,
- 0xe8, 0x96, 0x6b, 0x4d, 0x0a, 0x9f, 0xfd, 0x12, 0x77, 0xeb, 0x94, 0x82,
- 0xd1, 0xa2, 0x7a, 0x9a, 0xfd, 0xa9, 0x97, 0xa7, 0x2e, 0xb8, 0x70, 0x80,
- 0xb4, 0x16, 0x91, 0x4d, 0x42, 0x39, 0xe7, 0x62, 0x55, 0xf2, 0x4e, 0x1a,
- 0xad, 0x05, 0xe0, 0x1b, 0x48, 0x25, 0x94, 0x91, 0x05, 0x2a, 0x88, 0xa8,
- 0x8e, 0xd7, 0x54, 0xe5, 0x0a, 0xf0, 0xbd, 0x29, 0xe9, 0x5b, 0x70, 0xc0,
- 0xfb, 0x1f, 0xd3, 0xeb, 0x94, 0x66, 0x70, 0xbc, 0xf4, 0x69, 0x1d, 0x6d,
- 0xef, 0x99, 0x5c, 0x08, 0x13, 0x8f, 0x24, 0xea, 0xb4, 0x82, 0x23, 0xa3,
- 0x11, 0x26, 0x09, 0x35, 0x7c, 0x24, 0x23, 0x7a, 0xd8, 0xc6, 0xf9, 0xd2,
- 0x7d, 0xa9, 0x46, 0xd8, 0xba, 0x19, 0xf5, 0xf8, 0x60, 0x69, 0xfb, 0x56,
- 0x99, 0xa6, 0x36, 0xb2, 0x4b, 0xb1, 0xa6, 0x78, 0x63, 0x31, 0xb1, 0x97,
- 0x31, 0xd5, 0x25, 0x52, 0x7a, 0x41, 0x25, 0x18, 0x6a, 0x46, 0xfc, 0x51,
- 0x60, 0x09, 0x24, 0xb2, 0x60, 0x57, 0xa7, 0xa0, 0xbb, 0xe2, 0x6b, 0xba,
- 0x4a, 0x0f, 0x9e, 0x6e, 0x6f, 0x5b, 0x71, 0x74, 0xed, 0x5e, 0x3e, 0x68,
- 0x31, 0x34, 0x74, 0xb1, 0xfa, 0x5c, 0x92, 0x99, 0xa2, 0x02, 0x50, 0xc3,
- 0x3a, 0x5e, 0x25, 0x79, 0x2d, 0xf5, 0xf9, 0x36, 0x3b, 0x05, 0x02, 0xaf,
- 0xc5, 0xa4, 0x4d, 0xa3, 0x6b, 0x65, 0x06, 0x18, 0xfd, 0x72, 0x01, 0x26,
- 0xb4, 0x89, 0x50, 0x4d, 0x20, 0xaf, 0xdf, 0x36, 0xa8, 0x97, 0x88, 0x9b,
- 0x2c, 0x33, 0xab, 0x6f, 0xdf, 0x9f, 0x5e, 0x9e, 0x9c, 0xfb, 0xd9, 0x07,
- 0xc9, 0x0f, 0x27, 0x97, 0xdf, 0x1a, 0xad, 0x7d, 0x74, 0xf2, 0xee, 0x9b,
- 0x53, 0x0a, 0xf1, 0xbe, 0x7d, 0x7b, 0xf8, 0x8e, 0x00, 0x48, 0xde, 0x21,
- 0xf9, 0xf9, 0x10, 0x86, 0x03, 0x89, 0x23, 0x33, 0xc5, 0xb4, 0x77, 0x08,
- 0x9a, 0xa2, 0x1f, 0x46, 0x1a, 0x3b, 0xc7, 0x8f, 0x99, 0xd2, 0x8b, 0xf6,
- 0x24, 0x6d, 0x80, 0xf7, 0x1e, 0x96, 0xc1, 0x3d, 0x39, 0x71, 0x71, 0x6c,
- 0xc9, 0xd8, 0xa2, 0x89, 0xee, 0x72, 0x4c, 0xa0, 0x0c, 0x9a, 0x35, 0x74,
- 0x64, 0xd1, 0xf0, 0xdd, 0xed, 0xa2, 0x97, 0x58, 0x51, 0x0b, 0x4e, 0x0d,
- 0x3b, 0xc6, 0xe8, 0x4c, 0x85, 0xd8, 0x35, 0x7c, 0x5f, 0xb6, 0xcb, 0x92,
- 0xcc, 0x17, 0xd1, 0x25, 0xa4, 0x11, 0x95, 0xce, 0x8d, 0x4e, 0x16, 0x27,
- 0x19, 0xcd, 0x17, 0xa7, 0xfe, 0x85, 0x3a, 0x6c, 0x51, 0x07, 0x6a, 0x06,
- 0xf1, 0x75, 0x99, 0xb9, 0x93, 0x3b, 0x38, 0xd3, 0x66, 0x34, 0xfa, 0x03,
- 0x33, 0x8c, 0x2f, 0x97, 0x01, 0xc9, 0xb5, 0x81, 0x59, 0x92, 0x6d, 0x4b,
- 0x17, 0x26, 0x66, 0xff, 0x01, 0xab, 0x95, 0x16, 0x7e, 0x5d, 0xa9, 0x36,
- 0x4d, 0x73, 0xda, 0xb2, 0x64, 0xa2, 0xa1, 0x64, 0x43, 0x2a, 0x1f, 0x65,
- 0xcc, 0x90, 0x96, 0xfa, 0x58, 0x0b, 0xb8, 0x81, 0xef, 0xbb, 0x33, 0x0d,
- 0x4d, 0x6a, 0xe5, 0xab, 0x25, 0x71, 0x74, 0x89, 0x13, 0x60, 0x48, 0x84,
- 0xbb, 0x22, 0xa3, 0x1c, 0x07, 0xfa, 0xeb, 0x5f, 0x17, 0xd7, 0x7e, 0x51,
- 0x2c, 0x93, 0xc5, 0x2f, 0x62, 0x2b, 0x2b, 0x58, 0xef, 0xac, 0x16, 0x09,
- 0x31, 0x65, 0xab, 0x07, 0xc2, 0x36, 0xb9, 0xb7, 0xea, 0x83, 0xf2, 0xfb,
- 0xfd, 0xf0, 0xf7, 0xfb, 0x1c, 0x62, 0x38, 0x39, 0xbf, 0x7d, 0x6e, 0x31,
- 0x92, 0x19, 0xea, 0xc1, 0x57, 0xdf, 0x54, 0x29, 0xa0, 0x1d, 0x46, 0x8f,
- 0x8a, 0xc3, 0x9c, 0x65, 0x22, 0x87, 0xfe, 0x28, 0x81, 0x74, 0x59, 0xa1,
- 0x84, 0x1d, 0x8f, 0x20, 0xb6, 0xc2, 0x95, 0x01, 0x70, 0x3c, 0x41, 0x4e,
- 0xd1, 0x75, 0x65, 0x1a, 0x34, 0xbf, 0x7f, 0x6a, 0xcb, 0x75, 0x9c, 0x4c,
- 0x03, 0xd7, 0xa2, 0x14, 0x4c, 0x0e, 0xf2, 0xc5, 0xad, 0x32, 0x77, 0x9b,
- 0xbf, 0x3e, 0xb7, 0x3c, 0x5b, 0x75, 0x2b, 0x44, 0xdd, 0xc2, 0x23, 0x57,
- 0xe1, 0x8f, 0xce, 0xc1, 0x05, 0x46, 0x92, 0xc1, 0x19, 0x19, 0x9d, 0x7e,
- 0x65, 0xed, 0x9a, 0x0d, 0x8f, 0x72, 0x18, 0x75, 0x61, 0x33, 0x14, 0xcf,
- 0x43, 0x1e, 0x79, 0xc2, 0xc5, 0x27, 0x04, 0x91, 0x55, 0xff, 0x69, 0x7f,
- 0x77, 0x77, 0xef, 0x60, 0xef, 0xf3, 0x17, 0xbb, 0x07, 0x7b, 0x7b, 0x7b,
- 0xfb, 0x07, 0x7b, 0x07, 0x07, 0xfb, 0xbb, 0xbf, 0xec, 0x90, 0xff, 0xe8,
- 0x36, 0xcf, 0xee, 0x34, 0x2e, 0xcd, 0x6e, 0x3e, 0x6c, 0xeb, 0xba, 0xb9,
- 0xe7, 0x54, 0x00, 0x76, 0xf4, 0x61, 0x5f, 0xab, 0xe6, 0x63, 0x81, 0x67,
- 0xb8, 0xaa, 0x86, 0x41, 0x26, 0x17, 0xae, 0x18, 0x1d, 0x67, 0xd0, 0x03,
- 0xc2, 0x47, 0xaf, 0xfe, 0xb6, 0xa4, 0x91, 0x8e, 0x49, 0x1d, 0x80, 0x4e,
- 0x53, 0xdb, 0xd2, 0xdf, 0xeb, 0x59, 0x39, 0x1e, 0xa3, 0xb8, 0xc9, 0x56,
- 0xbf, 0x0f, 0x13, 0x42, 0x5b, 0xfe, 0xc8, 0x5b, 0x42, 0x02, 0x87, 0xc8,
- 0x3b, 0xe6, 0x83, 0xee, 0x66, 0xc7, 0x79, 0xf6, 0xcc, 0x0e, 0x98, 0x94,
- 0xc4, 0x3c, 0x02, 0x47, 0xb7, 0x99, 0xa4, 0xca, 0x56, 0xc5, 0x25, 0x57,
- 0xd9, 0xe7, 0xbb, 0x07, 0x07, 0xc4, 0x0c, 0xf4, 0xe7, 0xbd, 0xbe, 0xa4,
- 0x8c, 0xfb, 0x75, 0x30, 0x7d, 0x7b, 0x3d, 0x71, 0x1b, 0x64, 0x7e, 0xf8,
- 0xe3, 0x2c, 0x96, 0xf3, 0xac, 0x32, 0x86, 0x08, 0x11, 0x41, 0x23, 0x67,
- 0x1a, 0x1e, 0x43, 0x46, 0x61, 0x04, 0x66, 0x53, 0xa7, 0x5e, 0x87, 0x6e,
- 0x04, 0x46, 0x93, 0xb6, 0x38, 0x15, 0x8c, 0x28, 0xe6, 0x86, 0x68, 0xdb,
- 0x06, 0x3b, 0x16, 0x52, 0x35, 0xb9, 0xda, 0x8d, 0xeb, 0xfc, 0xf8, 0xbe,
- 0x15, 0xc9, 0x80, 0xc3, 0x55, 0x30, 0x3d, 0x31, 0x3d, 0xce, 0x3a, 0x3c,
- 0x3c, 0x26, 0x9e, 0x72, 0x2b, 0x25, 0x7e, 0x3f, 0x79, 0x83, 0xdd, 0x7f,
- 0xb6, 0xf7, 0x0b, 0x67, 0x2b, 0xd3, 0x81, 0x70, 0xb3, 0xa6, 0xa1, 0x17,
- 0xbf, 0x88, 0x4b, 0x37, 0xd2, 0x56, 0x36, 0xbc, 0x1e, 0xaa, 0x56, 0x21,
- 0xde, 0xc6, 0xbe, 0x5f, 0x57, 0xc2, 0x4c, 0x06, 0x4c, 0x3c, 0x0e, 0x3b,
- 0x4d, 0x1d, 0x4a, 0xbe, 0xa7, 0x56, 0x07, 0x66, 0x59, 0xe5, 0xde, 0x1e,
- 0x5f, 0x1e, 0x9a, 0xcb, 0xe3, 0xbb, 0xd0, 0xd0, 0x7f, 0x9b, 0x19, 0xab,
- 0x9c, 0x16, 0x7b, 0x0b, 0xe7, 0xe1, 0xd6, 0xe2, 0x87, 0xd3, 0xdc, 0x3d,
- 0x4d, 0xb6, 0x28, 0x40, 0xf9, 0xec, 0xf3, 0x67, 0x4f, 0xb7, 0x99, 0xac,
- 0x85, 0x5f, 0xcb, 0xa8, 0x84, 0x0c, 0x5e, 0x49, 0xc1, 0xaf, 0x22, 0xff,
- 0xbd, 0x15, 0x49, 0xef, 0x2f, 0x4e, 0xf8, 0x48, 0xdf, 0x30, 0xcc, 0x08,
- 0x1b, 0xbd, 0x5d, 0xbc, 0x49, 0xdc, 0xb7, 0x9e, 0x92, 0x31, 0xcf, 0x09,
- 0x0b, 0x15, 0xf0, 0x0c, 0x74, 0x31, 0x5a, 0x78, 0x10, 0xdc, 0xb0, 0xe6,
- 0x80, 0x96, 0xe0, 0x19, 0x15, 0x5a, 0x38, 0x74, 0x06, 0xe0, 0xa9, 0x84,
- 0xdd, 0x2c, 0xfb, 0xcc, 0x5a, 0x60, 0x64, 0x07, 0xb1, 0x3c, 0x62, 0xe9,
- 0xdf, 0xc1, 0xeb, 0xdf, 0xe6, 0x84, 0x1f, 0x28, 0x85, 0xb4, 0x0d, 0xcd,
- 0x83, 0x9a, 0x39, 0x4e, 0x3d, 0x6e, 0x15, 0xac, 0x3a, 0x6d, 0xd3, 0x83,
- 0x7d, 0x53, 0xc4, 0x27, 0x11, 0x45, 0x76, 0x0a, 0x39, 0x9b, 0xa5, 0x81,
- 0x67, 0x31, 0x6f, 0xb9, 0x7c, 0x04, 0x6e, 0x03, 0xb0, 0x17, 0xa8, 0x4a,
- 0x98, 0x9b, 0xeb, 0xa8, 0xba, 0x17, 0x0d, 0x1b, 0x66, 0x82, 0xa5, 0x45,
- 0xec, 0xe4, 0x03, 0x31, 0xb0, 0x8c, 0x5f, 0x6c, 0x63, 0x71, 0x95, 0xd4,
- 0x68, 0x6e, 0x75, 0xa0, 0x25, 0xf6, 0x07, 0x73, 0xfd, 0x95, 0x97, 0x2e,
- 0xe7, 0x57, 0xa0, 0xea, 0xdf, 0xf5, 0x39, 0x2f, 0x93, 0x3a, 0xed, 0x0e,
- 0x6c, 0x45, 0xd7, 0x18, 0x73, 0x17, 0xd9, 0x93, 0xd6, 0xfa, 0xd9, 0x42,
- 0x4f, 0x76, 0x76, 0xb6, 0x57, 0xf4, 0x46, 0x7e, 0x1d, 0xfb, 0xfa, 0x39,
- 0x60, 0x8b, 0xbc, 0xa2, 0x6f, 0xb3, 0xe6, 0xed, 0xc6, 0x69, 0x6a, 0xf3,
- 0x9a, 0x56, 0x72, 0x2a, 0x69, 0xf1, 0xec, 0x46, 0x55, 0xf3, 0x8a, 0x3b,
- 0xaf, 0xc2, 0xab, 0x3d, 0x08, 0xc9, 0xc4, 0x53, 0x18, 0x39, 0x66, 0x88,
- 0xe7, 0x9c, 0x80, 0x61, 0x72, 0x48, 0xbb, 0xa1, 0xf5, 0x61, 0xaf, 0xcb,
- 0xea, 0xcf, 0x55, 0x66, 0x04, 0x55, 0x62, 0xad, 0x3b, 0xaf, 0xef, 0xfd,
- 0x52, 0xd5, 0x3c, 0x45, 0x0d, 0xb1, 0xce, 0xde, 0x71, 0xc6, 0x08, 0x49,
- 0x56, 0x72, 0x7a, 0x88, 0xe7, 0x79, 0xd1, 0xe2, 0xfb, 0x95, 0x46, 0x90,
- 0xe7, 0x62, 0x07, 0x01, 0x30, 0xd5, 0x4a, 0x41, 0xba, 0x7d, 0x0e, 0x50,
- 0x80, 0x94, 0x48, 0xdd, 0x0b, 0x2b, 0xd6, 0x76, 0x13, 0x73, 0x8a, 0xc2,
- 0x98, 0xb7, 0x57, 0x6b, 0x3e, 0xfa, 0xbc, 0xe3, 0x39, 0x87, 0xc9, 0x26,
- 0x54, 0x90, 0xc0, 0x38, 0x3c, 0x39, 0xa5, 0xa4, 0xd8, 0x53, 0x63, 0xe2,
- 0x8d, 0x54, 0x55, 0x42, 0x92, 0x38, 0xd2, 0x75, 0x8b, 0x9c, 0xd4, 0xf5,
- 0xbe, 0xa5, 0x24, 0xd2, 0x7a, 0x4a, 0xd8, 0x2d, 0x14, 0x61, 0x65, 0xd3,
- 0x5f, 0x60, 0x44, 0xcd, 0x6a, 0x19, 0x7d, 0xa9, 0x66, 0xa7, 0x2d, 0x20,
- 0xba, 0x89, 0xbc, 0xe2, 0x36, 0x9b, 0x95, 0x0b, 0x98, 0xd4, 0x2c, 0xa6,
- 0x41, 0x8b, 0x56, 0x65, 0xb3, 0xec, 0x56, 0xbc, 0xab, 0x0c, 0x78, 0xfc,
- 0x8d, 0xe4, 0x2b, 0x30, 0x6f, 0x71, 0xe3, 0xd5, 0xbd, 0xb4, 0x72, 0x22,
- 0xe8, 0xa3, 0x3b, 0x8c, 0x1b, 0xe5, 0xe0, 0x80, 0xe8, 0xfb, 0x8e, 0xa6,
- 0xc3, 0xcc, 0x90, 0xa5, 0x79, 0x18, 0x90, 0x91, 0x2b, 0xa9, 0xed, 0xef,
- 0x6b, 0x41, 0x7c, 0xe9, 0xd6, 0x8a, 0xb0, 0xb3, 0x50, 0xd9, 0x2f, 0xd9,
- 0xfb, 0xfe, 0xff, 0xed, 0xea, 0xea, 0x72, 0x13, 0x86, 0x61, 0xf0, 0x3b,
- 0xa7, 0xe8, 0x01, 0xba, 0x1e, 0x62, 0x62, 0x12, 0x0f, 0x48, 0xeb, 0x19,
- 0x80, 0x76, 0x4c, 0xa2, 0xa4, 0x0a, 0x8b, 0x26, 0x6e, 0x8f, 0xbf, 0xef,
- 0xb3, 0x43, 0xe0, 0xad, 0x51, 0x52, 0xd7, 0x89, 0xe3, 0xc6, 0x8e, 0xff,
- 0xfa, 0x48, 0xa4, 0x2e, 0x93, 0x01, 0x4e, 0x9e, 0x1e, 0x37, 0xb5, 0x84,
- 0x34, 0x9b, 0x46, 0x86, 0x92, 0x39, 0xbd, 0x82, 0xcb, 0xb9, 0x39, 0xd2,
- 0xc5, 0x9a, 0x74, 0xa7, 0x94, 0x83, 0xb5, 0x8d, 0x85, 0xb9, 0xb9, 0xf1,
- 0x68, 0x87, 0xc7, 0x0d, 0x03, 0xa6, 0xbc, 0x45, 0x50, 0xb9, 0x30, 0xdf,
- 0x78, 0xaf, 0xd3, 0x10, 0x66, 0xde, 0xbf, 0xe3, 0x50, 0xb1, 0x77, 0x9f,
- 0x1f, 0xe1, 0xbf, 0xd5, 0x52, 0x62, 0x12, 0x92, 0x43, 0x52, 0x8e, 0xe5,
- 0x15, 0x19, 0x0e, 0xaa, 0x54, 0xfa, 0x59, 0x60, 0x7e, 0xac, 0x25, 0xbe,
- 0x80, 0xc5, 0x82, 0xb3, 0x68, 0x52, 0x51, 0xe0, 0x0a, 0x1c, 0x2a, 0x5d,
- 0x31, 0xf2, 0x0a, 0xfa, 0x3e, 0xfd, 0xa3, 0xa2, 0xf1, 0x3c, 0xff, 0x1e,
- 0x61, 0xf9, 0x7f, 0xe6, 0x15, 0xc7, 0x3f, 0x5e, 0x03, 0x97, 0x28, 0xd2,
- 0x66, 0x73, 0xeb, 0xd6, 0x72, 0xb8, 0xd8, 0x61, 0x1d, 0xd1, 0x2c, 0xc6,
- 0x55, 0x5c, 0x25, 0xd3, 0xb6, 0x08, 0x4e, 0x09, 0x10, 0xa9, 0x70, 0xbe,
- 0x45, 0x50, 0xd0, 0x5a, 0x9a, 0x29, 0x82, 0x2f, 0x2c, 0xed, 0x8c, 0x30,
- 0x83, 0x25, 0x5d, 0x23, 0x60, 0xae, 0xdc, 0x94, 0x70, 0x96, 0xd6, 0x1c,
- 0xd5, 0xd1, 0xea, 0x38, 0xd2, 0xcb, 0x3a, 0xb8, 0x6a, 0xce, 0x37, 0xda,
- 0xc9, 0x9c, 0x3e, 0xd6, 0xf3, 0x1a, 0x94, 0x0e, 0x81, 0x48, 0xd2, 0x92,
- 0x87, 0x68, 0x91, 0xf5, 0xc6, 0xdd, 0x38, 0x74, 0x5f, 0x80, 0x24, 0x9c,
- 0x5c, 0xd0, 0xe5, 0x1d, 0x8d, 0xf5, 0xd9, 0x64, 0x7f, 0x70, 0x80, 0x7d,
- 0x67, 0xb4, 0x08, 0xcd, 0x3b, 0x75, 0x2d, 0xcb, 0xde, 0xd7, 0xaf, 0x1a,
- 0xa0, 0x08, 0xb2, 0x18, 0xf9, 0x6c, 0xbc, 0x62, 0xe2, 0x57, 0x25, 0xd3,
- 0xf3, 0x0b, 0x29, 0xbf, 0xa4, 0xe7, 0xd2, 0x9b, 0x9d, 0x49, 0x65, 0x94,
- 0xad, 0xd6, 0x3b, 0xe9, 0xd7, 0xfc, 0x1c, 0x25, 0x7f, 0x0a, 0x40, 0xb3,
- 0xb5, 0x7c, 0xfb, 0x55, 0xf7, 0x5d, 0x31, 0x56, 0x56, 0x62, 0xaa, 0x3c,
- 0xb9, 0xb3, 0x73, 0x72, 0xbb, 0xb4, 0x6e, 0x34, 0x6e, 0xd3, 0x1b, 0xbf,
- 0x36, 0xfa, 0x5b, 0x74, 0x40, 0xed, 0x06, 0x2e, 0x26, 0xb5, 0x18, 0x09,
- 0x86, 0xcd, 0x03, 0xb4, 0x32, 0xa8, 0x2a, 0x2d, 0x1e, 0x03, 0x00,
+ 0x1f, 0x8b, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xed, 0xbd,
+ 0x6b, 0x77, 0xdc, 0xc6, 0x95, 0x36, 0xfa, 0xdd, 0xbf, 0x02, 0xc3, 0xac,
+ 0xbc, 0x24, 0x27, 0xdd, 0xcd, 0x8b, 0x6e, 0x16, 0x2d, 0x67, 0x2c, 0x4b,
+ 0x94, 0xcd, 0x31, 0x25, 0xf2, 0x65, 0x53, 0xb6, 0x73, 0x62, 0x2f, 0x2d,
+ 0x74, 0x37, 0x48, 0x22, 0xea, 0x06, 0x3a, 0x00, 0x9a, 0x97, 0xe4, 0xcd,
+ 0xf9, 0xed, 0xa7, 0x9e, 0x7d, 0xa9, 0x2a, 0xa0, 0x0a, 0x4d, 0xda, 0xb1,
+ 0x32, 0x73, 0xce, 0x9c, 0xcc, 0x1a, 0x4b, 0x22, 0x81, 0x42, 0x5d, 0x76,
+ 0xed, 0xfb, 0x7e, 0x76, 0x92, 0xdc, 0xf7, 0xbf, 0x0f, 0xf4, 0xff, 0x1f,
+ 0xcc, 0xff, 0xcc, 0x9f, 0x9f, 0x25, 0xc9, 0x69, 0x55, 0xfe, 0x25, 0x9b,
+ 0x36, 0xf1, 0x67, 0x3f, 0x7c, 0xf8, 0x3f, 0x09, 0xff, 0x9f, 0x79, 0xe7,
+ 0x27, 0xf3, 0xe7, 0x67, 0x6b, 0xc7, 0xde, 0x49, 0xdc, 0x0b, 0xff, 0xe7,
+ 0xc3, 0x76, 0x72, 0xdf, 0x0b, 0xff, 0x27, 0xd9, 0xa2, 0x17, 0x3e, 0xc8,
+ 0x17, 0x5e, 0xe0, 0xef, 0x1f, 0x3e, 0xac, 0xff, 0xc8, 0x4f, 0x98, 0x15,
+ 0xfe, 0xb3, 0x83, 0xf7, 0x7e, 0xfa, 0x80, 0xbf, 0x9a, 0x9f, 0x7c, 0xf6,
+ 0xd9, 0xbb, 0x97, 0x6f, 0x0f, 0xf5, 0xd5, 0xe9, 0xaa, 0x9a, 0x27, 0xc3,
+ 0xa4, 0xa9, 0xd2, 0xa2, 0xbe, 0xc8, 0xaa, 0x24, 0x4d, 0xde, 0x9f, 0x1d,
+ 0x7f, 0xf6, 0xd9, 0xf8, 0x4f, 0xef, 0x4e, 0x4e, 0xc7, 0x47, 0xe3, 0xd6,
+ 0x63, 0x7f, 0x2e, 0x97, 0x4d, 0x5e, 0x16, 0xb5, 0x99, 0xbe, 0x79, 0xa8,
+ 0xfe, 0xf9, 0xb3, 0xcf, 0x5e, 0x1f, 0x8e, 0x5f, 0x9d, 0x1d, 0x9d, 0x9e,
+ 0x1f, 0x9d, 0xbc, 0x6b, 0x3d, 0x99, 0xe4, 0x75, 0x62, 0x86, 0x6a, 0xca,
+ 0x72, 0x6e, 0xfe, 0xe3, 0x46, 0x9f, 0xa5, 0x4d, 0x9a, 0x5c, 0x54, 0xe5,
+ 0x22, 0x29, 0x2b, 0xfc, 0x22, 0x4d, 0xea, 0xac, 0xba, 0xce, 0xaa, 0x41,
+ 0xb2, 0xaa, 0xf3, 0xe2, 0x32, 0x29, 0x8b, 0x2c, 0x29, 0x2f, 0x92, 0xe6,
+ 0x2a, 0xd3, 0xe1, 0xea, 0xd5, 0x72, 0x59, 0x56, 0x4d, 0x36, 0x4b, 0x96,
+ 0x55, 0xd9, 0x94, 0xd3, 0x72, 0x5e, 0x27, 0x5b, 0xaf, 0x8f, 0x5e, 0x9d,
+ 0x0f, 0x92, 0x37, 0x47, 0xc7, 0x87, 0xe6, 0xbf, 0xe7, 0xa7, 0xf4, 0x9f,
+ 0xf1, 0x20, 0xf9, 0xe6, 0xe4, 0xf4, 0xdb, 0xc3, 0xb3, 0x41, 0xf2, 0xed,
+ 0x39, 0x7e, 0x86, 0xff, 0x9a, 0x1f, 0x26, 0x47, 0x6f, 0x5f, 0x9e, 0x0e,
+ 0x74, 0x38, 0xfc, 0x03, 0x3f, 0x3c, 0x7e, 0x6d, 0x7e, 0xc8, 0x7f, 0xe0,
+ 0x9f, 0xa7, 0x27, 0xa7, 0x8f, 0xe4, 0x0f, 0xfc, 0xf3, 0xec, 0xfc, 0xad,
+ 0xf9, 0xed, 0xd9, 0xf9, 0xd8, 0xfc, 0x77, 0xfc, 0x0a, 0xff, 0xa1, 0xaf,
+ 0x8c, 0xdf, 0x7e, 0x4d, 0xff, 0x19, 0xdb, 0xe1, 0xc6, 0x6f, 0xf9, 0xe7,
+ 0xf4, 0xa5, 0xf3, 0xc3, 0xe3, 0x77, 0x87, 0xe7, 0x49, 0x5a, 0xcc, 0x92,
+ 0x73, 0xf3, 0xfc, 0xf6, 0x28, 0x39, 0xbf, 0xca, 0x92, 0x69, 0xb9, 0x58,
+ 0xe0, 0x47, 0x66, 0x47, 0x66, 0x59, 0x9d, 0x5f, 0x16, 0x66, 0x29, 0x66,
+ 0xe5, 0x37, 0x65, 0xf5, 0x31, 0x49, 0x6e, 0xf2, 0xe6, 0xaa, 0x5c, 0x35,
+ 0x3a, 0xdc, 0xca, 0xec, 0x46, 0x92, 0x17, 0x4d, 0x56, 0xa5, 0x53, 0xec,
+ 0xf4, 0xe8, 0xb3, 0xd6, 0xae, 0x96, 0x17, 0x66, 0x0f, 0x6b, 0xb3, 0x69,
+ 0x93, 0x55, 0x3d, 0x2f, 0xd3, 0x19, 0xb6, 0xca, 0xbc, 0x72, 0xb1, 0x32,
+ 0x9b, 0x5c, 0xe5, 0xd3, 0x8f, 0x75, 0x32, 0xcf, 0x3f, 0x66, 0xd8, 0xa8,
+ 0xdb, 0x3b, 0xdd, 0xb8, 0x01, 0x0f, 0x9a, 0xae, 0xcc, 0x9e, 0x16, 0x43,
+ 0x1d, 0xae, 0xc9, 0xa7, 0x29, 0x3e, 0x40, 0x3b, 0x97, 0xac, 0x96, 0x18,
+ 0x8d, 0x77, 0x2c, 0x59, 0x96, 0xb5, 0x79, 0x69, 0x3c, 0x3e, 0x36, 0x33,
+ 0x2f, 0x8a, 0x8c, 0xe6, 0x51, 0x0f, 0xcc, 0x3f, 0xca, 0x8f, 0x79, 0x66,
+ 0xfe, 0x72, 0x91, 0xcf, 0xb3, 0x84, 0x4f, 0xd4, 0x0e, 0x87, 0xa3, 0x4d,
+ 0xaa, 0xac, 0x5e, 0x2d, 0x32, 0xb3, 0x7b, 0x6f, 0xb3, 0x26, 0x9d, 0xe7,
+ 0xc5, 0x47, 0xf3, 0x57, 0x2c, 0x7c, 0x51, 0x56, 0xd9, 0x28, 0x79, 0x59,
+ 0x27, 0x77, 0xe5, 0xca, 0x2c, 0x78, 0x3e, 0x37, 0x67, 0x9e, 0x25, 0x93,
+ 0x6c, 0x5e, 0xde, 0x0c, 0x70, 0xd2, 0x49, 0xb1, 0x5a, 0x4c, 0xcc, 0x00,
+ 0xe5, 0x85, 0x1b, 0x2e, 0x6d, 0x56, 0x66, 0x38, 0x7e, 0x7a, 0x91, 0x9a,
+ 0x35, 0x99, 0x77, 0xab, 0xe4, 0x2a, 0x33, 0x6b, 0xae, 0x97, 0x79, 0xf1,
+ 0x6f, 0xed, 0x7d, 0x31, 0x5b, 0xbb, 0x2c, 0x6f, 0xb2, 0xca, 0xec, 0xec,
+ 0xe4, 0x2e, 0x31, 0x9b, 0x30, 0x61, 0x22, 0xbc, 0x30, 0x44, 0x96, 0xa4,
+ 0x66, 0x08, 0x4b, 0x80, 0xc3, 0x2a, 0x9b, 0xa7, 0x20, 0x26, 0xfb, 0x8d,
+ 0x91, 0x39, 0xc4, 0xcc, 0x52, 0x9b, 0xbc, 0xba, 0xf5, 0x68, 0x9b, 0x5e,
+ 0x9e, 0x99, 0x95, 0xe4, 0xf3, 0xda, 0x1c, 0x03, 0x2e, 0x85, 0x3c, 0x83,
+ 0x43, 0x05, 0xfd, 0x1b, 0xda, 0xbc, 0x2b, 0x9a, 0xf4, 0x96, 0x3e, 0x2f,
+ 0xb4, 0x39, 0x9c, 0x65, 0xcb, 0xac, 0x98, 0x65, 0x45, 0x33, 0x4a, 0xfe,
+ 0x54, 0xae, 0x36, 0xcd, 0xb7, 0x2f, 0x72, 0xb3, 0x07, 0xa9, 0x0c, 0x65,
+ 0xbe, 0x6c, 0x88, 0x60, 0x5a, 0xe5, 0x4b, 0xef, 0x28, 0xca, 0xc2, 0x9c,
+ 0x79, 0x72, 0xf6, 0xe6, 0x55, 0xf2, 0xe8, 0xf9, 0xe7, 0x4f, 0xdd, 0x99,
+ 0x9b, 0x01, 0x92, 0x69, 0x5a, 0x98, 0x15, 0x67, 0xd3, 0xfc, 0xe2, 0x2e,
+ 0x59, 0xac, 0xe6, 0x4d, 0xbe, 0x34, 0xbb, 0x8f, 0xcb, 0x87, 0x0b, 0xb4,
+ 0x4c, 0xab, 0xa6, 0x06, 0x11, 0xd0, 0x0f, 0x68, 0xed, 0x37, 0x55, 0xde,
+ 0xe0, 0x22, 0xd1, 0xef, 0xcc, 0x0c, 0xb3, 0xa6, 0xd6, 0xe1, 0x40, 0x6b,
+ 0xe6, 0x3b, 0x13, 0x43, 0x5b, 0x66, 0x6b, 0xd3, 0xda, 0x7c, 0xf4, 0xe0,
+ 0x33, 0xc7, 0x41, 0xae, 0x9a, 0x66, 0x79, 0xb0, 0xb3, 0x53, 0xe7, 0x4d,
+ 0x36, 0xfa, 0xbb, 0xb9, 0x87, 0x83, 0xe6, 0xa6, 0x1c, 0x34, 0x57, 0x55,
+ 0x96, 0xfd, 0x63, 0x64, 0x68, 0xd8, 0x3e, 0x69, 0xbe, 0x7b, 0x27, 0x13,
+ 0xbb, 0xcc, 0x1a, 0xf3, 0x85, 0xbf, 0xae, 0xb2, 0x02, 0x23, 0x9a, 0x79,
+ 0xa4, 0xf3, 0xe5, 0x55, 0x6a, 0x8e, 0x33, 0x33, 0xd4, 0x88, 0x9b, 0x6d,
+ 0x08, 0x06, 0xb3, 0xe2, 0xbb, 0xfd, 0xe7, 0x9f, 0xc3, 0x8f, 0x5e, 0xd0,
+ 0x37, 0xcd, 0x7f, 0x47, 0xd9, 0x6d, 0xba, 0x30, 0x6b, 0xc3, 0xa7, 0x76,
+ 0x40, 0x62, 0x7f, 0xde, 0x1b, 0xee, 0xed, 0xee, 0xfe, 0x3c, 0x6a, 0x6e,
+ 0x9b, 0x87, 0x3d, 0xbf, 0xbb, 0xeb, 0xde, 0xc0, 0xa3, 0x5b, 0x58, 0x6f,
+ 0x32, 0x37, 0x24, 0x83, 0x8f, 0xff, 0x2d, 0xab, 0xca, 0x7a, 0xfb, 0x61,
+ 0x23, 0xa5, 0xc3, 0xbf, 0xb5, 0xbf, 0xfb, 0x2e, 0xab, 0x89, 0x66, 0xdc,
+ 0x5a, 0x93, 0xb4, 0x32, 0x74, 0x5b, 0x36, 0x8e, 0x3d, 0x0d, 0xcc, 0xa5,
+ 0x6c, 0xec, 0xce, 0x98, 0x3b, 0x67, 0x9e, 0x36, 0x8c, 0x2d, 0x9d, 0x83,
+ 0xa7, 0xd5, 0x49, 0x91, 0xdd, 0xda, 0x5b, 0x6e, 0x6e, 0x7f, 0x96, 0x4e,
+ 0xaf, 0x92, 0xd2, 0x10, 0x7f, 0x15, 0x39, 0x02, 0x7f, 0x42, 0x69, 0x35,
+ 0xbd, 0xca, 0xaf, 0xcd, 0x6e, 0x3c, 0x7f, 0xfe, 0x74, 0x68, 0xfe, 0xf3,
+ 0xfc, 0xe7, 0x9d, 0xeb, 0x72, 0x6e, 0x36, 0xe7, 0xf1, 0xcf, 0x3b, 0x38,
+ 0xe2, 0xbf, 0xa7, 0x83, 0xc9, 0x60, 0xfa, 0x8f, 0xd1, 0x55, 0xb3, 0x98,
+ 0xf7, 0x12, 0x4e, 0x5a, 0x98, 0xff, 0x5f, 0x94, 0xab, 0xa2, 0xb1, 0xc4,
+ 0x62, 0x68, 0xae, 0xf1, 0x98, 0x93, 0xb9, 0xae, 0xe6, 0x8e, 0x82, 0xb4,
+ 0x41, 0x43, 0xb8, 0x75, 0xe6, 0x82, 0xba, 0xeb, 0xd8, 0x4c, 0xaf, 0xb0,
+ 0x7e, 0x43, 0x3d, 0xa9, 0x6c, 0x42, 0x93, 0xa7, 0xb8, 0x99, 0x86, 0x41,
+ 0x80, 0x61, 0xd1, 0x58, 0xfc, 0xb5, 0xdc, 0x3c, 0x58, 0x56, 0xb3, 0xac,
+ 0x1a, 0x75, 0xa7, 0x61, 0xaf, 0xac, 0xf7, 0xcd, 0x44, 0x25, 0x0a, 0x7e,
+ 0x40, 0x13, 0x5b, 0xe4, 0xb7, 0x66, 0x04, 0x62, 0x98, 0x05, 0x4d, 0x9c,
+ 0x47, 0x4b, 0x30, 0x63, 0xfa, 0x8c, 0xbe, 0xef, 0xae, 0xac, 0x99, 0x7a,
+ 0x6b, 0xe9, 0xf4, 0x51, 0xb7, 0xf8, 0xc4, 0x1c, 0xde, 0xd2, 0xbc, 0xb5,
+ 0x02, 0x5f, 0xa5, 0x6b, 0x8d, 0x61, 0x0c, 0x43, 0xb8, 0x34, 0xe7, 0x62,
+ 0xce, 0x02, 0x54, 0x8c, 0xa3, 0xba, 0x4b, 0xde, 0x19, 0x82, 0x61, 0x66,
+ 0xe4, 0x11, 0xfb, 0x3c, 0x6b, 0x9a, 0x7b, 0x8f, 0xc9, 0x51, 0xec, 0xc1,
+ 0x5e, 0x40, 0xb4, 0x7d, 0xcf, 0x1b, 0x3a, 0x3b, 0xd8, 0x6f, 0x3f, 0xfc,
+ 0x83, 0x61, 0xd2, 0xee, 0xba, 0x98, 0xaf, 0xff, 0xfd, 0x1f, 0x1e, 0xd5,
+ 0xdd, 0xe0, 0xb7, 0x79, 0x71, 0x5d, 0x7e, 0x34, 0x5b, 0x44, 0x52, 0x34,
+ 0x6d, 0xef, 0x26, 0xf8, 0xd0, 0x62, 0xd9, 0x58, 0xf1, 0x04, 0x72, 0x34,
+ 0x3f, 0x9a, 0xa4, 0x93, 0xf9, 0x5d, 0x72, 0x95, 0x5e, 0x67, 0x58, 0xef,
+ 0xd2, 0xd0, 0x29, 0x76, 0xc0, 0x88, 0x8d, 0x39, 0xf1, 0x31, 0x61, 0x0c,
+ 0xb3, 0x72, 0x35, 0x31, 0xcc, 0xe5, 0xaf, 0xab, 0xb2, 0xe1, 0x8d, 0x49,
+ 0xaf, 0xcb, 0x7c, 0xd6, 0x92, 0xc5, 0x57, 0x19, 0x18, 0x1a, 0x3e, 0x4c,
+ 0x42, 0xca, 0x30, 0x54, 0xcc, 0x94, 0x2e, 0x5a, 0xde, 0x40, 0xdc, 0x19,
+ 0x56, 0x98, 0xce, 0xeb, 0x32, 0x49, 0x2e, 0x4b, 0xdc, 0x12, 0x62, 0xc0,
+ 0x44, 0xe6, 0xe6, 0x50, 0xae, 0x52, 0x48, 0x35, 0x23, 0xc0, 0xec, 0x3d,
+ 0xa8, 0x32, 0xe2, 0xc5, 0x74, 0x52, 0xe9, 0x7c, 0xc0, 0xd2, 0x0b, 0xef,
+ 0xc8, 0x56, 0x25, 0x9b, 0xff, 0x6b, 0x73, 0x90, 0x6c, 0xfe, 0xc7, 0x26,
+ 0xd1, 0xc3, 0xe6, 0xbf, 0x6f, 0xba, 0x73, 0x36, 0xca, 0xd8, 0x75, 0x3e,
+ 0xcb, 0x98, 0x24, 0x8e, 0x4e, 0xaf, 0x9f, 0x26, 0x7f, 0x83, 0xee, 0x60,
+ 0x78, 0x6d, 0x76, 0xab, 0x04, 0xa9, 0x6b, 0x33, 0x6f, 0x27, 0x86, 0xe9,
+ 0xa6, 0x4b, 0x28, 0x11, 0x59, 0x35, 0x35, 0xd4, 0x9b, 0x5e, 0x1a, 0x7a,
+ 0x35, 0xb2, 0x58, 0x87, 0xc3, 0xf8, 0x78, 0x85, 0x97, 0x65, 0x18, 0x64,
+ 0x52, 0xa4, 0x0b, 0x73, 0x23, 0x8e, 0x31, 0xa3, 0xbc, 0x08, 0x0f, 0xf3,
+ 0xcf, 0x17, 0xd9, 0xe7, 0xbb, 0x07, 0x07, 0x8f, 0x7e, 0xbf, 0xff, 0x24,
+ 0x6b, 0xae, 0x76, 0x7f, 0xde, 0xb1, 0x8f, 0x1c, 0x5d, 0xd0, 0xb6, 0x2b,
+ 0xf9, 0xe9, 0x24, 0x8c, 0x94, 0xb7, 0x52, 0xc2, 0xbc, 0x6f, 0xfe, 0x9e,
+ 0x5d, 0xe4, 0xb7, 0x03, 0xd5, 0x97, 0xf8, 0xce, 0xa5, 0x86, 0xd4, 0xcc,
+ 0xf9, 0x81, 0x45, 0xe8, 0x70, 0x97, 0xab, 0xac, 0x36, 0x3b, 0x79, 0x73,
+ 0x95, 0x36, 0x89, 0x1d, 0x80, 0x4f, 0x76, 0x91, 0x5f, 0x5e, 0x35, 0xc9,
+ 0x4d, 0x0a, 0x61, 0x73, 0xd4, 0xf0, 0x10, 0x90, 0xf2, 0x46, 0xc4, 0x5c,
+ 0xa4, 0x46, 0x56, 0xe0, 0x0c, 0x49, 0xa4, 0x4f, 0x9c, 0x86, 0xd1, 0x18,
+ 0x32, 0xe7, 0x03, 0x71, 0xea, 0xd4, 0x24, 0xad, 0x71, 0x69, 0x0b, 0xc3,
+ 0x1c, 0x1a, 0xa3, 0x23, 0xac, 0xf0, 0xaf, 0x2b, 0xa3, 0x05, 0xd0, 0x1e,
+ 0xc8, 0x44, 0x49, 0x50, 0xbe, 0xc1, 0x71, 0xe2, 0x6c, 0xac, 0xf0, 0x32,
+ 0x87, 0x34, 0x90, 0x63, 0xb6, 0x6f, 0xd4, 0xe6, 0xc2, 0x19, 0xce, 0x64,
+ 0x29, 0x63, 0x03, 0x4c, 0x76, 0x83, 0xd7, 0x49, 0x73, 0x4c, 0x6b, 0x28,
+ 0x0a, 0xac, 0x0e, 0x98, 0xc9, 0x7b, 0x8b, 0x35, 0x9b, 0x96, 0x7e, 0x84,
+ 0x4a, 0xd2, 0x51, 0x7c, 0xe8, 0xb5, 0x59, 0x69, 0x88, 0xcc, 0xcc, 0xd6,
+ 0x30, 0x63, 0xac, 0x0c, 0x2c, 0x96, 0x76, 0x85, 0x88, 0xdc, 0x8c, 0x89,
+ 0x1f, 0xe6, 0x0d, 0x64, 0x0c, 0xe9, 0xb0, 0x66, 0xbe, 0x66, 0x53, 0x48,
+ 0x11, 0x35, 0x8c, 0xda, 0x5b, 0x3f, 0x89, 0x47, 0xf3, 0x6c, 0x72, 0x6d,
+ 0xb4, 0x14, 0xa3, 0x90, 0x66, 0xf6, 0x2d, 0x92, 0xe7, 0x53, 0xe8, 0x46,
+ 0x73, 0x73, 0x5f, 0xa6, 0x65, 0x55, 0x41, 0xdf, 0xc7, 0x09, 0x4e, 0x98,
+ 0x89, 0x2e, 0x32, 0xa3, 0x46, 0xf8, 0xdb, 0x99, 0x43, 0xa0, 0x19, 0xfe,
+ 0x62, 0xf4, 0x12, 0xe2, 0x20, 0x46, 0x7f, 0x20, 0x9e, 0x4f, 0x0b, 0xa7,
+ 0xd9, 0x61, 0xec, 0xe9, 0x34, 0x5b, 0x36, 0x75, 0x6c, 0x4d, 0x7a, 0xe0,
+ 0x66, 0x3a, 0x55, 0x86, 0x9d, 0xf7, 0x95, 0x2e, 0xda, 0x57, 0x2b, 0xf4,
+ 0x49, 0xef, 0x52, 0x3d, 0xc6, 0xe8, 0x61, 0xb5, 0xdd, 0xb5, 0x86, 0x68,
+ 0xc3, 0xb0, 0x31, 0xda, 0xf3, 0x05, 0x26, 0x8a, 0x87, 0x6b, 0xbe, 0xa9,
+ 0xc4, 0x9a, 0x71, 0x90, 0xac, 0x69, 0xf3, 0x77, 0x21, 0xba, 0xcc, 0x7e,
+ 0xda, 0xc1, 0xcd, 0x57, 0xed, 0x99, 0xe2, 0xf3, 0x50, 0xf1, 0x8d, 0x24,
+ 0x9f, 0xd5, 0x57, 0x46, 0xf9, 0xaa, 0xe5, 0x66, 0xe7, 0x0b, 0x43, 0x33,
+ 0xd7, 0x38, 0xdf, 0x65, 0x96, 0xcd, 0x46, 0xc9, 0xc9, 0x05, 0xb8, 0x6a,
+ 0x65, 0x26, 0xdd, 0xd0, 0xaf, 0x21, 0x55, 0xcc, 0xbe, 0xcd, 0x48, 0x89,
+ 0xb7, 0x57, 0x8b, 0xa7, 0xe2, 0x49, 0x07, 0xe2, 0xe4, 0xa9, 0xf9, 0x89,
+ 0x99, 0xed, 0xbc, 0x2d, 0x82, 0xe8, 0x1e, 0x1a, 0xee, 0x8d, 0xe9, 0x4d,
+ 0xb2, 0x84, 0x28, 0x71, 0x92, 0x35, 0x37, 0x59, 0x66, 0x87, 0xab, 0x33,
+ 0x23, 0xf6, 0x70, 0x68, 0xac, 0xf9, 0x11, 0x33, 0xc4, 0xd6, 0x9e, 0x9e,
+ 0x9d, 0x7c, 0x73, 0x76, 0x38, 0x1e, 0x27, 0x6f, 0x0f, 0xcf, 0x0f, 0xcf,
+ 0x5a, 0x3b, 0x5d, 0x94, 0xd5, 0x82, 0x4e, 0x74, 0x96, 0xd7, 0xcb, 0x79,
+ 0x7a, 0x87, 0xa3, 0x36, 0x2b, 0xb9, 0xac, 0x70, 0xb3, 0x16, 0x19, 0xa4,
+ 0xc2, 0x6c, 0x45, 0x9c, 0xcc, 0x88, 0x23, 0x73, 0x7c, 0xa2, 0xf1, 0x82,
+ 0x99, 0x90, 0x9a, 0x5c, 0x5c, 0xba, 0x9d, 0x36, 0x1c, 0x47, 0x24, 0x29,
+ 0x44, 0xa9, 0x3d, 0x0f, 0xa8, 0x9e, 0x64, 0xdc, 0x0c, 0xdc, 0xcf, 0x78,
+ 0x9b, 0x58, 0xb4, 0x19, 0x9a, 0xcd, 0x17, 0xc4, 0xec, 0xcc, 0x9f, 0x4e,
+ 0xdb, 0xcc, 0x2e, 0x8c, 0xaa, 0x6d, 0xa4, 0x2b, 0x5b, 0x0a, 0xdd, 0x39,
+ 0xe9, 0x6c, 0xad, 0x7e, 0x6c, 0xc8, 0x10, 0xac, 0x19, 0x03, 0xf2, 0x54,
+ 0xf8, 0x0b, 0x96, 0x89, 0x19, 0x9d, 0x04, 0xbc, 0x4f, 0x1e, 0x5b, 0x62,
+ 0x0a, 0x99, 0x39, 0xd9, 0x19, 0x0f, 0x5f, 0xaf, 0x2e, 0xe8, 0x22, 0x27,
+ 0x5b, 0x46, 0x33, 0x7f, 0x6b, 0xac, 0x25, 0x63, 0xb1, 0x0c, 0x92, 0xd3,
+ 0x6d, 0x7a, 0x6f, 0x6f, 0x77, 0xff, 0x31, 0x33, 0x82, 0x91, 0x0e, 0xf7,
+ 0xc6, 0x63, 0xc4, 0x7b, 0x1f, 0x71, 0xbc, 0xfc, 0x10, 0x06, 0x1f, 0x25,
+ 0x7b, 0x6f, 0xf9, 0x27, 0x8f, 0x3f, 0x7f, 0xf2, 0xec, 0xa9, 0xfc, 0xb0,
+ 0x4d, 0xe0, 0x76, 0xfe, 0x44, 0x1d, 0x64, 0xf9, 0xc1, 0x14, 0x34, 0x33,
+ 0x31, 0xab, 0x5b, 0xe4, 0x85, 0xb9, 0x26, 0xe6, 0x5a, 0x09, 0xaf, 0x02,
+ 0x3d, 0x9b, 0xc9, 0x5f, 0x30, 0x67, 0x93, 0x73, 0x6d, 0x9b, 0x94, 0xe6,
+ 0x65, 0x43, 0xb2, 0x86, 0x97, 0xdb, 0x43, 0x62, 0x35, 0xa1, 0xc1, 0x44,
+ 0xd2, 0x09, 0x18, 0x2c, 0xec, 0x2a, 0xa3, 0x00, 0x67, 0xd1, 0xaf, 0x59,
+ 0xa9, 0x68, 0xde, 0x30, 0x73, 0x33, 0x32, 0x11, 0x62, 0x2e, 0xdc, 0x77,
+ 0xc3, 0x0a, 0x88, 0x43, 0xde, 0xe4, 0x35, 0xb1, 0x86, 0x9b, 0x72, 0x35,
+ 0x37, 0x56, 0x0c, 0x1e, 0x58, 0x2d, 0xe9, 0x05, 0xf3, 0xa9, 0xa5, 0xe3,
+ 0x01, 0x46, 0x63, 0x01, 0xed, 0x74, 0x47, 0x31, 0x53, 0x33, 0xff, 0x5c,
+ 0x1a, 0x52, 0xe2, 0xe9, 0x8c, 0xba, 0x12, 0x82, 0x78, 0x5f, 0x40, 0x89,
+ 0xb8, 0xf3, 0xc4, 0xb4, 0x4f, 0x4f, 0xc6, 0xe7, 0xd0, 0x00, 0x4e, 0xdf,
+ 0x9f, 0x9b, 0x81, 0x8c, 0x0a, 0x50, 0x37, 0x86, 0x28, 0xf1, 0x62, 0x91,
+ 0x91, 0x09, 0xa9, 0xc3, 0x19, 0xda, 0xcb, 0x89, 0x51, 0x91, 0x5a, 0xa3,
+ 0x9f, 0xe4, 0x39, 0xb2, 0x8d, 0x8d, 0x2b, 0xa8, 0x16, 0x36, 0xcb, 0x70,
+ 0xfb, 0x4e, 0xb2, 0xf5, 0xc7, 0x6d, 0x43, 0xb3, 0xc3, 0xd2, 0xee, 0xce,
+ 0x70, 0x28, 0xaf, 0x9a, 0x6f, 0xd7, 0xf9, 0x22, 0x9f, 0xa7, 0x95, 0x37,
+ 0x75, 0xe6, 0xa8, 0xb8, 0x9f, 0x96, 0xaf, 0x4c, 0x0d, 0xd5, 0xd0, 0xb4,
+ 0x9d, 0x29, 0x89, 0x3d, 0x24, 0xae, 0xe4, 0x8e, 0x6a, 0x06, 0x85, 0x80,
+ 0x34, 0xe6, 0x65, 0x6e, 0xb7, 0x0e, 0x67, 0x06, 0x76, 0xd5, 0xda, 0xa8,
+ 0xee, 0xb9, 0x05, 0x1b, 0x07, 0x89, 0x44, 0x9e, 0x0a, 0xbb, 0x75, 0xc9,
+ 0xc6, 0x24, 0xad, 0x36, 0x12, 0xcb, 0x8b, 0xf9, 0x6e, 0xe2, 0x86, 0x54,
+ 0xd9, 0xe5, 0xca, 0xac, 0x20, 0xe1, 0xdd, 0xc5, 0x4a, 0x7f, 0xe7, 0xad,
+ 0x54, 0x07, 0x18, 0x4e, 0xf0, 0x48, 0x5e, 0xb3, 0x99, 0x79, 0x61, 0xec,
+ 0x16, 0x5c, 0x1a, 0xd5, 0x5f, 0x49, 0xa3, 0x11, 0x8a, 0x89, 0x10, 0x8c,
+ 0xa7, 0xd7, 0x9a, 0xab, 0xd2, 0x64, 0x86, 0xd1, 0x10, 0xfb, 0xc7, 0x93,
+ 0x43, 0x73, 0x64, 0xc3, 0x61, 0x6d, 0xf6, 0x1f, 0xba, 0xf7, 0x52, 0x6c,
+ 0xfa, 0x13, 0x72, 0x98, 0x58, 0xdf, 0xca, 0x89, 0xe8, 0xc0, 0x24, 0x36,
+ 0xf9, 0x5d, 0x62, 0xa1, 0x46, 0x51, 0xbd, 0x31, 0x1f, 0x4e, 0xcd, 0x91,
+ 0x99, 0x0b, 0xf7, 0x16, 0x1b, 0xc5, 0xbe, 0x91, 0xc4, 0xaa, 0xcd, 0x44,
+ 0x19, 0x39, 0xee, 0x7d, 0xea, 0x74, 0x99, 0xd9, 0x2c, 0xc7, 0x6f, 0xcd,
+ 0xfd, 0x32, 0x12, 0x6e, 0x95, 0x91, 0xed, 0x21, 0x9b, 0xba, 0x70, 0x9b,
+ 0x49, 0x66, 0x6c, 0x7d, 0x55, 0xc2, 0x4c, 0xdc, 0x60, 0x5e, 0x3c, 0xc4,
+ 0xb7, 0x36, 0x48, 0x9e, 0x2f, 0x12, 0xfd, 0x96, 0x7c, 0xca, 0xac, 0x63,
+ 0xe6, 0xeb, 0x66, 0x03, 0x23, 0x68, 0xee, 0x3c, 0x23, 0x81, 0x78, 0x35,
+ 0xcf, 0xbd, 0xb2, 0x0a, 0x8f, 0x11, 0xa9, 0x4b, 0x28, 0x53, 0xc2, 0xc3,
+ 0x49, 0x18, 0xd2, 0x95, 0xad, 0x79, 0x6a, 0x03, 0xb3, 0xb7, 0x78, 0xf2,
+ 0xf2, 0x4a, 0x1f, 0xf5, 0x04, 0x6b, 0x6a, 0x16, 0x07, 0xe1, 0x00, 0x7b,
+ 0x7a, 0xa6, 0x7c, 0xbf, 0xac, 0x98, 0x99, 0xcd, 0x4b, 0x43, 0xcb, 0x1b,
+ 0xac, 0xb2, 0xca, 0xb4, 0x31, 0x6b, 0xcc, 0x12, 0x3b, 0xce, 0x7e, 0xa6,
+ 0xd2, 0x9e, 0x8d, 0x9d, 0xb4, 0xec, 0x57, 0x7d, 0xef, 0xd4, 0xdc, 0x46,
+ 0x8d, 0x69, 0x8f, 0x8c, 0xe8, 0xac, 0x41, 0xc7, 0xba, 0xf3, 0x44, 0xde,
+ 0x46, 0xd4, 0x6d, 0x36, 0x7c, 0x1f, 0xc9, 0xc6, 0xea, 0xec, 0x7c, 0x4d,
+ 0xe4, 0x23, 0x82, 0xcc, 0xae, 0xcc, 0xac, 0x68, 0x96, 0xa7, 0x44, 0x27,
+ 0x7c, 0x34, 0xa4, 0x8c, 0x38, 0x8b, 0x30, 0xa2, 0x07, 0xdf, 0x75, 0x0d,
+ 0xba, 0xf9, 0xdc, 0x17, 0x49, 0x3a, 0xa7, 0xe1, 0x89, 0x59, 0xfb, 0x31,
+ 0xad, 0x63, 0x78, 0x9d, 0xe0, 0xfa, 0x19, 0xb3, 0x01, 0x77, 0x71, 0x78,
+ 0x72, 0x7c, 0xed, 0x5d, 0x23, 0x58, 0xee, 0x05, 0xf4, 0x94, 0x01, 0x79,
+ 0x47, 0x26, 0x65, 0x69, 0xcc, 0x64, 0xb7, 0x34, 0xc8, 0x83, 0xac, 0x00,
+ 0xb5, 0xcb, 0x89, 0x1a, 0x96, 0xb0, 0xb4, 0xfc, 0xf6, 0xce, 0x98, 0x4b,
+ 0xe9, 0x65, 0x9a, 0x5b, 0x7a, 0x93, 0x9b, 0x31, 0x4b, 0xf4, 0xe1, 0xa2,
+ 0x94, 0xe7, 0x71, 0x54, 0x50, 0x81, 0x84, 0x6f, 0xad, 0x6a, 0xbe, 0x3e,
+ 0x66, 0x55, 0x86, 0xf3, 0x10, 0xef, 0x90, 0x71, 0xa1, 0x36, 0xea, 0x70,
+ 0x13, 0x52, 0x94, 0xa1, 0x73, 0x12, 0xf3, 0x25, 0x0d, 0xd2, 0x8c, 0xb8,
+ 0x31, 0x4a, 0xbe, 0x2d, 0x6f, 0x32, 0xf2, 0x15, 0x92, 0x7e, 0x9f, 0xc3,
+ 0xdb, 0x65, 0x54, 0xc1, 0x9b, 0x2c, 0x59, 0x18, 0xd5, 0xd3, 0xec, 0x26,
+ 0x69, 0x1f, 0xf4, 0x33, 0xcf, 0x3c, 0x34, 0x14, 0x7e, 0xc3, 0xbb, 0x64,
+ 0x57, 0x61, 0x8f, 0xf2, 0x82, 0xaf, 0x44, 0xb2, 0x45, 0xea, 0xcd, 0x14,
+ 0xbb, 0xb5, 0x6c, 0xdc, 0x2a, 0xec, 0x86, 0xdc, 0xa4, 0xb5, 0x77, 0xb9,
+ 0x32, 0x32, 0x4d, 0x9f, 0x8d, 0xf6, 0x9e, 0x8f, 0x76, 0x47, 0xc6, 0x10,
+ 0xc9, 0xae, 0xf3, 0x72, 0x55, 0x9b, 0x4f, 0x63, 0x1a, 0xee, 0x9d, 0x0c,
+ 0xb7, 0xb2, 0x29, 0x2f, 0x2f, 0xe7, 0xac, 0xf3, 0xec, 0x94, 0x17, 0x17,
+ 0xac, 0xfb, 0x18, 0x4d, 0xcf, 0xea, 0xcf, 0x6c, 0x01, 0x61, 0x67, 0xe4,
+ 0xba, 0x31, 0x4b, 0x0d, 0x4d, 0xe4, 0x91, 0x73, 0x5e, 0x0c, 0x87, 0xe9,
+ 0xa4, 0x6e, 0x60, 0x4c, 0x0d, 0x57, 0x45, 0x7e, 0x3b, 0xac, 0xcb, 0xe9,
+ 0x47, 0x73, 0x28, 0x2f, 0x96, 0x69, 0x73, 0xf5, 0xc7, 0x8e, 0x4b, 0x78,
+ 0x0b, 0xb2, 0x64, 0x3b, 0x49, 0x5e, 0xb1, 0x5a, 0x89, 0x9d, 0xa8, 0xf8,
+ 0xbe, 0x99, 0xd3, 0x94, 0x51, 0x92, 0xf7, 0x66, 0x14, 0x43, 0xcb, 0x0b,
+ 0x73, 0xa8, 0x09, 0x0f, 0x36, 0x50, 0x56, 0xda, 0x19, 0x8e, 0x1c, 0x8e,
+ 0x10, 0x23, 0xe4, 0xb7, 0x33, 0x57, 0xa7, 0xac, 0x3e, 0x1a, 0x45, 0xfb,
+ 0x9d, 0x31, 0x19, 0x0f, 0xf0, 0x6f, 0xc3, 0xc2, 0x1a, 0xda, 0x72, 0x91,
+ 0xac, 0x66, 0x46, 0xcc, 0x8c, 0x61, 0x91, 0xa7, 0x93, 0x61, 0x67, 0x38,
+ 0xf9, 0xbe, 0x7c, 0x34, 0x51, 0x5b, 0x43, 0x49, 0x29, 0xd9, 0xfc, 0xca,
+ 0xd8, 0x7f, 0x57, 0x7c, 0xec, 0x34, 0x20, 0xaf, 0xd1, 0x50, 0xe8, 0xa5,
+ 0xb1, 0x20, 0x8a, 0xa6, 0x3b, 0xdc, 0x15, 0x89, 0x6a, 0x48, 0x19, 0x36,
+ 0x76, 0x89, 0x48, 0xc4, 0x03, 0x64, 0xed, 0xcf, 0xd1, 0x67, 0x9d, 0xd7,
+ 0x5e, 0xba, 0x33, 0x7d, 0xf2, 0xc8, 0x9c, 0xa9, 0xbf, 0xd1, 0xf3, 0x66,
+ 0x58, 0x5f, 0x4f, 0x93, 0x17, 0xa4, 0x7d, 0x83, 0x4c, 0xa3, 0x1b, 0x3c,
+ 0xde, 0x4e, 0x7e, 0x78, 0x79, 0xf6, 0xee, 0xe8, 0xdd, 0x37, 0x07, 0xfc,
+ 0x51, 0xa1, 0x34, 0xf3, 0xb7, 0xec, 0x76, 0x09, 0x3f, 0x18, 0x66, 0x6b,
+ 0x44, 0x59, 0x92, 0xbc, 0x2e, 0xc9, 0x1e, 0x21, 0x86, 0x09, 0x81, 0xd5,
+ 0x19, 0xce, 0x88, 0x96, 0xd9, 0xaa, 0xe3, 0xfb, 0xb5, 0x0c, 0xdb, 0x0d,
+ 0xcc, 0xd7, 0x93, 0x37, 0x59, 0xe7, 0x68, 0xf8, 0x23, 0xbb, 0x8f, 0x49,
+ 0x5f, 0x1a, 0x41, 0x5a, 0x92, 0x99, 0xaf, 0x33, 0xef, 0x7e, 0xa9, 0x34,
+ 0xc6, 0x2e, 0xdb, 0xf9, 0x66, 0xbc, 0x5b, 0x73, 0x6d, 0xb0, 0x4b, 0x3a,
+ 0xd8, 0xd4, 0xb0, 0xa3, 0x4c, 0x14, 0x07, 0x62, 0x75, 0x64, 0x36, 0x08,
+ 0x2b, 0x1b, 0x25, 0x2f, 0x2f, 0xba, 0x47, 0x09, 0xdd, 0x05, 0x5a, 0xbd,
+ 0x4a, 0xc1, 0x99, 0x53, 0x84, 0xd9, 0xcb, 0xcb, 0x23, 0xea, 0x30, 0xb5,
+ 0x39, 0x9f, 0x99, 0x4a, 0x7a, 0x7c, 0xa6, 0x33, 0x1c, 0x99, 0x9e, 0xc4,
+ 0x66, 0xa0, 0x14, 0xe6, 0x38, 0x50, 0x98, 0x7e, 0x86, 0x51, 0x2f, 0xca,
+ 0x19, 0xd9, 0x11, 0xc1, 0xfe, 0x8c, 0xd9, 0xc2, 0x80, 0xc7, 0x67, 0x63,
+ 0xc3, 0x2d, 0x3b, 0xd9, 0x82, 0xef, 0xcf, 0x90, 0x41, 0x71, 0xd9, 0x5c,
+ 0x6d, 0x33, 0xb3, 0x65, 0xcf, 0x46, 0x02, 0x55, 0xc5, 0x2c, 0x7a, 0xc7,
+ 0x4c, 0xc6, 0x53, 0xf2, 0x3d, 0x97, 0x00, 0xb9, 0x9e, 0x49, 0xfb, 0xfc,
+ 0xcb, 0xaa, 0x6e, 0xc8, 0x22, 0x12, 0x15, 0x80, 0x57, 0x63, 0x66, 0xb7,
+ 0xc8, 0x16, 0x65, 0x75, 0x17, 0x4c, 0xe6, 0x88, 0x14, 0x10, 0x18, 0x9f,
+ 0x72, 0x62, 0xa0, 0x05, 0x92, 0x91, 0xea, 0x16, 0x84, 0x21, 0x00, 0xbf,
+ 0xba, 0xb5, 0x05, 0x49, 0x71, 0x32, 0x4c, 0xc8, 0xd8, 0xe0, 0xce, 0x69,
+ 0xab, 0x46, 0x14, 0x39, 0x7b, 0xd8, 0xbe, 0x17, 0x8b, 0x6a, 0x22, 0x6e,
+ 0x1c, 0xfc, 0xff, 0x3c, 0x05, 0xe7, 0x29, 0xb2, 0xd6, 0x29, 0x91, 0x04,
+ 0xe1, 0xa5, 0xad, 0x23, 0xf9, 0xa7, 0x8f, 0x47, 0x7b, 0x2d, 0x92, 0x2f,
+ 0xee, 0x10, 0x2c, 0x88, 0xf3, 0x91, 0x73, 0xa3, 0x3c, 0xd6, 0x3c, 0x67,
+ 0xb3, 0x8f, 0x17, 0xf9, 0xe5, 0xaa, 0xca, 0x58, 0x8b, 0xa3, 0xf8, 0x82,
+ 0x86, 0x15, 0xa0, 0x18, 0x5d, 0x95, 0xe4, 0x8d, 0x37, 0x02, 0x35, 0x9b,
+ 0x5f, 0x0c, 0x22, 0x9b, 0xcb, 0x37, 0x00, 0xd3, 0x27, 0xc6, 0x69, 0x4c,
+ 0x15, 0x1a, 0xac, 0xc8, 0x44, 0x91, 0x5d, 0x18, 0xa6, 0x92, 0xc0, 0x1d,
+ 0x9d, 0x4c, 0xe7, 0x69, 0xbe, 0x20, 0x52, 0x15, 0x77, 0xeb, 0x28, 0x76,
+ 0x35, 0x60, 0x64, 0xe0, 0xed, 0x09, 0xcc, 0xdf, 0xaa, 0x86, 0x74, 0x26,
+ 0x8a, 0x56, 0xed, 0x99, 0x8d, 0xcb, 0xab, 0x6c, 0xfa, 0x51, 0x19, 0x98,
+ 0xaa, 0x9d, 0x5d, 0x5a, 0x46, 0x9c, 0x81, 0x6c, 0x6c, 0xf3, 0xd4, 0xaa,
+ 0xc6, 0x55, 0xa9, 0xeb, 0x1c, 0x2e, 0x34, 0x98, 0x84, 0xab, 0x29, 0x59,
+ 0x8a, 0x74, 0x69, 0x0c, 0x85, 0x2b, 0x17, 0x4c, 0x0c, 0x5b, 0x2d, 0x66,
+ 0xc3, 0xa6, 0xca, 0x97, 0x7d, 0xb3, 0xe3, 0x53, 0x69, 0x2b, 0xa9, 0xb5,
+ 0x58, 0xed, 0x64, 0x10, 0x33, 0x01, 0x4f, 0x93, 0xce, 0x6e, 0x76, 0x86,
+ 0xe3, 0xbd, 0x1d, 0xc0, 0x27, 0x94, 0x1b, 0x9d, 0x81, 0x0d, 0x26, 0x72,
+ 0x79, 0x1a, 0xf3, 0x48, 0x84, 0x97, 0xb1, 0xe4, 0xf2, 0x29, 0x29, 0x42,
+ 0xf9, 0x65, 0x86, 0x78, 0x8e, 0x91, 0x67, 0xcd, 0xdc, 0xa8, 0x47, 0x9e,
+ 0x64, 0xb4, 0x27, 0x5e, 0x64, 0x97, 0x65, 0x03, 0x8d, 0x24, 0x20, 0x93,
+ 0xf7, 0xc4, 0xeb, 0x2d, 0x4d, 0xa8, 0xea, 0xef, 0xeb, 0x65, 0x39, 0xeb,
+ 0xe4, 0xe6, 0xd3, 0xac, 0xfa, 0x8b, 0xd7, 0xa1, 0x6e, 0xcc, 0xcd, 0xea,
+ 0x9e, 0xba, 0x19, 0x6d, 0x9a, 0x91, 0xfd, 0x45, 0xca, 0xa3, 0xea, 0xae,
+ 0xaa, 0xf4, 0x83, 0x2d, 0x40, 0x4f, 0x6e, 0x6e, 0xf2, 0x69, 0xa6, 0x2e,
+ 0x39, 0xf1, 0x53, 0xcf, 0xf3, 0x90, 0xdd, 0x2f, 0x70, 0x27, 0xcd, 0x4b,
+ 0xac, 0x97, 0xc3, 0x83, 0x72, 0x93, 0x43, 0x6f, 0x17, 0xc6, 0x47, 0x6a,
+ 0x99, 0x88, 0x84, 0xb4, 0xca, 0xc9, 0x5d, 0x64, 0x86, 0x93, 0x79, 0x86,
+ 0x17, 0xde, 0x9b, 0x37, 0xbd, 0x2f, 0xa6, 0x8c, 0x33, 0x61, 0xe8, 0x72,
+ 0x5d, 0xa4, 0xf9, 0x3c, 0xb2, 0x4f, 0xc4, 0xcc, 0x2e, 0x33, 0xf2, 0xac,
+ 0xf1, 0x19, 0xac, 0xb0, 0xe9, 0x88, 0xbd, 0x85, 0x8c, 0x2a, 0xcb, 0xd8,
+ 0xa6, 0x20, 0x03, 0xe4, 0xf6, 0xce, 0x6e, 0x2f, 0x29, 0x6e, 0x7c, 0x76,
+ 0xf2, 0x77, 0x3e, 0x3e, 0xef, 0x7a, 0xa6, 0x18, 0x35, 0x5d, 0x22, 0xc8,
+ 0xd4, 0xbd, 0xa1, 0x30, 0xbf, 0x10, 0xa7, 0xdc, 0x56, 0x2f, 0x72, 0x26,
+ 0x3e, 0x74, 0x1b, 0xdf, 0x23, 0x86, 0x04, 0x9e, 0x26, 0x57, 0x98, 0xc7,
+ 0x11, 0x2e, 0xdc, 0xe5, 0xe7, 0x46, 0xc6, 0x1a, 0x91, 0x4c, 0x6c, 0xb4,
+ 0x45, 0xb1, 0xa5, 0x61, 0x5f, 0x36, 0xca, 0x04, 0xaf, 0xaf, 0xf0, 0x3a,
+ 0x32, 0xb6, 0xe8, 0xce, 0xc6, 0xf8, 0x39, 0xcc, 0x3f, 0xe8, 0xca, 0x2c,
+ 0x69, 0x06, 0x09, 0xeb, 0x76, 0xcc, 0xac, 0xa6, 0xec, 0x07, 0x16, 0x3d,
+ 0x82, 0xc5, 0x0d, 0x4d, 0xf5, 0x62, 0x9e, 0x5e, 0x92, 0x8b, 0xed, 0xb2,
+ 0x7b, 0x43, 0x8b, 0x52, 0x82, 0x7d, 0x75, 0x69, 0x38, 0x3c, 0x56, 0x2d,
+ 0xee, 0xad, 0x3a, 0xd9, 0x32, 0x44, 0x36, 0x5f, 0x91, 0xc8, 0x3f, 0x31,
+ 0xcb, 0x1b, 0x8f, 0xbf, 0xdd, 0xf6, 0xd9, 0x1b, 0xed, 0xee, 0x43, 0x98,
+ 0x1b, 0xb8, 0x13, 0x19, 0xe2, 0x5f, 0xf3, 0x79, 0xb4, 0x19, 0x9c, 0xb5,
+ 0xf0, 0x7c, 0x6d, 0x4e, 0xe9, 0x12, 0xab, 0x80, 0x3b, 0x74, 0x64, 0xaf,
+ 0x3e, 0x9e, 0x54, 0xaf, 0x2c, 0x13, 0x76, 0x4b, 0x49, 0x58, 0xd5, 0x2b,
+ 0x72, 0x50, 0x91, 0x4c, 0xee, 0x0e, 0x67, 0x98, 0xbd, 0x61, 0x45, 0xab,
+ 0x02, 0x7f, 0x5a, 0x3d, 0x3a, 0x27, 0x8b, 0x0e, 0x67, 0x51, 0xc1, 0x0d,
+ 0x0e, 0x5b, 0xd8, 0xea, 0xa1, 0x86, 0xa7, 0xe8, 0xd8, 0xd8, 0xcb, 0xee,
+ 0x25, 0x34, 0x5a, 0x1a, 0xb1, 0x1b, 0x23, 0x46, 0x8d, 0x70, 0xc6, 0x85,
+ 0xeb, 0xe1, 0xde, 0x5b, 0xf5, 0xca, 0xf0, 0x17, 0x98, 0x0f, 0xc2, 0x3c,
+ 0x40, 0x8f, 0xdd, 0xd9, 0x31, 0x7b, 0x31, 0x92, 0xc6, 0xe3, 0x23, 0xdb,
+ 0xbf, 0xf5, 0x05, 0xa1, 0x43, 0xf3, 0x4f, 0xd1, 0x88, 0xdf, 0xcc, 0x18,
+ 0x65, 0xa4, 0x96, 0x05, 0x1a, 0xd9, 0xf9, 0xf1, 0x38, 0x76, 0x98, 0xed,
+ 0x18, 0x15, 0xde, 0x07, 0xb3, 0x85, 0x2b, 0x91, 0x5d, 0xab, 0x25, 0x0c,
+ 0x03, 0x2f, 0x4e, 0xe5, 0xfb, 0xfc, 0x96, 0x19, 0x02, 0x5a, 0x6c, 0x33,
+ 0x73, 0x00, 0x1c, 0x0c, 0x0c, 0xc2, 0x1a, 0x1a, 0x8a, 0x75, 0xa3, 0xbe,
+ 0x7a, 0xe9, 0x8f, 0x4b, 0x7e, 0xd3, 0xee, 0x45, 0xf0, 0x7e, 0xbf, 0x55,
+ 0x6f, 0x5b, 0x1e, 0x66, 0x46, 0x39, 0x3d, 0x7c, 0x4b, 0x36, 0x6c, 0x6a,
+ 0xe8, 0xe6, 0x9d, 0xba, 0x2c, 0x35, 0xbe, 0x3d, 0x59, 0xe5, 0xf3, 0x56,
+ 0x5c, 0xc0, 0x99, 0xdd, 0x14, 0x5c, 0x66, 0xd2, 0xa2, 0xa9, 0x71, 0x84,
+ 0x2b, 0x27, 0x17, 0x71, 0x97, 0xd0, 0x9a, 0xbb, 0xa5, 0x78, 0xb7, 0x57,
+ 0x75, 0xcb, 0x89, 0xa4, 0x72, 0x79, 0xde, 0x90, 0xa6, 0x0d, 0xdb, 0xd6,
+ 0x1b, 0x33, 0x38, 0x21, 0x9a, 0x16, 0xc4, 0xc0, 0x65, 0x91, 0xff, 0x4d,
+ 0xf4, 0xd0, 0xac, 0xb8, 0xce, 0xab, 0xb2, 0x80, 0xa6, 0x6b, 0xcc, 0xdf,
+ 0x2a, 0x27, 0xb6, 0x0c, 0x0d, 0xcc, 0x30, 0x8e, 0xcd, 0x57, 0xef, 0xcf,
+ 0x8e, 0x3f, 0xbc, 0x7a, 0xf9, 0xe1, 0xeb, 0xf7, 0xef, 0x5e, 0x1f, 0x1f,
+ 0x6e, 0x76, 0x86, 0x83, 0xdf, 0x2f, 0x17, 0x67, 0x7d, 0x0d, 0xeb, 0x83,
+ 0x2e, 0x89, 0x99, 0x22, 0x8f, 0x7c, 0x99, 0x5f, 0x1b, 0x86, 0x46, 0xc6,
+ 0x04, 0xf9, 0xe9, 0xe9, 0x6f, 0xe4, 0xd9, 0x92, 0x0d, 0xef, 0x0c, 0x37,
+ 0x59, 0x41, 0x4f, 0x1b, 0xb5, 0x34, 0x66, 0xbd, 0x2a, 0x62, 0xb9, 0xeb,
+ 0x04, 0x23, 0x5a, 0x36, 0xb4, 0xa8, 0x62, 0x06, 0x13, 0xc6, 0x33, 0x14,
+ 0x3d, 0x97, 0xfd, 0xaa, 0x31, 0x96, 0x92, 0x06, 0x09, 0x8c, 0xd6, 0x56,
+ 0x7e, 0xd4, 0x4c, 0x03, 0x63, 0x66, 0xbd, 0x8c, 0x1c, 0x77, 0xed, 0x94,
+ 0xd1, 0x59, 0xb2, 0x89, 0x91, 0x0c, 0xfd, 0x0e, 0x65, 0x92, 0xd3, 0xaa,
+ 0x31, 0x36, 0x4e, 0x96, 0xd3, 0xc5, 0xd0, 0x48, 0x2a, 0xd4, 0x56, 0x72,
+ 0xd0, 0x05, 0x5a, 0xb6, 0xd1, 0x35, 0xb1, 0x07, 0xa4, 0xe1, 0x67, 0xb7,
+ 0x19, 0xdd, 0x3c, 0x79, 0xeb, 0xd5, 0xaa, 0xa2, 0xdb, 0xfc, 0x83, 0xd1,
+ 0x46, 0xc0, 0xfd, 0x5e, 0x93, 0x87, 0xcf, 0xbc, 0xa0, 0x0f, 0x19, 0x31,
+ 0xd3, 0x15, 0x79, 0xe5, 0x1c, 0xb1, 0xd5, 0x94, 0xbc, 0x29, 0xe4, 0xfb,
+ 0x3a, 0x7d, 0x79, 0xfe, 0x6d, 0x54, 0x99, 0x75, 0x69, 0x3d, 0x42, 0x8a,
+ 0xa4, 0x9c, 0xd7, 0x8d, 0x5c, 0x90, 0x77, 0xe3, 0x71, 0x42, 0x49, 0x23,
+ 0xf3, 0x7c, 0x52, 0xa5, 0xf8, 0x26, 0x7e, 0x8c, 0x9f, 0x1a, 0xb2, 0xee,
+ 0x0c, 0x77, 0xfa, 0xdd, 0xab, 0xf1, 0xef, 0xf6, 0xf6, 0xa0, 0xc9, 0xaf,
+ 0xcc, 0xbe, 0x6c, 0x99, 0x57, 0x8a, 0xda, 0xdc, 0xcc, 0xc5, 0xa8, 0x2e,
+ 0xb7, 0x49, 0x6c, 0xd7, 0xa2, 0x0e, 0xa4, 0xd7, 0x46, 0xda, 0x12, 0x1d,
+ 0x29, 0x51, 0x9b, 0xe3, 0x0c, 0xf6, 0x84, 0x18, 0x9d, 0x64, 0xd4, 0x18,
+ 0x7e, 0x61, 0xe4, 0xf5, 0x3c, 0x54, 0xc8, 0xb7, 0xf2, 0x93, 0xb1, 0x2a,
+ 0xf5, 0x53, 0xf3, 0x57, 0x38, 0x0b, 0xb6, 0xb1, 0xb2, 0xf6, 0x0d, 0xd3,
+ 0x55, 0x8d, 0x59, 0x1b, 0x3d, 0x87, 0x09, 0x43, 0x69, 0x34, 0x21, 0x57,
+ 0x28, 0xba, 0x97, 0xcb, 0xa5, 0x2a, 0x11, 0x39, 0x4c, 0xd2, 0xe9, 0xc7,
+ 0x9b, 0xb4, 0x9a, 0xb1, 0x4d, 0x64, 0x28, 0x66, 0x92, 0xcf, 0xf3, 0xe6,
+ 0x8e, 0x6d, 0xdb, 0xae, 0x5d, 0xcd, 0x31, 0x52, 0x6c, 0xa0, 0xb9, 0x47,
+ 0x97, 0xc6, 0xec, 0x87, 0xf6, 0x09, 0x15, 0x3f, 0x6f, 0x7c, 0xb3, 0x96,
+ 0x54, 0xa4, 0xc6, 0xaa, 0x38, 0xf6, 0xdb, 0x81, 0x78, 0x6c, 0xf8, 0x1e,
+ 0xd1, 0x34, 0x1d, 0xed, 0x2a, 0x1b, 0xf4, 0x99, 0x94, 0x92, 0x4f, 0x52,
+ 0xdf, 0x19, 0x29, 0xbf, 0x48, 0x22, 0x2a, 0x22, 0x65, 0x10, 0x25, 0xdf,
+ 0x65, 0x77, 0xc6, 0x86, 0xce, 0x0b, 0xc7, 0x29, 0xd9, 0xc6, 0xcf, 0x60,
+ 0xe1, 0xb1, 0x2e, 0x9a, 0xab, 0x43, 0x3d, 0x93, 0x98, 0x08, 0x4b, 0x92,
+ 0xd0, 0x89, 0xc0, 0xef, 0xab, 0x1e, 0x8e, 0x21, 0x36, 0xeb, 0x16, 0x4b,
+ 0xa6, 0x2f, 0x85, 0x87, 0x38, 0x36, 0x3f, 0x2f, 0x8a, 0x6c, 0x2e, 0xc7,
+ 0x77, 0xbe, 0xee, 0x00, 0xec, 0xb3, 0x66, 0xca, 0x3f, 0xf0, 0x8d, 0xee,
+ 0x0c, 0xf7, 0x8c, 0x03, 0xfc, 0x69, 0xa3, 0x32, 0x49, 0x33, 0x87, 0x8c,
+ 0x55, 0xb4, 0x6b, 0x7f, 0x35, 0xea, 0xfd, 0x4c, 0x70, 0x9b, 0x2a, 0x77,
+ 0xe8, 0xed, 0x33, 0x67, 0xc7, 0x28, 0x1d, 0x32, 0xce, 0x58, 0x8e, 0xf8,
+ 0x0b, 0xab, 0x59, 0x51, 0x10, 0xa3, 0x33, 0x9c, 0xaf, 0x65, 0xab, 0x0c,
+ 0x93, 0x75, 0x6c, 0x1a, 0x3d, 0xb5, 0xac, 0xc8, 0x67, 0x54, 0x95, 0xe6,
+ 0xac, 0x5b, 0xe7, 0xb9, 0xc5, 0xca, 0x46, 0xf7, 0x9a, 0x08, 0x37, 0xf7,
+ 0x36, 0x66, 0x3b, 0x76, 0xd1, 0x03, 0xcd, 0x24, 0x34, 0x59, 0x7b, 0x2d,
+ 0xce, 0xb6, 0x84, 0x26, 0x2e, 0xfd, 0xc2, 0xb0, 0xb1, 0x7f, 0x5e, 0x40,
+ 0x33, 0x33, 0x24, 0xe6, 0x17, 0xca, 0x2c, 0xa1, 0xc5, 0x96, 0xa0, 0x7e,
+ 0xab, 0x12, 0x19, 0x93, 0xb0, 0x6e, 0xd8, 0x25, 0x27, 0x0d, 0xb0, 0xe2,
+ 0xc8, 0xfe, 0xe4, 0xd0, 0x0c, 0x80, 0x4b, 0x50, 0xdc, 0x8e, 0x07, 0x1b,
+ 0xc9, 0x56, 0x36, 0xba, 0x34, 0xe3, 0x6d, 0x60, 0x9c, 0xbd, 0x03, 0xfc,
+ 0x77, 0x9f, 0xfe, 0xfb, 0x68, 0x43, 0xd3, 0xfb, 0xfc, 0xad, 0x87, 0x34,
+ 0xef, 0xca, 0x22, 0x8e, 0xc9, 0x39, 0xe1, 0x3e, 0x60, 0x3f, 0x73, 0x1f,
+ 0xe3, 0x61, 0x9d, 0xf5, 0x98, 0x77, 0x39, 0x54, 0xb7, 0x74, 0x1b, 0x16,
+ 0xec, 0x8f, 0xb8, 0xce, 0xd8, 0x29, 0x62, 0x56, 0x36, 0x35, 0xea, 0x21,
+ 0xb9, 0x12, 0xf5, 0x56, 0x4d, 0x3f, 0x54, 0xd9, 0x55, 0x5a, 0x5f, 0x25,
+ 0xab, 0x86, 0x89, 0xd0, 0xd0, 0x6d, 0x77, 0xb8, 0xe5, 0x3c, 0x77, 0xde,
+ 0x36, 0xf9, 0xf4, 0x48, 0xed, 0x3e, 0x77, 0x8a, 0x1c, 0x05, 0x99, 0x97,
+ 0x37, 0xfa, 0xcc, 0x50, 0xf2, 0xed, 0x62, 0x6a, 0x81, 0x39, 0x4d, 0xf2,
+ 0x9b, 0xe0, 0x31, 0x3f, 0x9a, 0xbd, 0x80, 0x36, 0x89, 0x64, 0x40, 0xc3,
+ 0xe2, 0x2e, 0xcc, 0x8e, 0xc1, 0xa2, 0x9b, 0xd3, 0xb9, 0xc1, 0x76, 0xa5,
+ 0x79, 0x07, 0xa6, 0xa9, 0xe8, 0x79, 0xf9, 0x85, 0x78, 0x70, 0xe5, 0xdf,
+ 0x24, 0x4f, 0x45, 0xfb, 0xaa, 0x39, 0xe2, 0xdd, 0x55, 0xbd, 0xee, 0x27,
+ 0x6d, 0x65, 0x90, 0x56, 0xd3, 0x91, 0xc5, 0x72, 0xd0, 0x44, 0xe9, 0x3a,
+ 0xbf, 0x24, 0x5b, 0x23, 0xe6, 0xc0, 0x60, 0xc7, 0xd4, 0x3f, 0x75, 0x49,
+ 0xcc, 0x8c, 0x87, 0xf0, 0x99, 0xae, 0xea, 0x07, 0xdc, 0x11, 0x8f, 0xe9,
+ 0xf2, 0x3b, 0xd6, 0x67, 0xcc, 0x91, 0x7d, 0x7f, 0x03, 0xba, 0x54, 0x78,
+ 0xe7, 0x11, 0xc6, 0x2b, 0xef, 0x66, 0x8d, 0x79, 0xa0, 0x33, 0x71, 0x91,
+ 0x6c, 0xa5, 0x1f, 0xd3, 0x51, 0x72, 0xf2, 0x6a, 0x7c, 0x8a, 0x4f, 0x18,
+ 0xea, 0x28, 0x2e, 0xcd, 0x2c, 0x8e, 0xc7, 0x9d, 0xe1, 0xb2, 0xdb, 0x26,
+ 0x2b, 0xea, 0x98, 0x93, 0x32, 0xdc, 0x66, 0x8d, 0x24, 0x68, 0x8a, 0x8d,
+ 0x4c, 0xd6, 0x58, 0xfa, 0x14, 0x1b, 0x47, 0xa8, 0x17, 0x79, 0x18, 0x09,
+ 0x5f, 0xb5, 0xe0, 0x43, 0x4b, 0x73, 0xf3, 0x67, 0xdb, 0xd6, 0x55, 0x33,
+ 0x50, 0x5a, 0xb0, 0x21, 0xc3, 0x7a, 0x75, 0x09, 0x1b, 0xa4, 0x56, 0xbb,
+ 0xd1, 0x7e, 0xc1, 0xec, 0x46, 0xa8, 0x2a, 0xc8, 0xb2, 0xad, 0x37, 0xd1,
+ 0x58, 0x4d, 0xc8, 0xa6, 0x22, 0x15, 0xa9, 0x28, 0xdd, 0xa8, 0xc8, 0xa8,
+ 0xa0, 0xcc, 0xd1, 0x9c, 0x82, 0x6c, 0xd3, 0xcc, 0xa8, 0xa0, 0xb3, 0x88,
+ 0x12, 0xc0, 0x87, 0xa2, 0x86, 0xd3, 0x85, 0x64, 0x8b, 0x46, 0xfc, 0x3f,
+ 0x34, 0xd0, 0x94, 0x55, 0x34, 0x50, 0x3d, 0x05, 0x2b, 0x72, 0xf8, 0x4a,
+ 0xa1, 0x30, 0xb3, 0xa9, 0x8e, 0xf1, 0xec, 0xfd, 0xff, 0xa6, 0x58, 0x99,
+ 0x8d, 0x8f, 0x48, 0x63, 0x28, 0x55, 0x10, 0x33, 0xd8, 0xc0, 0x75, 0x8e,
+ 0xbd, 0xc7, 0x7b, 0x6d, 0x5f, 0x36, 0x11, 0x9b, 0x31, 0x00, 0xb2, 0xe4,
+ 0x05, 0xfe, 0x7b, 0x2f, 0x57, 0xa6, 0xf4, 0x15, 0x7a, 0x5e, 0x62, 0x9e,
+ 0xcc, 0x3b, 0xc5, 0x17, 0x93, 0xb4, 0x19, 0x74, 0x20, 0xbd, 0x88, 0xdc,
+ 0x46, 0xe0, 0x7b, 0x83, 0xe4, 0x35, 0x92, 0xb2, 0x0f, 0xdf, 0x7d, 0x43,
+ 0x34, 0x70, 0xba, 0xb7, 0x4f, 0x11, 0x26, 0x6b, 0x3d, 0xcc, 0xe8, 0x23,
+ 0x35, 0x3b, 0x12, 0x38, 0x42, 0x1c, 0x2a, 0xbe, 0x24, 0x13, 0x06, 0xc4,
+ 0x46, 0x11, 0x1a, 0xa4, 0x0c, 0xa2, 0xd9, 0xa7, 0x93, 0x5f, 0x81, 0x21,
+ 0x7a, 0x38, 0x90, 0x1d, 0x14, 0xc7, 0xcc, 0xc7, 0xec, 0xce, 0xfd, 0x8d,
+ 0x76, 0xd5, 0xdb, 0x6a, 0xf7, 0xf0, 0x0b, 0x6f, 0x93, 0xfe, 0x7c, 0x80,
+ 0x2c, 0x25, 0xa3, 0xa5, 0xce, 0x7e, 0xfe, 0x75, 0x12, 0x31, 0xbe, 0xf3,
+ 0x11, 0x67, 0x0b, 0xf9, 0xb9, 0x34, 0x1f, 0x88, 0xc3, 0xff, 0xcc, 0xe2,
+ 0x25, 0x25, 0x1e, 0xd9, 0xf2, 0x20, 0xf8, 0xb4, 0xb0, 0x2a, 0xc9, 0x90,
+ 0x93, 0xc0, 0x28, 0x29, 0xac, 0xbb, 0xf7, 0xd3, 0x72, 0x1e, 0xc8, 0xba,
+ 0x96, 0xe1, 0x4a, 0xfa, 0xfc, 0xbe, 0xc8, 0x37, 0x32, 0xe6, 0x98, 0xd9,
+ 0x88, 0x16, 0xdd, 0xbd, 0x0e, 0x56, 0xa7, 0x26, 0xf5, 0xcb, 0x49, 0x46,
+ 0xbc, 0xc9, 0x2f, 0x52, 0xa8, 0x9b, 0xa6, 0xc6, 0x9a, 0xd2, 0x28, 0x71,
+ 0x1a, 0x6f, 0x4c, 0xfd, 0x37, 0x67, 0xab, 0x7b, 0x6b, 0x0e, 0x1d, 0x7e,
+ 0x26, 0xbb, 0x6b, 0x03, 0xdf, 0xd3, 0x64, 0x98, 0x5c, 0x95, 0xab, 0x7e,
+ 0x2e, 0x09, 0xa5, 0x61, 0x1c, 0x83, 0xb3, 0x0e, 0xc4, 0x1b, 0x25, 0xd9,
+ 0x55, 0x2d, 0x5f, 0x3e, 0x93, 0x1f, 0x2c, 0xd1, 0x0d, 0x6f, 0x4b, 0x36,
+ 0x62, 0x47, 0xd1, 0x70, 0x00, 0x54, 0xae, 0x50, 0x7e, 0x8d, 0xad, 0x53,
+ 0xda, 0x71, 0x8e, 0xcd, 0xb6, 0xea, 0x5b, 0x16, 0xf8, 0xb3, 0x80, 0x4f,
+ 0xec, 0xdf, 0x22, 0x04, 0x19, 0xa5, 0x45, 0xf8, 0xc6, 0x25, 0x38, 0x4c,
+ 0x0a, 0x0c, 0x12, 0x21, 0x25, 0x13, 0x7d, 0x7e, 0xf7, 0x20, 0x83, 0x4e,
+ 0x15, 0x10, 0xb5, 0xdb, 0x3c, 0x63, 0x2e, 0xb0, 0x76, 0xba, 0x04, 0x62,
+ 0xd8, 0x78, 0x83, 0xb4, 0x12, 0xa6, 0x5d, 0xf8, 0x5e, 0xf3, 0xe9, 0x47,
+ 0x0a, 0xbe, 0x88, 0x84, 0xf2, 0xd7, 0xa7, 0xb9, 0x7b, 0x9c, 0x75, 0x1a,
+ 0x39, 0x02, 0xb2, 0x25, 0xe1, 0x14, 0x06, 0x4d, 0x42, 0x3a, 0xe7, 0x05,
+ 0xeb, 0x6c, 0xbd, 0x5e, 0x06, 0x33, 0xd7, 0x0f, 0xaf, 0x8f, 0xce, 0x92,
+ 0x2d, 0x68, 0xe0, 0x5d, 0x23, 0x57, 0xc5, 0xfb, 0x4e, 0xd6, 0x4c, 0x77,
+ 0x96, 0x1f, 0xf3, 0x1d, 0x63, 0x6c, 0xce, 0x26, 0xdb, 0xd6, 0x88, 0xa2,
+ 0xcf, 0x81, 0x0a, 0xad, 0x61, 0xaa, 0x96, 0x29, 0x99, 0xa6, 0x81, 0xeb,
+ 0xd1, 0x99, 0xaa, 0x5c, 0xe5, 0x62, 0x6d, 0x54, 0xde, 0x26, 0x26, 0x68,
+ 0x0a, 0xd1, 0x70, 0x86, 0x04, 0x05, 0x76, 0x32, 0xf6, 0x4b, 0x1b, 0x1b,
+ 0xbb, 0x7b, 0x57, 0x39, 0x03, 0x52, 0x1c, 0x39, 0xec, 0xc0, 0xd1, 0xb4,
+ 0x3d, 0x11, 0x17, 0x4e, 0xfb, 0x1d, 0x20, 0xe1, 0x12, 0x9b, 0xb2, 0x84,
+ 0x48, 0x9a, 0xc1, 0x0d, 0xd8, 0x1d, 0x8e, 0x34, 0xb9, 0x8d, 0xd1, 0xce,
+ 0x46, 0x62, 0x53, 0x4c, 0xcd, 0x2e, 0x73, 0x0e, 0xb5, 0xcd, 0xe9, 0x35,
+ 0x24, 0x76, 0xb1, 0xaa, 0xad, 0x1f, 0x33, 0xb5, 0xe7, 0x35, 0x8a, 0x31,
+ 0x54, 0xef, 0x38, 0xad, 0xce, 0x65, 0x74, 0x63, 0xba, 0x59, 0xbe, 0xb5,
+ 0x2e, 0x93, 0xa2, 0xa3, 0xda, 0xf8, 0x69, 0x23, 0xf1, 0x52, 0x14, 0x5b,
+ 0x99, 0x8a, 0xb9, 0x4b, 0x22, 0xf2, 0x84, 0x80, 0x91, 0xc8, 0xf6, 0x0e,
+ 0xcf, 0xb2, 0x79, 0xbe, 0xc8, 0xc9, 0xf6, 0xf2, 0xa7, 0x30, 0x8c, 0x05,
+ 0x09, 0xdd, 0x94, 0x7e, 0x0a, 0xa7, 0xa4, 0x69, 0xbf, 0x29, 0x7e, 0x6d,
+ 0xa6, 0x44, 0x1e, 0x31, 0xce, 0xca, 0x8c, 0x5b, 0xcd, 0xed, 0x09, 0xd9,
+ 0xc4, 0xe1, 0x35, 0xd1, 0x63, 0x7b, 0x97, 0xfa, 0x54, 0x79, 0xe7, 0x12,
+ 0xd1, 0x4b, 0xcf, 0x4c, 0x2d, 0x59, 0x7e, 0x9c, 0xd6, 0x7b, 0x7b, 0x5d,
+ 0x41, 0x57, 0x3b, 0x8a, 0x12, 0xfb, 0x3d, 0xb5, 0x84, 0xf9, 0xfe, 0xec,
+ 0x28, 0xd9, 0x42, 0xa1, 0xc8, 0xb3, 0x27, 0x7b, 0xfb, 0xdb, 0x7e, 0x76,
+ 0x89, 0x32, 0x80, 0x50, 0x6e, 0xde, 0x71, 0x58, 0xd6, 0xbb, 0x80, 0xf3,
+ 0x72, 0x9a, 0x8a, 0xc6, 0xe1, 0x86, 0x9e, 0x65, 0xd7, 0xf9, 0x14, 0x75,
+ 0x3a, 0x08, 0xca, 0x83, 0x07, 0x4f, 0x32, 0x33, 0xc9, 0x60, 0xc7, 0x5d,
+ 0x56, 0x2f, 0xcf, 0xde, 0x98, 0x48, 0x56, 0x53, 0x46, 0xee, 0xb4, 0xa1,
+ 0x81, 0x46, 0xf6, 0xce, 0x9f, 0xb5, 0x44, 0x09, 0xd2, 0x1e, 0x4f, 0x10,
+ 0xd6, 0xc5, 0x55, 0x34, 0xa4, 0x63, 0x0c, 0x5c, 0xe0, 0x67, 0x38, 0x94,
+ 0xcd, 0x12, 0xd6, 0x6b, 0xe3, 0xc7, 0xc8, 0x42, 0xe9, 0x1e, 0xa0, 0xcc,
+ 0x69, 0x03, 0x82, 0xa4, 0x20, 0xe1, 0x9e, 0xba, 0x41, 0xed, 0xee, 0xfb,
+ 0x9a, 0x50, 0x7b, 0xd4, 0xd0, 0x53, 0x4e, 0x84, 0x63, 0x34, 0x97, 0xf8,
+ 0x90, 0xff, 0x22, 0x27, 0x53, 0x9b, 0x7d, 0xca, 0xf1, 0xe0, 0xec, 0xc5,
+ 0x6b, 0x38, 0x61, 0x45, 0x41, 0xf9, 0x6d, 0xaa, 0x8f, 0x07, 0x72, 0xdc,
+ 0xbc, 0xbe, 0xa3, 0x42, 0x88, 0xa4, 0x90, 0xfa, 0x1b, 0xd9, 0xf3, 0x63,
+ 0x98, 0x27, 0x79, 0x7a, 0x3e, 0x8a, 0xa3, 0x87, 0x94, 0x62, 0x9b, 0xc6,
+ 0x11, 0xfa, 0x8a, 0x55, 0xf0, 0x9b, 0x23, 0x9a, 0x96, 0xb3, 0x8e, 0xc9,
+ 0x8e, 0x4d, 0xf0, 0x04, 0x1e, 0x71, 0x3f, 0x0e, 0x55, 0x12, 0xc7, 0x8b,
+ 0x7b, 0xb2, 0x41, 0xa9, 0xec, 0x5e, 0xff, 0x45, 0x3c, 0x30, 0xe6, 0x51,
+ 0x23, 0x16, 0xf8, 0xab, 0x38, 0xe0, 0x3d, 0x3e, 0xa7, 0x57, 0x81, 0xc4,
+ 0xae, 0xad, 0x32, 0xe4, 0x74, 0x35, 0x24, 0x8c, 0x27, 0xb4, 0x71, 0xa1,
+ 0x45, 0x83, 0xd4, 0x41, 0x4a, 0x09, 0xa0, 0x54, 0x84, 0x8e, 0x3a, 0x47,
+ 0x8e, 0x1d, 0x73, 0x5d, 0xb6, 0x8e, 0x39, 0x48, 0x99, 0x9c, 0xbe, 0xf9,
+ 0x51, 0xb9, 0x65, 0xcc, 0x80, 0x27, 0x47, 0xd4, 0x17, 0x36, 0x43, 0xcc,
+ 0x58, 0x14, 0xc8, 0x56, 0xcb, 0x25, 0xf3, 0x93, 0xdd, 0x44, 0x14, 0x0e,
+ 0xdf, 0x76, 0x09, 0x8d, 0xd8, 0xea, 0x8d, 0x17, 0xf4, 0xbb, 0x6e, 0xac,
+ 0xa9, 0x64, 0x4b, 0xe6, 0x8f, 0x3f, 0xf1, 0xaf, 0x99, 0xc7, 0x9a, 0x7f,
+ 0x35, 0x57, 0xab, 0xc5, 0xc4, 0x9c, 0x67, 0xd1, 0xfc, 0x71, 0x23, 0xe1,
+ 0x60, 0xeb, 0x85, 0xec, 0xe7, 0x1a, 0xb3, 0x33, 0xd7, 0x9a, 0x1d, 0xf5,
+ 0x2d, 0xb6, 0x76, 0x8d, 0x67, 0xa7, 0xf5, 0x03, 0x2e, 0x47, 0xcf, 0x1c,
+ 0x1e, 0xfb, 0xb2, 0x03, 0x55, 0xef, 0xbd, 0x21, 0xcf, 0x9f, 0xde, 0xfe,
+ 0xe9, 0xa7, 0xe7, 0x8f, 0x1e, 0xa7, 0xcf, 0xd2, 0xe9, 0xd3, 0x8b, 0xcf,
+ 0xd3, 0x27, 0xb3, 0x27, 0xcf, 0x9e, 0xef, 0x7f, 0xfe, 0x24, 0x7d, 0xf6,
+ 0xf8, 0x22, 0x7d, 0xba, 0x97, 0xed, 0x3d, 0xbf, 0xd8, 0x7f, 0x34, 0x9b,
+ 0x5d, 0x64, 0x9f, 0xcf, 0x9e, 0xa5, 0x1b, 0x23, 0x32, 0xbf, 0x74, 0xea,
+ 0x21, 0xab, 0xd5, 0xc0, 0x5b, 0x9a, 0x8c, 0xbf, 0x7d, 0x39, 0xdc, 0x4b,
+ 0xae, 0xb2, 0x5b, 0xbd, 0x60, 0xec, 0xd1, 0xb4, 0x99, 0x77, 0x99, 0xe4,
+ 0x56, 0xf7, 0x2f, 0x56, 0x8b, 0x05, 0x91, 0x39, 0x0d, 0x5f, 0x09, 0x69,
+ 0xc0, 0xbc, 0x8b, 0xba, 0xad, 0x9c, 0x5b, 0x67, 0xfd, 0x87, 0x07, 0xea,
+ 0xb3, 0xc7, 0xba, 0xba, 0x97, 0xff, 0xd8, 0xbc, 0x33, 0x7f, 0x9b, 0x4e,
+ 0x8d, 0x92, 0x64, 0xf6, 0x44, 0x1e, 0x1c, 0x1b, 0xd3, 0xd6, 0xb0, 0xe9,
+ 0x41, 0x22, 0x7f, 0x81, 0x97, 0xd8, 0x1b, 0xe3, 0x9b, 0xaa, 0x5c, 0x2d,
+ 0x4f, 0xcb, 0x79, 0x3e, 0xbd, 0x5b, 0x37, 0x9c, 0xff, 0x58, 0xeb, 0x17,
+ 0x87, 0xcc, 0xc2, 0xf3, 0x3a, 0xfb, 0x17, 0x9a, 0x56, 0x1e, 0x3b, 0x7e,
+ 0x80, 0x6d, 0x35, 0x9c, 0xe6, 0xcb, 0x2b, 0xc4, 0x79, 0x5f, 0x50, 0xa6,
+ 0x1f, 0x42, 0x33, 0xfc, 0x83, 0xb8, 0x4d, 0x25, 0x49, 0x41, 0x54, 0x3c,
+ 0x85, 0xf3, 0xd4, 0xb7, 0x45, 0xe3, 0xca, 0xb5, 0x0c, 0x4e, 0xdd, 0x54,
+ 0x92, 0x5d, 0x9a, 0x07, 0x7e, 0x3c, 0xf7, 0x21, 0xbe, 0xed, 0xaa, 0x6d,
+ 0xb3, 0xf3, 0x42, 0x7e, 0x35, 0x4a, 0xce, 0x28, 0x4e, 0xbe, 0x5a, 0xb2,
+ 0x79, 0x41, 0xfe, 0x7c, 0xfe, 0x5d, 0xf7, 0xa2, 0x61, 0xf2, 0x42, 0x31,
+ 0x5c, 0x8c, 0x67, 0x76, 0xf4, 0xfd, 0xd9, 0xf1, 0x41, 0x77, 0x9f, 0xa8,
+ 0xe0, 0xa8, 0x3e, 0xd8, 0xd9, 0xa1, 0x90, 0xcf, 0x55, 0x7a, 0x7b, 0x3b,
+ 0xaa, 0xb3, 0x9d, 0x59, 0x39, 0xad, 0x77, 0xea, 0x7a, 0xae, 0xbb, 0xd1,
+ 0xae, 0xff, 0xfb, 0x04, 0xde, 0xdc, 0x72, 0x41, 0x6c, 0x2b, 0x9b, 0x0d,
+ 0xeb, 0x3a, 0xc8, 0x0d, 0x1a, 0xbf, 0xd2, 0xcc, 0x83, 0x43, 0xc9, 0x4b,
+ 0x23, 0x39, 0x37, 0x34, 0xbb, 0x3b, 0x1e, 0x7f, 0x9b, 0xe8, 0xcb, 0xb4,
+ 0xbd, 0x36, 0x24, 0x6e, 0xf3, 0x72, 0x06, 0x11, 0x35, 0x2c, 0x15, 0x86,
+ 0xfd, 0x85, 0xef, 0xd0, 0x81, 0x3a, 0x5d, 0xf2, 0x1f, 0x52, 0xbf, 0x92,
+ 0x37, 0x6b, 0x93, 0xf9, 0x9e, 0x76, 0x1c, 0x20, 0x76, 0x11, 0xf1, 0xf8,
+ 0xbf, 0x3a, 0xc1, 0xd2, 0xc4, 0x3d, 0xe9, 0x3c, 0x42, 0xdd, 0x02, 0x75,
+ 0x43, 0xbd, 0x97, 0x65, 0x65, 0x84, 0xc7, 0xa2, 0x8e, 0x79, 0x41, 0xf5,
+ 0x96, 0xd7, 0xac, 0xf6, 0xd5, 0x9c, 0x8f, 0x68, 0x86, 0x29, 0xbc, 0xc1,
+ 0xcd, 0x31, 0x52, 0x1e, 0xe3, 0xc8, 0x3f, 0xac, 0x68, 0x7c, 0x4b, 0x0f,
+ 0xaf, 0xcf, 0x8b, 0xb6, 0x2a, 0x5c, 0xf0, 0x83, 0xc4, 0xb1, 0x99, 0xac,
+ 0x14, 0x97, 0x05, 0x16, 0x02, 0xe5, 0xff, 0x93, 0x98, 0x80, 0x0e, 0x51,
+ 0x55, 0xa5, 0xa7, 0xd4, 0x0e, 0xbf, 0x23, 0xe3, 0xd2, 0x48, 0xc7, 0xfc,
+ 0x52, 0xc3, 0xeb, 0xd1, 0x3c, 0x3b, 0x56, 0x2b, 0x1b, 0xca, 0x5f, 0x96,
+ 0x92, 0x70, 0x08, 0x05, 0xa4, 0xb0, 0x51, 0x6a, 0x89, 0x64, 0x68, 0x72,
+ 0x3a, 0x50, 0xab, 0x12, 0x3e, 0xb8, 0x09, 0xa8, 0xfb, 0x71, 0x8f, 0x23,
+ 0x8d, 0x4a, 0xef, 0x25, 0x0d, 0x2f, 0xee, 0x0b, 0x2f, 0xb1, 0x0d, 0x5a,
+ 0x19, 0xb9, 0x19, 0xcc, 0x33, 0x5d, 0x6b, 0x8f, 0xf2, 0x6e, 0xad, 0xce,
+ 0x17, 0x2b, 0x73, 0xed, 0xae, 0x47, 0xd3, 0xef, 0x75, 0x6f, 0x73, 0x2a,
+ 0xac, 0x4e, 0x29, 0xb7, 0x3f, 0x26, 0xda, 0x4b, 0x2f, 0x48, 0x8b, 0x01,
+ 0x43, 0x99, 0xd7, 0xd8, 0xd4, 0x49, 0xad, 0x56, 0x22, 0x85, 0xc0, 0x70,
+ 0x20, 0x23, 0xf6, 0x90, 0x75, 0x8e, 0x72, 0xfa, 0x79, 0xe9, 0x14, 0x2c,
+ 0x43, 0x78, 0x86, 0x17, 0x52, 0x45, 0xe2, 0x28, 0xe0, 0xdb, 0x5c, 0x97,
+ 0xc4, 0x49, 0x84, 0x5c, 0x5f, 0xc7, 0xd9, 0x5e, 0xfc, 0x33, 0x12, 0x5f,
+ 0x13, 0x8d, 0x91, 0x3b, 0x7e, 0x86, 0xf3, 0x8b, 0xb9, 0x86, 0x24, 0x33,
+ 0x9f, 0x8b, 0x1d, 0x73, 0x2a, 0xe3, 0x95, 0xc2, 0x4f, 0x2e, 0x34, 0x50,
+ 0xcf, 0x76, 0x5d, 0x4a, 0xda, 0x26, 0x26, 0x8a, 0x79, 0xf2, 0x1c, 0xbb,
+ 0xa4, 0x6e, 0x8b, 0x3a, 0x5b, 0xc6, 0x48, 0x5a, 0xbb, 0x7c, 0xfd, 0x3a,
+ 0x8c, 0x56, 0xba, 0xcd, 0x8c, 0x59, 0xaf, 0x41, 0xed, 0x03, 0x4d, 0xa4,
+ 0xca, 0xf4, 0x0b, 0x45, 0xd9, 0x9d, 0x94, 0xce, 0x23, 0x96, 0x93, 0xaa,
+ 0xf9, 0xfd, 0xde, 0x04, 0x34, 0xcf, 0xdf, 0x9e, 0x72, 0x5c, 0xd8, 0x65,
+ 0xee, 0x01, 0xf2, 0xe0, 0x94, 0x36, 0xdf, 0xc3, 0x3f, 0xc8, 0xf6, 0x73,
+ 0x42, 0x2d, 0x5d, 0x9d, 0xaf, 0x98, 0xce, 0x4b, 0xad, 0x8f, 0x30, 0xef,
+ 0x73, 0x89, 0xed, 0x28, 0xf9, 0x21, 0x52, 0x78, 0xcb, 0x23, 0x5e, 0x38,
+ 0x0d, 0x22, 0xab, 0x43, 0x3d, 0x7e, 0x99, 0x79, 0x55, 0xc1, 0x50, 0x29,
+ 0xac, 0xc9, 0x78, 0x90, 0xfc, 0xf4, 0xd3, 0x20, 0x81, 0x25, 0xfc, 0x53,
+ 0x63, 0xfe, 0xdf, 0x90, 0xd8, 0x4f, 0x5c, 0x8b, 0xf4, 0xd3, 0x35, 0x6c,
+ 0x3b, 0xf8, 0x8d, 0x83, 0x24, 0xec, 0x39, 0x82, 0x44, 0xac, 0x4d, 0xb7,
+ 0x9d, 0x6f, 0x5c, 0xfa, 0xcc, 0x19, 0x58, 0x14, 0x05, 0xf1, 0x92, 0x8a,
+ 0x91, 0x60, 0x69, 0x8e, 0x61, 0xb5, 0x28, 0x42, 0x41, 0xc9, 0x79, 0xc0,
+ 0x44, 0x82, 0x74, 0xbb, 0x89, 0xdb, 0x6f, 0xfe, 0x6e, 0xd3, 0x91, 0xcb,
+ 0x40, 0x7d, 0xf8, 0x8d, 0x72, 0x53, 0x7a, 0x10, 0xb7, 0x3c, 0x8c, 0x9f,
+ 0x69, 0x9d, 0x30, 0x19, 0x95, 0x1c, 0x13, 0x35, 0x1c, 0xf3, 0x04, 0x0e,
+ 0x74, 0xae, 0xf6, 0x2a, 0x9d, 0x7d, 0x88, 0xa2, 0xb7, 0xe5, 0xd5, 0x5d,
+ 0x8d, 0xf4, 0x8c, 0x35, 0xb7, 0xd3, 0xbb, 0x20, 0xa3, 0x5e, 0xfe, 0xd6,
+ 0x68, 0xb6, 0x0f, 0x59, 0x56, 0x20, 0x80, 0x16, 0x77, 0x34, 0xd3, 0xd9,
+ 0x1c, 0x6e, 0xda, 0x70, 0x97, 0xa4, 0xc4, 0x04, 0x29, 0xf3, 0x36, 0x07,
+ 0xdb, 0xe5, 0x17, 0x06, 0x9f, 0xf4, 0xf2, 0xde, 0x4a, 0x3f, 0xa3, 0xd1,
+ 0xd5, 0xb0, 0xa3, 0x08, 0x55, 0x03, 0xf5, 0xf2, 0x7d, 0x61, 0x31, 0x11,
+ 0x9f, 0x12, 0x65, 0x3e, 0x92, 0x75, 0xa1, 0x03, 0x90, 0xc3, 0xc3, 0x45,
+ 0x80, 0x86, 0x43, 0x82, 0x13, 0x59, 0x32, 0x04, 0x08, 0xc8, 0x83, 0x92,
+ 0x0b, 0xee, 0x50, 0xf0, 0xb5, 0x9c, 0x07, 0x2c, 0x55, 0xb2, 0xfd, 0xb4,
+ 0xa6, 0x1a, 0x77, 0x18, 0xb8, 0x13, 0x37, 0x85, 0xe0, 0x06, 0x8c, 0x4b,
+ 0x72, 0xbc, 0x4c, 0x29, 0x4d, 0x41, 0x32, 0x62, 0xa4, 0x74, 0x2c, 0x62,
+ 0xe8, 0x41, 0xcc, 0x05, 0x6a, 0x0e, 0xe6, 0xf3, 0x65, 0xb2, 0xd1, 0xaf,
+ 0xec, 0x6c, 0x74, 0xdf, 0xa0, 0x24, 0x47, 0xe7, 0xc5, 0x94, 0xb2, 0x78,
+ 0x9a, 0xc8, 0x96, 0x24, 0xcb, 0x0d, 0xff, 0xca, 0x39, 0x6b, 0x5c, 0xb9,
+ 0x25, 0x22, 0x74, 0x9b, 0x73, 0x80, 0xeb, 0x48, 0xf0, 0xde, 0x25, 0x52,
+ 0x79, 0xf4, 0xe1, 0x52, 0x91, 0x72, 0xf2, 0x50, 0x93, 0x80, 0x62, 0x81,
+ 0xe6, 0x3d, 0x1d, 0x44, 0xdb, 0xf5, 0x6d, 0x14, 0x96, 0xe0, 0x7b, 0xe2,
+ 0x75, 0x56, 0xe9, 0x60, 0xef, 0xf7, 0x72, 0x4e, 0x70, 0x1c, 0x5a, 0xd2,
+ 0x42, 0x5a, 0x4f, 0xb0, 0x3b, 0x7b, 0xdb, 0xb6, 0x08, 0x92, 0x30, 0x35,
+ 0x38, 0xf9, 0x5a, 0x54, 0x81, 0x8d, 0xab, 0x92, 0xd3, 0x85, 0x36, 0x0e,
+ 0x50, 0x9f, 0x27, 0x57, 0x93, 0xd6, 0xa8, 0x68, 0x07, 0x9d, 0xe1, 0x28,
+ 0x19, 0xeb, 0xdb, 0x93, 0xb7, 0x87, 0xed, 0x24, 0x5b, 0xfa, 0x49, 0xcc,
+ 0xbf, 0x6a, 0x58, 0xd5, 0x1b, 0xc3, 0x5f, 0x98, 0x06, 0xd2, 0x40, 0x61,
+ 0x63, 0xda, 0x32, 0xd3, 0xba, 0xcc, 0x9a, 0xe5, 0xcd, 0x2a, 0x9f, 0x6d,
+ 0x6d, 0x83, 0x46, 0x50, 0x55, 0x32, 0xa4, 0x52, 0x26, 0xb6, 0xfe, 0xea,
+ 0x64, 0x8b, 0x75, 0xf0, 0x2a, 0x6b, 0x56, 0x55, 0xc1, 0x3e, 0x71, 0xcc,
+ 0xbd, 0x6b, 0x47, 0x19, 0x01, 0xcc, 0xd2, 0xcc, 0xb7, 0xff, 0x05, 0x1a,
+ 0x87, 0xb3, 0x94, 0x78, 0xc0, 0x6d, 0x30, 0x01, 0x4d, 0x89, 0xa0, 0x83,
+ 0xa7, 0xb5, 0x04, 0x22, 0xca, 0xdf, 0x89, 0xe4, 0xe5, 0xe9, 0xe9, 0xeb,
+ 0x97, 0xe7, 0x2f, 0xed, 0xda, 0x48, 0x06, 0x13, 0x67, 0x21, 0x25, 0xd8,
+ 0xb0, 0x24, 0x28, 0x46, 0x78, 0x72, 0xf3, 0xf7, 0xef, 0xc7, 0x87, 0x67,
+ 0xdd, 0x83, 0x3d, 0x3d, 0x3b, 0x01, 0xee, 0xd0, 0xef, 0x7f, 0x7a, 0xb9,
+ 0x5c, 0xce, 0x35, 0xee, 0xf7, 0x3a, 0x6d, 0xd2, 0xcd, 0xe0, 0x56, 0xef,
+ 0x6f, 0x63, 0x7e, 0x37, 0x76, 0x7e, 0x17, 0x22, 0xc7, 0xc8, 0x9a, 0x4f,
+ 0x3e, 0xe0, 0x40, 0xab, 0xa9, 0x66, 0xd8, 0xda, 0xdd, 0xa0, 0x0d, 0xa0,
+ 0x04, 0xd9, 0xfe, 0x85, 0x30, 0xd4, 0x41, 0x2b, 0x57, 0x4c, 0x37, 0x6b,
+ 0x6e, 0xec, 0xe8, 0x6c, 0xba, 0x6a, 0x94, 0xe4, 0x89, 0xbe, 0x50, 0xac,
+ 0xdd, 0xdd, 0x97, 0xe0, 0x78, 0x5c, 0xa4, 0x84, 0xb9, 0x00, 0x61, 0x05,
+ 0x18, 0x42, 0xa3, 0x2c, 0xe8, 0x91, 0xcc, 0x96, 0xb9, 0x58, 0x84, 0xa6,
+ 0x66, 0x19, 0x47, 0x4e, 0x08, 0x3b, 0x80, 0xa7, 0x14, 0x6c, 0xc8, 0xef,
+ 0xcc, 0x6d, 0x1c, 0x26, 0x87, 0x52, 0xd4, 0x46, 0x0b, 0x37, 0x3f, 0x08,
+ 0x1e, 0x6a, 0xac, 0x85, 0x20, 0xcc, 0x3e, 0xce, 0x2b, 0x3c, 0x3c, 0x8d,
+ 0x8d, 0xae, 0x0c, 0xe2, 0x0a, 0x56, 0xf3, 0x10, 0xa6, 0x8d, 0x4d, 0x27,
+ 0x03, 0x69, 0x23, 0x92, 0xd7, 0x34, 0x4c, 0x2f, 0x41, 0x5e, 0xe6, 0x51,
+ 0xa3, 0x40, 0x1b, 0xbb, 0x08, 0xff, 0xda, 0xd9, 0x1b, 0xed, 0x6e, 0x84,
+ 0x93, 0xc7, 0x65, 0x21, 0x2c, 0x14, 0x1b, 0x38, 0x03, 0x37, 0x6c, 0xca,
+ 0xf2, 0xde, 0xf9, 0x31, 0x0b, 0x33, 0x2a, 0xe8, 0xd2, 0x8c, 0x1f, 0x9d,
+ 0xca, 0xf0, 0x24, 0x48, 0xf4, 0x40, 0x72, 0x6e, 0xa5, 0x4c, 0xd1, 0xf0,
+ 0xc4, 0xa2, 0xbc, 0xc1, 0x4a, 0x0c, 0xa9, 0xcd, 0xe7, 0x2d, 0xd0, 0x9a,
+ 0x8d, 0xf8, 0x36, 0x17, 0x84, 0x0f, 0x95, 0x75, 0x77, 0x3b, 0x1a, 0x9c,
+ 0x56, 0xfd, 0xd2, 0x57, 0xe2, 0x6c, 0x56, 0x2b, 0x19, 0x8a, 0x96, 0x12,
+ 0x7c, 0xcc, 0x00, 0xc3, 0xe5, 0x02, 0xbe, 0x37, 0xf7, 0x93, 0x2f, 0x86,
+ 0x9a, 0x01, 0x32, 0xc4, 0x20, 0x50, 0x3c, 0x5f, 0x70, 0x49, 0x7a, 0x60,
+ 0xae, 0xbf, 0x4d, 0x6f, 0xf3, 0xc5, 0x6a, 0x41, 0x1f, 0x03, 0x6d, 0xcb,
+ 0x63, 0x12, 0x32, 0x20, 0xc7, 0x21, 0x67, 0xa0, 0x10, 0x91, 0x6f, 0xd6,
+ 0x89, 0x67, 0xb4, 0xc7, 0x84, 0x8c, 0x11, 0xc9, 0x23, 0xb7, 0xbc, 0x82,
+ 0x52, 0x35, 0x11, 0x53, 0xa8, 0x3b, 0x06, 0xbf, 0xd1, 0x16, 0x52, 0xa4,
+ 0x15, 0xd4, 0xa5, 0xcd, 0xc9, 0x89, 0xb0, 0x73, 0xc6, 0x44, 0x10, 0xf5,
+ 0xcd, 0x4b, 0x49, 0xcd, 0xaa, 0xbc, 0x9c, 0xd9, 0x7b, 0x03, 0xfd, 0x30,
+ 0x2f, 0x56, 0x66, 0x9f, 0xd9, 0x5d, 0xcc, 0x71, 0x86, 0x88, 0x52, 0x93,
+ 0xdd, 0x52, 0xe2, 0xfc, 0x98, 0xea, 0x21, 0x34, 0xcb, 0xf4, 0xd9, 0xe8,
+ 0xd1, 0xfe, 0x68, 0x77, 0xd0, 0xb2, 0xd9, 0x05, 0x3a, 0xc2, 0xdc, 0xae,
+ 0x69, 0xbe, 0xb0, 0x65, 0xa5, 0xa3, 0x7f, 0x99, 0x6f, 0x86, 0x92, 0xbe,
+ 0x17, 0xe9, 0x2d, 0x1d, 0x5f, 0xf4, 0x58, 0xcb, 0xe4, 0xc5, 0xb7, 0x27,
+ 0xe3, 0xf3, 0xbd, 0x83, 0xd3, 0x93, 0x33, 0xf3, 0x5f, 0xfc, 0x7d, 0x9f,
+ 0xfe, 0xbe, 0x1f, 0x18, 0x8e, 0x6f, 0x24, 0x49, 0x56, 0xeb, 0x71, 0x48,
+ 0x43, 0x21, 0x8d, 0x86, 0x77, 0x33, 0xf1, 0x06, 0x82, 0xef, 0x94, 0xd8,
+ 0xe0, 0xd4, 0x16, 0x2e, 0x76, 0x8f, 0xd8, 0xfb, 0x94, 0xe6, 0xd1, 0x8d,
+ 0x92, 0x30, 0x57, 0x2f, 0x6f, 0x54, 0x9b, 0x92, 0x92, 0x77, 0x2d, 0xa6,
+ 0xef, 0xba, 0xb3, 0xb9, 0x5c, 0x59, 0x4a, 0x70, 0x14, 0x96, 0x8e, 0xd2,
+ 0xbf, 0xda, 0xbf, 0x9a, 0xce, 0x8d, 0x92, 0x9f, 0x21, 0x5d, 0x64, 0x96,
+ 0x71, 0x0c, 0x05, 0x3f, 0x89, 0xd9, 0x1e, 0xe6, 0xfa, 0x49, 0x55, 0x42,
+ 0x90, 0x43, 0x48, 0x14, 0xa9, 0x81, 0x1b, 0x33, 0x1b, 0x33, 0xc7, 0xdc,
+ 0x68, 0xe1, 0xbc, 0x1d, 0x45, 0x16, 0x14, 0x01, 0x30, 0x5c, 0x9c, 0xef,
+ 0xa7, 0xa2, 0x5a, 0x7c, 0xaa, 0xaa, 0x7f, 0x77, 0x72, 0x9e, 0xa4, 0x17,
+ 0x17, 0x0a, 0x01, 0x80, 0xca, 0x03, 0x68, 0xac, 0x3b, 0x4b, 0x96, 0x64,
+ 0x69, 0x13, 0xcb, 0xce, 0x10, 0x7d, 0xe4, 0xfc, 0x78, 0xbc, 0x03, 0x2f,
+ 0x15, 0xe7, 0xb9, 0x8d, 0xdf, 0x1d, 0x0d, 0x5a, 0xee, 0x68, 0x3f, 0xbb,
+ 0x65, 0x1b, 0x92, 0x32, 0xae, 0x50, 0xa4, 0x9e, 0x2c, 0x74, 0xc0, 0x32,
+ 0xc8, 0x9b, 0xa3, 0x23, 0xdd, 0x90, 0x82, 0xaf, 0x0d, 0x3a, 0xda, 0x8d,
+ 0x44, 0x03, 0xa3, 0x64, 0xfa, 0x2e, 0x96, 0xcd, 0x5d, 0x58, 0x16, 0x4a,
+ 0xee, 0x0b, 0xc0, 0xad, 0x40, 0xe9, 0xd8, 0x80, 0x49, 0x82, 0x65, 0xd1,
+ 0x92, 0x36, 0x46, 0x3c, 0xec, 0xfe, 0x06, 0x8d, 0x4a, 0x83, 0x9a, 0xbf,
+ 0x63, 0x4c, 0x22, 0xda, 0x49, 0x16, 0xcb, 0xe0, 0xe7, 0x0f, 0x79, 0x83,
+ 0x27, 0x76, 0x78, 0x33, 0x31, 0x5b, 0x8a, 0xa6, 0xd4, 0x01, 0x06, 0x53,
+ 0x56, 0xf9, 0x25, 0x52, 0x01, 0xba, 0xd5, 0x61, 0x6e, 0x22, 0x81, 0xf3,
+ 0x09, 0xca, 0x58, 0xdd, 0x6c, 0x78, 0xde, 0x82, 0x26, 0xc8, 0xc1, 0xa7,
+ 0xcc, 0xd0, 0x4a, 0xed, 0x19, 0x9d, 0x0e, 0xf8, 0x4f, 0x13, 0xd1, 0xe3,
+ 0x59, 0xd9, 0x33, 0xab, 0x83, 0xdc, 0x71, 0x71, 0x1e, 0xad, 0xee, 0xd1,
+ 0xbb, 0x44, 0x80, 0x37, 0x47, 0x8d, 0x32, 0x70, 0x8e, 0x0c, 0x75, 0x87,
+ 0x63, 0x60, 0x36, 0xc3, 0x11, 0xb4, 0xb0, 0x63, 0x63, 0x6f, 0xff, 0xd9,
+ 0x68, 0xd7, 0xfc, 0x9f, 0x39, 0x14, 0xd1, 0x8f, 0x08, 0x15, 0xca, 0xa1,
+ 0xff, 0xd8, 0x27, 0xb3, 0xdb, 0x2e, 0x49, 0xb2, 0x00, 0x2a, 0xab, 0xcb,
+ 0x8d, 0xb5, 0xa5, 0xaa, 0x2d, 0x91, 0x82, 0x83, 0xb4, 0xe2, 0x24, 0x9d,
+ 0xc9, 0x4f, 0xf4, 0x8e, 0x57, 0xab, 0x79, 0x24, 0x73, 0xcf, 0xf3, 0x14,
+ 0x43, 0x3b, 0x9b, 0x5f, 0x8b, 0x9f, 0xf8, 0x5b, 0xf0, 0x26, 0x2e, 0xd5,
+ 0x1b, 0xb5, 0xf2, 0x9e, 0x9e, 0xb7, 0xdc, 0x7e, 0xaf, 0xc4, 0x64, 0x23,
+ 0xce, 0x3c, 0x34, 0x97, 0xe1, 0x45, 0x79, 0x71, 0x51, 0x67, 0x4d, 0x57,
+ 0x00, 0xbd, 0x92, 0x47, 0x76, 0xce, 0x08, 0xc7, 0x90, 0x38, 0x95, 0x16,
+ 0xd5, 0x24, 0x6d, 0xf4, 0x9d, 0x44, 0x12, 0xcd, 0x98, 0x6d, 0xf1, 0x70,
+ 0xa3, 0x48, 0x1d, 0x81, 0xff, 0x7b, 0x4d, 0x02, 0xe1, 0xe2, 0x77, 0xc5,
+ 0x74, 0x21, 0x6b, 0x99, 0xe1, 0x5a, 0x44, 0xd2, 0x75, 0xc1, 0xd7, 0xf4,
+ 0x4a, 0x7c, 0xcc, 0x97, 0x4b, 0x98, 0x37, 0x0c, 0x64, 0x46, 0x64, 0x6b,
+ 0x63, 0x64, 0x14, 0xaa, 0x25, 0x52, 0xd6, 0x84, 0x40, 0xa3, 0x24, 0x4f,
+ 0x45, 0xe6, 0x4f, 0xb2, 0x8b, 0x30, 0xce, 0xc3, 0x79, 0x8b, 0x3e, 0x7a,
+ 0x8d, 0x94, 0xe2, 0xce, 0x80, 0x54, 0x53, 0xa4, 0xca, 0x62, 0x2e, 0x3c,
+ 0x5c, 0x07, 0xa9, 0xef, 0x1b, 0x44, 0xee, 0xbf, 0xab, 0xbf, 0xb2, 0xae,
+ 0xb6, 0xf1, 0xd1, 0xff, 0x75, 0xe8, 0xb0, 0x86, 0x2c, 0x98, 0x0f, 0x57,
+ 0xb4, 0xc4, 0xea, 0x83, 0xcc, 0x2d, 0x1c, 0xbe, 0x32, 0xe7, 0xb5, 0x41,
+ 0x53, 0x71, 0xd9, 0x24, 0x65, 0xa7, 0xe2, 0x82, 0xec, 0x1e, 0x68, 0x12,
+ 0xa4, 0x0d, 0xed, 0xa0, 0xbc, 0x3f, 0x10, 0x0d, 0x0c, 0x45, 0xc9, 0x2e,
+ 0x44, 0x59, 0x23, 0xdd, 0x8e, 0x46, 0x0a, 0xe3, 0xfc, 0xb2, 0x12, 0x51,
+ 0x16, 0x77, 0xf2, 0x02, 0x2a, 0x23, 0x2b, 0x30, 0x41, 0xd5, 0x85, 0x96,
+ 0xba, 0x32, 0xa8, 0xc9, 0xaa, 0xf9, 0x17, 0x86, 0x47, 0x2a, 0xd0, 0x2f,
+ 0xa1, 0xd5, 0x79, 0x44, 0x3d, 0x65, 0xa2, 0x06, 0x24, 0xe7, 0xf0, 0x2f,
+ 0xc6, 0xca, 0x7e, 0xa1, 0x6e, 0x8a, 0xbe, 0xfa, 0x7f, 0x75, 0x6a, 0xa0,
+ 0x4e, 0x82, 0x8c, 0x30, 0xa2, 0x0d, 0x0b, 0x43, 0xa3, 0x5b, 0xcd, 0xfe,
+ 0x94, 0x94, 0x74, 0x19, 0xc2, 0xfb, 0xec, 0xde, 0xf9, 0x0b, 0xc2, 0xb6,
+ 0xf1, 0xaa, 0xbc, 0x6d, 0x79, 0xe4, 0x08, 0x81, 0xa8, 0x39, 0x8f, 0x50,
+ 0x73, 0xee, 0xa4, 0x8c, 0xa1, 0x46, 0x43, 0x1e, 0xc8, 0xdc, 0xbc, 0x18,
+ 0x72, 0xfd, 0xb4, 0x3e, 0x4b, 0xf1, 0x32, 0x80, 0xb3, 0x09, 0x39, 0xf2,
+ 0x11, 0xb1, 0x19, 0xde, 0x48, 0xee, 0x04, 0xa9, 0xb5, 0xf4, 0xd9, 0x98,
+ 0xa7, 0x9c, 0xdd, 0x8d, 0xe4, 0x23, 0xe4, 0x8f, 0xc3, 0x3d, 0xf6, 0xd1,
+ 0xe8, 0xce, 0xc5, 0x00, 0x3f, 0xa5, 0x5a, 0x53, 0x7b, 0xc9, 0xd8, 0xb7,
+ 0xd1, 0x64, 0x1c, 0x97, 0xc8, 0x22, 0xba, 0xac, 0xf7, 0xac, 0x3c, 0xea,
+ 0xb9, 0x51, 0xde, 0x65, 0x8d, 0x64, 0x87, 0xf0, 0xe4, 0xb5, 0xfc, 0x8a,
+ 0x4a, 0xb8, 0x8e, 0x2e, 0x3a, 0xc3, 0x11, 0x2a, 0x5c, 0xd6, 0xb4, 0x8b,
+ 0xf2, 0x25, 0x4c, 0xcb, 0x50, 0x58, 0x70, 0x77, 0x0e, 0xcc, 0x35, 0xd8,
+ 0x50, 0xd7, 0x2b, 0xaf, 0x20, 0x9e, 0x9d, 0xa0, 0xd3, 0x81, 0x9b, 0xa8,
+ 0x99, 0xc5, 0x68, 0x92, 0x75, 0x5f, 0xbd, 0x90, 0x82, 0x10, 0xe8, 0x67,
+ 0x3c, 0x00, 0xeb, 0x8c, 0x02, 0xf4, 0xee, 0x6b, 0x9a, 0x9b, 0x12, 0x29,
+ 0x1c, 0xf4, 0x0a, 0x47, 0x91, 0x25, 0x53, 0xcd, 0xd4, 0x33, 0xa2, 0x13,
+ 0x35, 0x5c, 0x58, 0xec, 0xa2, 0x9b, 0x94, 0x28, 0xcd, 0x8e, 0x1f, 0x2b,
+ 0x6f, 0xf0, 0x52, 0x1c, 0x87, 0x13, 0x47, 0xce, 0x0e, 0x25, 0x27, 0xea,
+ 0x92, 0x95, 0x87, 0x40, 0xf3, 0x46, 0xb0, 0x6c, 0x36, 0x5e, 0xfd, 0x28,
+ 0x01, 0xcf, 0xd8, 0x4d, 0xe1, 0x2d, 0xbc, 0xb9, 0x2a, 0xe7, 0x59, 0x2c,
+ 0x0a, 0xe2, 0x55, 0xf5, 0x12, 0x86, 0x0b, 0x32, 0x77, 0xc9, 0xa1, 0x7c,
+ 0x4d, 0x49, 0xc1, 0xad, 0xe8, 0x88, 0xd1, 0xef, 0xb2, 0x14, 0x35, 0x45,
+ 0x36, 0x2f, 0xfe, 0x7a, 0x10, 0x64, 0xaa, 0x9b, 0x7b, 0x3e, 0x29, 0x6b,
+ 0x4b, 0x2f, 0xa8, 0x9d, 0x85, 0x04, 0xb9, 0x49, 0x2b, 0x62, 0xcc, 0x02,
+ 0x86, 0xa5, 0x38, 0xa1, 0x7e, 0x5a, 0x20, 0x54, 0xc1, 0x6e, 0x49, 0x43,
+ 0x8e, 0x7a, 0x73, 0x43, 0x26, 0x46, 0x01, 0x80, 0xcb, 0x96, 0x68, 0x07,
+ 0x43, 0x0a, 0xcc, 0xd5, 0x15, 0x21, 0xde, 0x4a, 0x51, 0xba, 0xb9, 0x87,
+ 0x57, 0x90, 0xe9, 0x79, 0xb3, 0x4a, 0x9b, 0x87, 0xe5, 0x64, 0xf7, 0xf1,
+ 0x26, 0x66, 0x4e, 0x7e, 0xca, 0x69, 0x1f, 0x34, 0x43, 0x4f, 0xa0, 0xd0,
+ 0x3f, 0xc8, 0x17, 0xb8, 0x6b, 0xff, 0xe7, 0x1e, 0xc6, 0x74, 0x4a, 0xc0,
+ 0x7d, 0x57, 0x6d, 0xe4, 0x27, 0x2a, 0xbb, 0x15, 0x79, 0xa2, 0xc5, 0x6d,
+ 0x3c, 0xa6, 0x8a, 0xfb, 0xa3, 0x48, 0x2c, 0x9f, 0x02, 0x60, 0x66, 0x3a,
+ 0xf3, 0x3b, 0x37, 0xa0, 0x57, 0x15, 0xab, 0x49, 0xdc, 0x1e, 0x2a, 0x9e,
+ 0xfd, 0x42, 0x90, 0x98, 0xb4, 0x31, 0x36, 0x2a, 0x38, 0x7f, 0xf3, 0x60,
+ 0x43, 0x41, 0x46, 0x2d, 0x6a, 0x92, 0x70, 0x11, 0xa9, 0xcb, 0xd2, 0x12,
+ 0x0f, 0xf1, 0x17, 0xd3, 0xf5, 0xef, 0x0e, 0x07, 0xc4, 0xed, 0xbd, 0x2f,
+ 0xbf, 0x7f, 0x79, 0xfc, 0xfe, 0x70, 0xef, 0x8b, 0x04, 0xff, 0xda, 0xe7,
+ 0x7f, 0xed, 0x6f, 0xc4, 0x8e, 0xcb, 0x30, 0xaa, 0xcd, 0x2f, 0x37, 0x93,
+ 0xfa, 0x6e, 0x31, 0x29, 0xe7, 0xf6, 0xc0, 0x64, 0x2b, 0x34, 0x56, 0x36,
+ 0x10, 0x29, 0x6e, 0xab, 0xb3, 0xc5, 0x4f, 0xde, 0x65, 0xd9, 0xb5, 0xe4,
+ 0x15, 0x2a, 0xbb, 0xa1, 0x20, 0x9d, 0x5f, 0x2e, 0xdc, 0x50, 0x31, 0xb5,
+ 0xf2, 0x30, 0x09, 0xd7, 0xf5, 0xe5, 0x7a, 0x92, 0x50, 0xd2, 0x8b, 0x5d,
+ 0x47, 0x38, 0x07, 0x8b, 0x17, 0x87, 0xdc, 0xec, 0x33, 0x8c, 0x30, 0xa1,
+ 0xcc, 0x70, 0x27, 0xba, 0x52, 0x16, 0x5e, 0x9a, 0x5f, 0x17, 0x03, 0x01,
+ 0x80, 0x1b, 0x77, 0x02, 0x31, 0xb0, 0x59, 0x65, 0x96, 0xf5, 0xd2, 0xaa,
+ 0xf1, 0x6e, 0x77, 0xb8, 0x89, 0xe8, 0x2e, 0x1e, 0x02, 0xd7, 0x31, 0x40,
+ 0xbf, 0x86, 0x9a, 0x81, 0xe1, 0x5c, 0x1d, 0x30, 0x46, 0x67, 0xd0, 0xac,
+ 0xd5, 0x9f, 0x91, 0x78, 0x18, 0xcf, 0x16, 0x2d, 0x52, 0xe0, 0x16, 0x93,
+ 0x56, 0xd4, 0x8f, 0x7d, 0xcd, 0x21, 0xc2, 0x0a, 0xe3, 0xbd, 0x98, 0xcd,
+ 0xa1, 0x8c, 0x92, 0x45, 0x90, 0x80, 0x55, 0x18, 0x4d, 0x72, 0xcb, 0xb0,
+ 0xf7, 0x6d, 0x1f, 0xf6, 0x43, 0x8f, 0x4f, 0xdc, 0x12, 0x8d, 0x0d, 0x9a,
+ 0xf6, 0xc4, 0x0a, 0xce, 0xaf, 0x5a, 0x82, 0x46, 0x55, 0x3e, 0xad, 0x61,
+ 0xe6, 0x10, 0xac, 0x48, 0x0e, 0x1e, 0x86, 0xc9, 0x14, 0x09, 0x9a, 0xf3,
+ 0x34, 0x00, 0x9c, 0xa1, 0xbb, 0xa6, 0x88, 0x17, 0x88, 0xe5, 0x5b, 0xc2,
+ 0x37, 0xdf, 0xbf, 0x9b, 0x67, 0xdb, 0x6a, 0x18, 0xa8, 0xb0, 0xdb, 0x79,
+ 0x5b, 0xfe, 0xcd, 0xcc, 0x3b, 0x95, 0x8f, 0xc4, 0x64, 0xa6, 0x88, 0xc0,
+ 0xde, 0x99, 0x3b, 0xfe, 0xc2, 0x95, 0xe0, 0x3e, 0xd7, 0x68, 0xd9, 0xc6,
+ 0x14, 0xe7, 0x85, 0x5e, 0x46, 0xd9, 0xd8, 0x01, 0xe9, 0x88, 0x76, 0x11,
+ 0x48, 0x68, 0x0f, 0x56, 0xc6, 0x90, 0x72, 0x29, 0x49, 0x38, 0x96, 0xc4,
+ 0x44, 0xec, 0x74, 0x59, 0x78, 0x57, 0xa7, 0xea, 0x11, 0x44, 0x87, 0xb7,
+ 0x59, 0x35, 0x05, 0x9a, 0xc4, 0xd4, 0xe8, 0xa5, 0xc4, 0x4f, 0x2f, 0xc4,
+ 0x3d, 0x85, 0x74, 0x29, 0x49, 0x7c, 0x6f, 0x43, 0xbf, 0x90, 0xf8, 0x55,
+ 0x3a, 0xeb, 0x25, 0x31, 0x4a, 0x6f, 0x98, 0x1a, 0xc2, 0x18, 0x59, 0xa4,
+ 0x3b, 0x15, 0x90, 0x6d, 0xf6, 0xa1, 0x75, 0x64, 0x14, 0x4e, 0x08, 0x92,
+ 0xf2, 0x68, 0x87, 0xf5, 0x45, 0xef, 0x34, 0x85, 0x5c, 0x68, 0x2e, 0x8c,
+ 0x5b, 0xe6, 0xa2, 0x43, 0x40, 0x03, 0x20, 0xf8, 0xa7, 0xfe, 0x0c, 0x44,
+ 0x7b, 0x3a, 0x04, 0xd1, 0x41, 0xd1, 0x92, 0xe2, 0x4e, 0x41, 0xa3, 0xb6,
+ 0x48, 0x6c, 0xb2, 0x72, 0xa8, 0xd0, 0x82, 0xa4, 0x79, 0x85, 0xf5, 0xc6,
+ 0xf3, 0xf2, 0x06, 0x31, 0x98, 0x36, 0xd0, 0xa7, 0x62, 0xfa, 0x70, 0xda,
+ 0x1c, 0xf3, 0xe5, 0x21, 0x74, 0x25, 0xfe, 0xec, 0x48, 0x21, 0x26, 0xa2,
+ 0x14, 0xa0, 0x15, 0xb3, 0xdd, 0x62, 0xa3, 0xd4, 0x25, 0x49, 0x34, 0xec,
+ 0x4c, 0x66, 0xfd, 0xc2, 0xe1, 0x6c, 0xc5, 0x04, 0x1b, 0xad, 0x78, 0x52,
+ 0x36, 0x57, 0x5e, 0xaa, 0x29, 0xb0, 0xfb, 0xe0, 0xe7, 0xb9, 0x58, 0x35,
+ 0x64, 0x04, 0xa8, 0x19, 0xd8, 0x48, 0x36, 0xb1, 0x38, 0x8b, 0x82, 0xc4,
+ 0x86, 0x8f, 0xc0, 0x78, 0xc3, 0x12, 0x2d, 0x4e, 0x2d, 0x72, 0x64, 0x0b,
+ 0x4a, 0x06, 0x07, 0x5d, 0x1a, 0x03, 0x98, 0x60, 0x04, 0xcd, 0x37, 0x91,
+ 0x8b, 0x54, 0xd7, 0x80, 0x8c, 0xa3, 0xac, 0x53, 0xb3, 0xb1, 0x01, 0xaa,
+ 0x04, 0x61, 0x21, 0x15, 0xfe, 0x91, 0x6e, 0x31, 0xc2, 0x8d, 0xc3, 0x67,
+ 0x62, 0xe8, 0x0b, 0x58, 0xed, 0x13, 0x39, 0x9a, 0x9a, 0xee, 0x2f, 0xe8,
+ 0x21, 0xe2, 0x14, 0xb1, 0xfa, 0x6b, 0xcf, 0x85, 0xfd, 0xa7, 0x8d, 0x9a,
+ 0xc0, 0xc8, 0xab, 0x6a, 0xc6, 0xc9, 0x25, 0xa4, 0x61, 0x9b, 0xfb, 0x4e,
+ 0xdb, 0x1d, 0x32, 0xae, 0xd4, 0xc5, 0xdf, 0xc8, 0xaa, 0xe8, 0xfa, 0xb0,
+ 0x96, 0x33, 0x52, 0xfb, 0xf4, 0x1d, 0x52, 0x94, 0x3c, 0xbc, 0xcb, 0xba,
+ 0x94, 0xdb, 0x48, 0xc3, 0x83, 0xc9, 0x38, 0x2e, 0x13, 0xc3, 0xc1, 0xe9,
+ 0xde, 0x7f, 0x3f, 0xc0, 0xd2, 0x02, 0x64, 0x63, 0x1f, 0xce, 0xc2, 0xe7,
+ 0x0d, 0xe6, 0x45, 0x12, 0xbe, 0x43, 0x43, 0xfb, 0x75, 0x2c, 0x50, 0xa9,
+ 0x02, 0xdc, 0x70, 0xf8, 0xbf, 0xac, 0x8a, 0x69, 0x47, 0x46, 0x95, 0x03,
+ 0x0f, 0x76, 0x53, 0xa2, 0xb2, 0x56, 0x42, 0x74, 0x89, 0x9e, 0x3e, 0x24,
+ 0x08, 0x37, 0x28, 0xfa, 0x44, 0x81, 0x06, 0xc4, 0xdb, 0xdc, 0xab, 0x92,
+ 0xbd, 0xca, 0xcd, 0x09, 0x55, 0xd3, 0x2b, 0x02, 0x0b, 0x20, 0x3f, 0x52,
+ 0xa6, 0xce, 0xd1, 0x40, 0x11, 0x16, 0xcf, 0x3f, 0x0d, 0x2b, 0xba, 0x58,
+ 0x0e, 0x76, 0x04, 0x40, 0x90, 0xb2, 0x50, 0x26, 0xdd, 0x37, 0xcf, 0x30,
+ 0x79, 0xeb, 0x0a, 0x7b, 0x9e, 0xcd, 0x6b, 0x27, 0x20, 0xed, 0x3b, 0x4e,
+ 0x52, 0x92, 0x11, 0x5e, 0x90, 0x4f, 0x96, 0x45, 0x71, 0x1e, 0xbd, 0xe1,
+ 0x34, 0x13, 0xa3, 0xe6, 0xc8, 0x64, 0x60, 0x57, 0x82, 0x4e, 0xee, 0x14,
+ 0x46, 0x46, 0x46, 0xe8, 0x22, 0xc9, 0x04, 0x92, 0xa7, 0xb4, 0xfb, 0x26,
+ 0x18, 0x35, 0xba, 0x55, 0xb9, 0xc2, 0xaa, 0x33, 0xa9, 0xc0, 0x91, 0x81,
+ 0x0a, 0x69, 0x6a, 0xf7, 0x81, 0xf8, 0xd7, 0x70, 0x78, 0xd1, 0x04, 0x19,
+ 0x59, 0xde, 0x59, 0xb7, 0x49, 0x60, 0x7e, 0x21, 0x30, 0x3c, 0x6f, 0x15,
+ 0x74, 0xef, 0x1a, 0x65, 0x3a, 0xc9, 0xf1, 0x1b, 0xf6, 0xe2, 0xbd, 0x3a,
+ 0xc3, 0xdf, 0x72, 0x0b, 0x42, 0x44, 0xa5, 0xb6, 0xd4, 0xbf, 0x83, 0x73,
+ 0x60, 0xdf, 0x7e, 0xdf, 0xad, 0xb4, 0xdc, 0x3a, 0x19, 0xef, 0x3c, 0x7a,
+ 0xbe, 0xbb, 0x1d, 0x49, 0x4b, 0x36, 0xdf, 0xf0, 0xe1, 0x08, 0x1f, 0xef,
+ 0x8e, 0x76, 0xb7, 0x3b, 0xb3, 0xc1, 0x76, 0xaf, 0xc1, 0x48, 0x51, 0x10,
+ 0x75, 0x2b, 0x34, 0x28, 0xdf, 0xd8, 0xd5, 0x63, 0x49, 0x6a, 0xb4, 0x5f,
+ 0x2f, 0x7a, 0x96, 0x5d, 0x1b, 0x52, 0x8b, 0xa6, 0xa8, 0x1d, 0xe7, 0xb5,
+ 0x18, 0x36, 0x90, 0x64, 0x2a, 0x5b, 0x50, 0x90, 0xdd, 0x4e, 0xfb, 0xa5,
+ 0x47, 0x20, 0x2c, 0x39, 0xd7, 0x21, 0x12, 0x6d, 0xa9, 0xcd, 0xa4, 0x2a,
+ 0xca, 0xbd, 0xa3, 0x98, 0xfe, 0x27, 0x77, 0xb6, 0xbc, 0x6c, 0x81, 0x3a,
+ 0x3e, 0xf3, 0xcf, 0x14, 0x9a, 0xfe, 0x30, 0xad, 0xa7, 0x79, 0xce, 0xf6,
+ 0x4c, 0x8f, 0x19, 0xa3, 0x49, 0x8d, 0x04, 0x13, 0x47, 0xc5, 0xd2, 0x79,
+ 0xca, 0xa1, 0x5a, 0x87, 0x47, 0x1a, 0x0c, 0x0b, 0x65, 0xd5, 0x90, 0xd8,
+ 0xba, 0x71, 0xc5, 0x86, 0x47, 0x4f, 0x16, 0x81, 0x50, 0xb6, 0xfa, 0x65,
+ 0xdd, 0x55, 0xa3, 0xcc, 0x5d, 0x60, 0x44, 0xb2, 0x65, 0x15, 0x96, 0xf0,
+ 0x21, 0xfd, 0x92, 0x92, 0x9a, 0xd3, 0xa6, 0x2e, 0xb1, 0x4f, 0xb1, 0x4d,
+ 0x25, 0x0f, 0x05, 0x81, 0xd0, 0x5a, 0x03, 0xca, 0xde, 0x7d, 0xc9, 0x05,
+ 0xfa, 0xca, 0xcb, 0xdc, 0x69, 0x19, 0x40, 0x69, 0x44, 0x11, 0x64, 0x0c,
+ 0xfd, 0x84, 0xc2, 0xe3, 0x5c, 0x2c, 0x85, 0x85, 0x48, 0x27, 0x09, 0x72,
+ 0x7b, 0x70, 0x8e, 0x88, 0xf4, 0x91, 0x00, 0xd2, 0x90, 0xdd, 0xad, 0x08,
+ 0x7e, 0xd4, 0xc0, 0xac, 0x8f, 0x10, 0x3a, 0x89, 0x82, 0x8a, 0xec, 0x06,
+ 0xdc, 0xb8, 0x16, 0x55, 0xa2, 0xaa, 0x72, 0xf8, 0x8d, 0x6c, 0x72, 0x01,
+ 0xab, 0x63, 0x48, 0xb4, 0x84, 0x70, 0x9e, 0x45, 0xca, 0xb7, 0xa7, 0x74,
+ 0x3b, 0x6b, 0x9b, 0x96, 0x5d, 0x10, 0xca, 0x24, 0x20, 0xe4, 0x82, 0xbd,
+ 0xa1, 0x36, 0x00, 0x34, 0x39, 0xc5, 0x96, 0x6d, 0xda, 0xe9, 0x1f, 0xd0,
+ 0xda, 0x39, 0x85, 0x99, 0x11, 0xcc, 0xca, 0x96, 0x81, 0x59, 0xf7, 0x87,
+ 0x4b, 0x76, 0x6e, 0x87, 0x37, 0x37, 0x37, 0x43, 0x5c, 0x38, 0xe4, 0xe4,
+ 0x48, 0x25, 0xc5, 0xa8, 0x85, 0x11, 0x4d, 0x76, 0x25, 0x9b, 0x9c, 0x60,
+ 0x22, 0x61, 0x7c, 0xc3, 0xcb, 0x8f, 0xaa, 0x26, 0x79, 0x43, 0x25, 0x7b,
+ 0x42, 0x5c, 0xf4, 0x9a, 0x94, 0xce, 0xc9, 0x74, 0x48, 0xc3, 0x51, 0x47,
+ 0x54, 0xe4, 0xf6, 0xb9, 0xb5, 0x00, 0x61, 0x6a, 0xda, 0x64, 0x28, 0x51,
+ 0x37, 0x9f, 0x58, 0x1c, 0x24, 0xc3, 0x6f, 0x93, 0x8d, 0x57, 0xb2, 0xda,
+ 0x73, 0xf3, 0xc4, 0x41, 0x7b, 0x2d, 0xfc, 0x70, 0x18, 0xcc, 0x31, 0xef,
+ 0x6e, 0x3c, 0x0c, 0x21, 0xb1, 0xf7, 0x22, 0x53, 0x13, 0x15, 0x97, 0x35,
+ 0xd3, 0x44, 0x9c, 0x75, 0x48, 0x7b, 0x61, 0xb7, 0x16, 0xc3, 0x9a, 0xd1,
+ 0xd2, 0xd3, 0x5a, 0x1a, 0xee, 0x4c, 0xf8, 0x86, 0xaf, 0xb9, 0x8e, 0x55,
+ 0x7a, 0x73, 0xff, 0x1d, 0xf7, 0x6e, 0xa2, 0x50, 0xef, 0x9c, 0x5c, 0x5d,
+ 0x1e, 0xec, 0x30, 0xfc, 0x3b, 0x36, 0xcf, 0x32, 0x32, 0x53, 0x69, 0x77,
+ 0xe1, 0xea, 0xa5, 0xd8, 0x30, 0x15, 0xbd, 0xf4, 0xab, 0x35, 0xa5, 0x66,
+ 0xce, 0x29, 0xec, 0x56, 0xd1, 0x8a, 0x7c, 0x74, 0xd0, 0x4b, 0x69, 0x59,
+ 0x96, 0xaa, 0x1e, 0xc0, 0x68, 0xdc, 0xea, 0x06, 0xf6, 0x72, 0x0a, 0x2d,
+ 0xb3, 0x63, 0xcf, 0x5b, 0xa6, 0x00, 0xdd, 0xc6, 0x32, 0x38, 0x39, 0xce,
+ 0x81, 0xab, 0xaa, 0x18, 0x64, 0xe2, 0xb2, 0xca, 0x2a, 0x10, 0x3a, 0x25,
+ 0xba, 0x0f, 0x35, 0x4b, 0x39, 0x26, 0xac, 0x0d, 0x43, 0x79, 0xf5, 0xcd,
+ 0x11, 0x25, 0x6c, 0x1b, 0x46, 0x5a, 0x08, 0x4e, 0x03, 0xcf, 0x9f, 0x3b,
+ 0x1b, 0x59, 0xa3, 0xf6, 0x12, 0xac, 0x84, 0xab, 0x1e, 0xd3, 0x24, 0x86,
+ 0x73, 0xaa, 0x36, 0x47, 0xa2, 0xc6, 0x85, 0xe4, 0xa5, 0x8a, 0x8d, 0x20,
+ 0x97, 0xd7, 0x86, 0x77, 0x53, 0x57, 0x05, 0x10, 0xdd, 0x2f, 0xfa, 0xba,
+ 0xe2, 0x89, 0xa4, 0xb5, 0x44, 0x70, 0x49, 0x59, 0x0b, 0x32, 0xc4, 0x1d,
+ 0xbd, 0x72, 0xa7, 0xa8, 0x2c, 0xcc, 0x7b, 0x93, 0xcf, 0xc7, 0x1b, 0xb9,
+ 0xd1, 0x99, 0x74, 0x3c, 0x29, 0x76, 0xeb, 0x32, 0xdf, 0x63, 0xc0, 0xe5,
+ 0x56, 0xf0, 0xa5, 0xc5, 0x3c, 0xb7, 0xaa, 0xea, 0xc1, 0xcd, 0xfd, 0x9f,
+ 0x90, 0x50, 0x24, 0x77, 0x0d, 0xcf, 0x83, 0xe6, 0xa1, 0x25, 0x91, 0xfe,
+ 0x68, 0x8a, 0xd6, 0x27, 0x09, 0xaf, 0xf1, 0xe1, 0x60, 0xff, 0x7d, 0x09,
+ 0x6d, 0xe9, 0x2b, 0x71, 0x54, 0x21, 0xd5, 0xbd, 0xf6, 0xac, 0x11, 0xa9,
+ 0x87, 0xa5, 0xb9, 0x6b, 0x19, 0x10, 0xb6, 0x21, 0x3e, 0x1c, 0x47, 0x38,
+ 0xbd, 0xdd, 0x63, 0x8a, 0x03, 0xba, 0x7c, 0xcd, 0xdd, 0xc2, 0xfe, 0xad,
+ 0xbb, 0x79, 0x5f, 0xde, 0xbf, 0x7b, 0xbf, 0x74, 0xfb, 0xd6, 0xef, 0x1e,
+ 0x77, 0x69, 0xd0, 0x44, 0xd9, 0x2f, 0x3d, 0x07, 0x1d, 0x25, 0x7b, 0xb0,
+ 0xf5, 0x65, 0x1d, 0x75, 0x6d, 0x2e, 0xe3, 0x19, 0x99, 0x5f, 0xfe, 0x56,
+ 0xa7, 0x4e, 0xc4, 0x48, 0x16, 0x3d, 0x26, 0x1f, 0x1f, 0x8e, 0xc3, 0x8a,
+ 0x74, 0xf6, 0x3e, 0xbc, 0xa2, 0xe8, 0xe1, 0x34, 0x82, 0xc0, 0x14, 0x4f,
+ 0x1b, 0x26, 0xe6, 0x09, 0xa5, 0x79, 0x0e, 0xe3, 0xc3, 0x69, 0xad, 0x9f,
+ 0x28, 0xe2, 0xc1, 0xfa, 0xbe, 0x52, 0xc1, 0xff, 0xf0, 0xc5, 0x51, 0x5a,
+ 0x91, 0xeb, 0x0c, 0xe8, 0x67, 0x84, 0x70, 0x08, 0x66, 0x2b, 0xf4, 0x1b,
+ 0xea, 0xf5, 0x11, 0xa4, 0x47, 0xee, 0x14, 0xa5, 0x2a, 0xc1, 0xf6, 0xa0,
+ 0xbd, 0x61, 0x40, 0xb3, 0x23, 0x61, 0xa0, 0xa7, 0x9c, 0xf7, 0x9e, 0xb1,
+ 0x9e, 0x1d, 0xba, 0x2f, 0x44, 0xcf, 0xee, 0xff, 0x4b, 0xeb, 0x23, 0x7a,
+ 0x76, 0x64, 0x80, 0x08, 0x43, 0xcd, 0x50, 0xdd, 0x94, 0x57, 0x9f, 0x50,
+ 0x41, 0x02, 0x44, 0x7c, 0xcf, 0xec, 0x08, 0x60, 0x00, 0x4a, 0x11, 0xe2,
+ 0xad, 0x73, 0x41, 0x04, 0x65, 0x34, 0xf7, 0x2f, 0x9d, 0x32, 0x33, 0xc4,
+ 0x22, 0x87, 0x42, 0xb2, 0x23, 0x22, 0xc2, 0x35, 0x94, 0x6a, 0x29, 0x33,
+ 0x4e, 0x94, 0x01, 0xf9, 0xf5, 0x8b, 0x46, 0x85, 0x50, 0x15, 0xd9, 0xde,
+ 0x92, 0x94, 0x7b, 0x9f, 0xb7, 0x24, 0xa5, 0x7b, 0x67, 0x9d, 0x8c, 0x1c,
+ 0x67, 0x9c, 0x90, 0xe6, 0x3b, 0x30, 0xe9, 0x25, 0x2e, 0xa4, 0x46, 0xbf,
+ 0x8e, 0x30, 0xb5, 0x09, 0xaf, 0x06, 0x75, 0xc5, 0x9c, 0x5b, 0xe4, 0x95,
+ 0x47, 0x52, 0x82, 0x39, 0xa2, 0x66, 0x62, 0x1d, 0x25, 0x93, 0xaa, 0xbc,
+ 0xa9, 0x49, 0x1d, 0x55, 0x03, 0x35, 0xe5, 0x14, 0xd8, 0xab, 0xa0, 0xea,
+ 0xd9, 0x6c, 0xef, 0xdc, 0x42, 0xbd, 0x7e, 0x7b, 0xfe, 0xf6, 0x98, 0xfb,
+ 0x37, 0x70, 0x01, 0x2e, 0xea, 0x8c, 0x64, 0xce, 0xab, 0xc9, 0xc2, 0x58,
+ 0xd2, 0x46, 0x3b, 0x69, 0x98, 0x95, 0x29, 0x77, 0x0c, 0xaa, 0x0b, 0x28,
+ 0xa4, 0x27, 0x01, 0xe1, 0x65, 0x2c, 0x3e, 0x23, 0x8a, 0xa4, 0x07, 0x35,
+ 0xe5, 0x69, 0xc0, 0xbf, 0x5c, 0xd7, 0x35, 0x76, 0x32, 0x65, 0xc4, 0x90,
+ 0x1e, 0xf5, 0x06, 0x47, 0x81, 0x47, 0x82, 0xdb, 0xe7, 0xa9, 0x69, 0xd4,
+ 0x66, 0x8c, 0x50, 0xa3, 0xad, 0x87, 0x06, 0x5a, 0x97, 0xed, 0x31, 0x42,
+ 0xc0, 0x58, 0x69, 0x5b, 0xd3, 0x0a, 0x2a, 0x67, 0xad, 0xe6, 0xe5, 0xba,
+ 0x85, 0xf8, 0xca, 0x17, 0xf4, 0x10, 0xe8, 0x43, 0x12, 0x48, 0x5a, 0x55,
+ 0x70, 0xe6, 0xb1, 0x56, 0x3d, 0x88, 0xe4, 0xdc, 0x8b, 0x42, 0xa2, 0xde,
+ 0x7c, 0x1b, 0xda, 0x6c, 0x99, 0x7a, 0xda, 0x16, 0x01, 0x63, 0x7b, 0x37,
+ 0x38, 0xa2, 0x24, 0x32, 0x08, 0x15, 0x55, 0x73, 0xd3, 0x69, 0x1a, 0x62,
+ 0x33, 0xa3, 0x53, 0xd7, 0xaf, 0x94, 0x9c, 0xe3, 0x81, 0x7a, 0x17, 0x55,
+ 0xb0, 0x5d, 0xcf, 0x90, 0xda, 0xb5, 0x89, 0x50, 0x7b, 0x99, 0xb0, 0xb8,
+ 0x08, 0x7d, 0x8b, 0xfa, 0x44, 0x94, 0x6d, 0x7f, 0x57, 0xe8, 0x7f, 0x14,
+ 0xff, 0xd7, 0xc0, 0x0b, 0xaf, 0xe5, 0xf0, 0x40, 0xf9, 0xf1, 0x42, 0x17,
+ 0x59, 0x5f, 0x64, 0xd5, 0x25, 0x97, 0x21, 0x30, 0xea, 0x6b, 0x14, 0xa8,
+ 0x22, 0x4d, 0x3c, 0x20, 0xb6, 0x24, 0xf9, 0x5f, 0x43, 0x96, 0xa8, 0xe4,
+ 0xaa, 0x5a, 0xa1, 0xb8, 0x55, 0xfc, 0xe9, 0x9b, 0xc3, 0x19, 0xb3, 0x95,
+ 0x59, 0x5a, 0x98, 0x9d, 0x30, 0x37, 0x36, 0xcc, 0x8f, 0x99, 0xcf, 0xbf,
+ 0x9c, 0x97, 0xab, 0xfa, 0x6e, 0x33, 0x91, 0x96, 0x3d, 0xd2, 0xe5, 0xa2,
+ 0x91, 0x5c, 0x1e, 0x9c, 0xa5, 0x39, 0xdf, 0x55, 0xf1, 0x51, 0x85, 0x22,
+ 0x2a, 0x15, 0x6a, 0x76, 0xd4, 0x76, 0x86, 0xdb, 0xf4, 0x3e, 0xf6, 0xbf,
+ 0xfc, 0xb1, 0xa3, 0xbb, 0x4c, 0xee, 0x7f, 0x36, 0x9c, 0x1f, 0x66, 0x39,
+ 0xbb, 0x90, 0x4c, 0xcc, 0x6c, 0x4e, 0x5a, 0x91, 0x3a, 0x3b, 0x20, 0x84,
+ 0x07, 0x23, 0xed, 0x6a, 0xc8, 0xc1, 0xa5, 0x6e, 0x10, 0xbf, 0xe9, 0x29,
+ 0x3e, 0x71, 0x92, 0x87, 0x03, 0x4a, 0x0e, 0x1c, 0x8f, 0x51, 0x4a, 0x6c,
+ 0x8b, 0x1b, 0xbf, 0xca, 0x6d, 0x94, 0x9c, 0x9a, 0xfd, 0x0a, 0xd0, 0x24,
+ 0x10, 0xc9, 0xb6, 0xc3, 0xa5, 0x3e, 0xae, 0xa9, 0xff, 0x13, 0xca, 0x2a,
+ 0xa7, 0x4a, 0x81, 0xa4, 0x65, 0x99, 0x07, 0x96, 0x26, 0x59, 0xea, 0x54,
+ 0x7e, 0xa2, 0xc6, 0xbc, 0x75, 0xba, 0x03, 0x48, 0x1d, 0xc8, 0x1d, 0x48,
+ 0x6c, 0x50, 0x6b, 0x98, 0xc3, 0x16, 0xd6, 0x26, 0xfe, 0xaa, 0xaf, 0x18,
+ 0x0d, 0xbb, 0x11, 0x63, 0x01, 0xde, 0x95, 0xa7, 0x84, 0x3f, 0x8f, 0xa3,
+ 0x44, 0x42, 0x93, 0x9c, 0x51, 0xba, 0x26, 0x1b, 0xcd, 0xbf, 0xd9, 0x9e,
+ 0xac, 0x71, 0x06, 0x57, 0x57, 0x00, 0xf5, 0xbb, 0x5f, 0x1d, 0x3a, 0xad,
+ 0x63, 0x80, 0xfc, 0xfa, 0x11, 0xf9, 0x1c, 0xa8, 0xf3, 0x2d, 0x6b, 0x7a,
+ 0xc3, 0x73, 0xfa, 0x09, 0x3b, 0x10, 0x87, 0x11, 0xf2, 0x69, 0x59, 0x80,
+ 0xd9, 0x3c, 0xbb, 0xe4, 0x25, 0xbf, 0x38, 0x3e, 0xfc, 0xfe, 0xf0, 0x38,
+ 0x10, 0x6d, 0xdf, 0x8c, 0xc7, 0x3b, 0x1f, 0xb3, 0x6a, 0x42, 0xfd, 0x51,
+ 0xb1, 0x3c, 0xb8, 0x2b, 0xf1, 0xa4, 0x4d, 0xc3, 0xf2, 0x38, 0xbe, 0x76,
+ 0xb4, 0x23, 0xfe, 0x4b, 0x56, 0x55, 0x98, 0xd4, 0x21, 0x9f, 0x14, 0xb4,
+ 0x75, 0x2a, 0x0b, 0x92, 0x7c, 0x3f, 0x92, 0x5f, 0xd3, 0x2a, 0x9b, 0x71,
+ 0xfb, 0xd0, 0x30, 0xd3, 0x8f, 0x00, 0x36, 0xd0, 0x22, 0x03, 0xc7, 0xcc,
+ 0xd9, 0xde, 0x14, 0x64, 0xb2, 0x8b, 0x08, 0xde, 0x58, 0x52, 0x11, 0x7b,
+ 0xf2, 0x5a, 0xbe, 0x59, 0xe3, 0x66, 0x60, 0x97, 0x18, 0x5d, 0x8d, 0xed,
+ 0x88, 0x93, 0xef, 0x86, 0x2f, 0xc7, 0xc3, 0xd7, 0x87, 0xc7, 0x87, 0xdf,
+ 0xbc, 0x3c, 0x3f, 0x64, 0x50, 0x71, 0x45, 0x1a, 0x8e, 0x2b, 0x22, 0x56,
+ 0x2e, 0x7f, 0x27, 0x1b, 0xc3, 0x32, 0x1b, 0xa8, 0xf4, 0xe8, 0x9c, 0x4c,
+ 0xfd, 0x51, 0x1c, 0xe2, 0x69, 0x0a, 0xd3, 0xa5, 0x69, 0x35, 0x30, 0xee,
+ 0x66, 0xa3, 0x19, 0x61, 0x25, 0x53, 0x0d, 0x56, 0x90, 0xce, 0x6f, 0xd0,
+ 0x23, 0xed, 0x7d, 0x81, 0x74, 0xf7, 0xdc, 0x56, 0x74, 0xf2, 0xea, 0x7d,
+ 0xaf, 0x8d, 0xdb, 0xd9, 0xd6, 0x01, 0x13, 0x40, 0x7c, 0x5c, 0x5f, 0xd1,
+ 0x62, 0x6c, 0x0a, 0xf1, 0xbe, 0xa6, 0x07, 0x3b, 0x48, 0xdf, 0x0e, 0xa0,
+ 0x9c, 0xfa, 0xb3, 0xc8, 0xef, 0x22, 0xb8, 0x21, 0x74, 0x67, 0xea, 0xe9,
+ 0x55, 0xb6, 0xb0, 0x88, 0x58, 0xc8, 0x20, 0xa0, 0x58, 0x35, 0x57, 0x40,
+ 0x0a, 0x72, 0x0f, 0xb1, 0x81, 0x49, 0x46, 0x36, 0x2f, 0xc5, 0xcd, 0xae,
+ 0x03, 0xce, 0x4f, 0x79, 0x39, 0xc0, 0xfd, 0x47, 0x38, 0x04, 0x99, 0x35,
+ 0x54, 0xe6, 0x3b, 0xa2, 0x1c, 0x40, 0x2f, 0xb4, 0x1f, 0x86, 0xf2, 0xa5,
+ 0x91, 0x5f, 0x57, 0x2d, 0xb0, 0x38, 0xe2, 0x16, 0xf4, 0xbc, 0x24, 0xf7,
+ 0x16, 0xfd, 0x88, 0xfb, 0x88, 0x88, 0x5e, 0x8c, 0x19, 0xfe, 0x12, 0x3f,
+ 0x54, 0xd7, 0x11, 0x45, 0x54, 0xe5, 0xca, 0x1f, 0xa9, 0x0a, 0x27, 0x96,
+ 0x59, 0xbd, 0x86, 0x69, 0xb8, 0xc9, 0x32, 0x73, 0x60, 0x7c, 0xf3, 0x99,
+ 0x1c, 0x0e, 0xfd, 0x48, 0xba, 0x01, 0x8c, 0x5c, 0x6d, 0x46, 0xd4, 0xdd,
+ 0xee, 0xb1, 0x8c, 0x56, 0xcb, 0x00, 0x40, 0xb5, 0xeb, 0x5f, 0xc3, 0xc6,
+ 0x0e, 0xb6, 0x1c, 0x6e, 0x98, 0x2d, 0x03, 0xdc, 0xec, 0xad, 0x37, 0x0a,
+ 0x83, 0x6f, 0xf5, 0x3f, 0xbf, 0xed, 0x99, 0xd7, 0xa5, 0xe8, 0xf0, 0xf4,
+ 0x8c, 0x1b, 0x9d, 0x1f, 0xe3, 0x2f, 0x12, 0x1d, 0xab, 0x63, 0x30, 0x74,
+ 0xd2, 0x84, 0x03, 0x09, 0x23, 0x19, 0x85, 0x57, 0x6c, 0xc0, 0x5b, 0x13,
+ 0x06, 0x39, 0x47, 0x54, 0xf0, 0xce, 0xe5, 0x3a, 0xd0, 0x06, 0x07, 0x09,
+ 0xfa, 0xb6, 0x39, 0x2a, 0x4d, 0x05, 0x73, 0x10, 0xa4, 0x20, 0x9a, 0x05,
+ 0x27, 0xba, 0x6a, 0x14, 0xe3, 0x04, 0xbf, 0x84, 0x52, 0x28, 0xe4, 0xd3,
+ 0xc3, 0x79, 0x5d, 0xd1, 0x13, 0x86, 0xc4, 0x5b, 0x49, 0x45, 0x6d, 0x55,
+ 0x53, 0x33, 0x8f, 0x91, 0x5b, 0x27, 0x7f, 0x82, 0x9d, 0xca, 0x84, 0x7e,
+ 0x19, 0xc6, 0x2c, 0xa8, 0x86, 0xdc, 0xea, 0xfd, 0x9a, 0x3c, 0xce, 0xc9,
+ 0xb1, 0x36, 0x29, 0x7e, 0x20, 0xe8, 0x40, 0x12, 0x17, 0x46, 0x56, 0x7f,
+ 0x59, 0xf8, 0xfd, 0xbc, 0x5a, 0x36, 0x42, 0xad, 0xd9, 0x62, 0xd9, 0x9d,
+ 0x84, 0xb6, 0x59, 0x69, 0xbb, 0x90, 0x10, 0x62, 0x4a, 0xb8, 0xae, 0x64,
+ 0x7e, 0x4c, 0x58, 0xcb, 0xa0, 0xcc, 0xbb, 0xab, 0xb4, 0x88, 0xdc, 0x39,
+ 0xb3, 0xf1, 0xb6, 0x3d, 0x19, 0x2d, 0x54, 0x8e, 0x2d, 0xa2, 0x68, 0x83,
+ 0x36, 0xba, 0xe8, 0x52, 0xc6, 0x18, 0x33, 0x0c, 0x2c, 0x47, 0xec, 0x41,
+ 0xa6, 0xc2, 0x9b, 0x43, 0x3d, 0x7a, 0x84, 0xde, 0xca, 0x18, 0x55, 0x31,
+ 0x77, 0xf1, 0x22, 0x22, 0x2d, 0x12, 0xec, 0x4b, 0xf4, 0xb3, 0xbe, 0x73,
+ 0xaa, 0x81, 0xf1, 0xa0, 0x6d, 0xd1, 0xec, 0xb7, 0x5d, 0x24, 0xc3, 0x3a,
+ 0x27, 0x09, 0x7c, 0xb3, 0xab, 0xdd, 0x52, 0x1b, 0x2e, 0x8c, 0x30, 0xdf,
+ 0xa6, 0xe9, 0xc2, 0x55, 0x63, 0xa3, 0xa6, 0xa0, 0x9d, 0xe0, 0xfb, 0xaf,
+ 0x69, 0x72, 0xa4, 0x75, 0xd2, 0x1b, 0x74, 0xe9, 0x01, 0x01, 0x74, 0xa9,
+ 0xfd, 0x96, 0x98, 0x96, 0x27, 0x99, 0xf9, 0x62, 0x8e, 0x7e, 0x74, 0x2d,
+ 0x5f, 0x7d, 0xf7, 0xfb, 0xb5, 0xa1, 0xbf, 0xe9, 0x95, 0x9a, 0x52, 0x78,
+ 0x71, 0x01, 0xd5, 0xc0, 0xeb, 0xe3, 0xe8, 0xb5, 0x83, 0x1a, 0x9e, 0x92,
+ 0x6c, 0x47, 0xc8, 0x91, 0x32, 0x10, 0x93, 0xb2, 0x0a, 0xcb, 0x54, 0xa7,
+ 0x16, 0xf2, 0x48, 0x1f, 0x4d, 0xeb, 0xeb, 0xf8, 0x0d, 0xaf, 0xaf, 0xa3,
+ 0x37, 0x5c, 0xff, 0xa0, 0x9b, 0xee, 0x75, 0xd7, 0xec, 0xbb, 0xeb, 0xe3,
+ 0xef, 0x7b, 0xb0, 0x1b, 0xbc, 0x1b, 0xae, 0xab, 0x23, 0x6a, 0xf7, 0xee,
+ 0x38, 0x5f, 0x72, 0x39, 0x23, 0x7b, 0xcd, 0xe5, 0x9e, 0x47, 0x7d, 0xf8,
+ 0x7e, 0x53, 0x5c, 0xbe, 0xe7, 0xe6, 0xfb, 0x72, 0xb9, 0x4f, 0x5f, 0x8e,
+ 0xbf, 0xef, 0x5c, 0x6b, 0xef, 0x22, 0xc7, 0x90, 0x2e, 0xa8, 0x55, 0x65,
+ 0xa5, 0xf0, 0xb7, 0x18, 0x2b, 0x4a, 0xef, 0xf5, 0xf5, 0x43, 0xe8, 0xdd,
+ 0x4c, 0x24, 0xa0, 0xf7, 0x60, 0x8f, 0xd7, 0xd1, 0xbb, 0x7f, 0x50, 0x2d,
+ 0xf9, 0x93, 0x25, 0x3e, 0xc5, 0x17, 0xdc, 0xd2, 0x1a, 0x65, 0x18, 0x11,
+ 0x52, 0x27, 0x4a, 0x47, 0xb4, 0x8f, 0x48, 0x3b, 0x4c, 0xf7, 0xa3, 0x79,
+ 0xfe, 0x12, 0x42, 0xa7, 0x17, 0x02, 0x3a, 0xd7, 0x13, 0xfd, 0xc5, 0x84,
+ 0x2e, 0x17, 0x24, 0xa0, 0x73, 0xb2, 0x5a, 0x4f, 0x07, 0x1e, 0x81, 0x7b,
+ 0x54, 0xeb, 0x97, 0x6a, 0x47, 0x76, 0xc8, 0xe2, 0x7e, 0x38, 0xf1, 0xeb,
+ 0x50, 0x17, 0x22, 0x28, 0x1f, 0x03, 0x5b, 0x0f, 0x5b, 0x4d, 0x43, 0x97,
+ 0xbb, 0xad, 0xce, 0xf6, 0x0b, 0x14, 0xc8, 0xda, 0x92, 0x94, 0x66, 0x63,
+ 0xff, 0x40, 0x66, 0x93, 0x05, 0xef, 0xd7, 0xfc, 0xfb, 0x3d, 0x25, 0xdb,
+ 0xb0, 0x4f, 0x3a, 0x89, 0x58, 0x05, 0x79, 0x9d, 0x21, 0x17, 0x83, 0xd0,
+ 0xc0, 0xba, 0xf7, 0x14, 0x6a, 0x1e, 0xe9, 0x03, 0x50, 0x54, 0x86, 0xc6,
+ 0x08, 0x09, 0x53, 0x95, 0xdb, 0xa1, 0xe0, 0x86, 0x40, 0x62, 0x3d, 0xab,
+ 0x0f, 0xb5, 0x84, 0x50, 0x75, 0x25, 0x18, 0x91, 0x26, 0x52, 0xc2, 0x08,
+ 0xc7, 0x3d, 0x89, 0xde, 0x48, 0xd1, 0x6b, 0x14, 0xe8, 0xac, 0xdd, 0x75,
+ 0xa5, 0x29, 0x5b, 0x0e, 0xb3, 0xa7, 0x1d, 0x30, 0xe1, 0x59, 0x51, 0x0f,
+ 0x5d, 0xb3, 0xf4, 0x17, 0xf6, 0xaf, 0x81, 0x7d, 0xf1, 0xfa, 0xdd, 0xb8,
+ 0xa3, 0x52, 0xd4, 0x19, 0x17, 0x70, 0x5c, 0x12, 0xdf, 0x30, 0xbf, 0xb7,
+ 0x45, 0x57, 0xb5, 0x6b, 0x4f, 0x28, 0x43, 0x86, 0x20, 0xf6, 0xe6, 0x13,
+ 0xa3, 0x4e, 0xd5, 0xaa, 0x94, 0x0a, 0xaf, 0xc8, 0xc4, 0xa3, 0xe8, 0x35,
+ 0xd6, 0xe0, 0x66, 0x27, 0x65, 0xe7, 0xf0, 0x0e, 0xc5, 0xa0, 0x86, 0x58,
+ 0x40, 0x60, 0x9e, 0xda, 0x27, 0x79, 0xc9, 0xb0, 0xe8, 0x02, 0x04, 0x66,
+ 0xdb, 0x4c, 0x41, 0x35, 0xb4, 0x83, 0xc6, 0x42, 0x4d, 0x5b, 0x02, 0x5d,
+ 0x24, 0x79, 0x5d, 0xdb, 0xd1, 0x2d, 0xe6, 0x3d, 0xd6, 0x2d, 0x5c, 0x5e,
+ 0x3f, 0x1e, 0xe2, 0xf1, 0x44, 0x8d, 0x45, 0xfe, 0xe1, 0x53, 0xfa, 0xe1,
+ 0xa8, 0xbb, 0xd1, 0x41, 0x99, 0x8b, 0x34, 0x33, 0xb5, 0x9e, 0xd3, 0x55,
+ 0x31, 0x43, 0xf7, 0x0b, 0x4c, 0x5b, 0x7b, 0x19, 0x00, 0xb0, 0xd0, 0xb5,
+ 0x8f, 0xb1, 0xb8, 0x44, 0x86, 0x84, 0x82, 0x82, 0xae, 0x8a, 0x72, 0xf8,
+ 0xdd, 0xa1, 0x3f, 0x7a, 0x14, 0x39, 0x74, 0x3b, 0xe3, 0x17, 0xb2, 0xcc,
+ 0x07, 0x1c, 0xf9, 0x24, 0xe7, 0x36, 0x53, 0x2f, 0xf2, 0xe5, 0x50, 0xdf,
+ 0x62, 0xe1, 0xb1, 0x48, 0x3f, 0x8a, 0x50, 0x7f, 0x4c, 0xa4, 0x10, 0x3a,
+ 0x09, 0xb4, 0xf3, 0xb1, 0x1f, 0xa7, 0xe2, 0x27, 0x85, 0x66, 0x44, 0xd3,
+ 0x6a, 0x32, 0x57, 0x9c, 0x4e, 0xb8, 0xac, 0xfc, 0x9d, 0x58, 0x5d, 0x96,
+ 0x66, 0x50, 0xfb, 0x7e, 0x18, 0xad, 0xc1, 0xa0, 0x99, 0xd8, 0x77, 0xef,
+ 0x3d, 0x3f, 0x47, 0x0f, 0xeb, 0xce, 0x4f, 0xf7, 0xec, 0xbf, 0xc7, 0xf9,
+ 0x3d, 0xfd, 0x24, 0xe7, 0xf7, 0xf4, 0xbf, 0xcd, 0xf9, 0x3d, 0xfd, 0xe7,
+ 0xcf, 0xef, 0x71, 0xf7, 0xfc, 0x9e, 0xfe, 0x77, 0x39, 0x3f, 0x6d, 0x73,
+ 0xa6, 0xa7, 0x97, 0x05, 0xe7, 0x37, 0x96, 0xd4, 0x0e, 0xc5, 0xc7, 0xc3,
+ 0x66, 0xeb, 0x5b, 0x1c, 0x48, 0x91, 0x64, 0x44, 0xf6, 0x54, 0x6b, 0x3e,
+ 0x2c, 0x23, 0x34, 0xf6, 0xf4, 0x0d, 0x91, 0xde, 0x57, 0x3a, 0xe4, 0xd1,
+ 0x69, 0x62, 0x3f, 0xef, 0x1d, 0x82, 0x43, 0xbb, 0x12, 0xf7, 0x6e, 0xd4,
+ 0x8d, 0x5c, 0xc3, 0xb7, 0x68, 0x36, 0x80, 0x4b, 0x20, 0x6b, 0x57, 0xb8,
+ 0x1b, 0x03, 0xb4, 0x32, 0x9b, 0x77, 0xf0, 0x02, 0xfb, 0x35, 0xe4, 0xc7,
+ 0xff, 0x18, 0x2d, 0x48, 0xa3, 0xe6, 0xc9, 0x6e, 0x52, 0xb1, 0xd0, 0x81,
+ 0xb7, 0x75, 0x0f, 0x3e, 0xb6, 0xbe, 0xa6, 0x5b, 0x7a, 0x84, 0xd3, 0xe1,
+ 0xfd, 0x47, 0x56, 0x5e, 0x11, 0xd6, 0xce, 0x8b, 0xf7, 0x67, 0xa1, 0xef,
+ 0xcd, 0x2c, 0xd5, 0x96, 0xe6, 0x39, 0x88, 0x42, 0x73, 0x5e, 0x43, 0x18,
+ 0xf7, 0x43, 0x42, 0x6b, 0x37, 0xd7, 0xf1, 0xe4, 0xdb, 0x6d, 0xcf, 0x0b,
+ 0x44, 0x91, 0x85, 0x32, 0x72, 0xd1, 0xb8, 0x34, 0x56, 0xab, 0xbf, 0xeb,
+ 0x81, 0x7f, 0xc2, 0x2e, 0x2f, 0x3d, 0x73, 0x80, 0xd8, 0xec, 0x1c, 0x49,
+ 0xa4, 0xa8, 0xb6, 0x0a, 0xda, 0x4c, 0x42, 0x19, 0xcc, 0x6b, 0x01, 0x6f,
+ 0x03, 0xd4, 0x85, 0x4a, 0x42, 0x9a, 0xd8, 0x27, 0x6c, 0x1e, 0xf3, 0x9a,
+ 0x74, 0xc1, 0xd5, 0x62, 0x29, 0xe5, 0xbd, 0xf7, 0x94, 0x37, 0x92, 0x89,
+ 0xbd, 0x9d, 0xfc, 0x40, 0xb5, 0x8b, 0xec, 0x63, 0x97, 0x52, 0x1f, 0xb5,
+ 0xba, 0x6d, 0x7d, 0x83, 0x06, 0xb0, 0x7a, 0xf0, 0xc7, 0xa2, 0x78, 0x50,
+ 0x9d, 0xca, 0x7d, 0xae, 0x49, 0x51, 0x10, 0x73, 0xf0, 0x40, 0x4f, 0x27,
+ 0x96, 0x52, 0x03, 0xde, 0x67, 0xf9, 0x68, 0x14, 0x03, 0x1b, 0xca, 0x04,
+ 0x97, 0x39, 0x61, 0xd2, 0x0c, 0xe3, 0x67, 0x5e, 0x37, 0x43, 0x8d, 0xa4,
+ 0xd6, 0xa9, 0x76, 0xd1, 0x62, 0x9d, 0x3d, 0x01, 0x2c, 0xc5, 0x32, 0xf4,
+ 0x55, 0x7b, 0x25, 0x4f, 0x80, 0x40, 0x67, 0x58, 0x6c, 0xa4, 0xe2, 0xda,
+ 0xd6, 0xbe, 0x4c, 0xee, 0xda, 0x94, 0x30, 0x9c, 0x84, 0x85, 0x6c, 0x9a,
+ 0x21, 0xcd, 0x2b, 0xfe, 0x37, 0x3a, 0xfc, 0x9e, 0xda, 0x08, 0xd6, 0xbc,
+ 0x7c, 0xcf, 0x43, 0x70, 0x53, 0xfc, 0xca, 0x8b, 0xd1, 0x67, 0xeb, 0x32,
+ 0xa3, 0x39, 0xe5, 0xf6, 0x2a, 0xf3, 0x8b, 0x89, 0x2d, 0xf8, 0x22, 0x07,
+ 0x07, 0xd8, 0xfd, 0x62, 0x16, 0x27, 0x09, 0xa2, 0x01, 0x54, 0x18, 0x81,
+ 0x05, 0xc8, 0x6e, 0x6d, 0x08, 0xb8, 0xd1, 0x4a, 0x40, 0x57, 0xb9, 0xe1,
+ 0x30, 0x61, 0xc1, 0xfc, 0xeb, 0x8a, 0x77, 0xbd, 0x84, 0x69, 0x9f, 0x2b,
+ 0x64, 0x97, 0x1c, 0x15, 0x5f, 0x97, 0x9c, 0xdb, 0xc1, 0x21, 0xe3, 0x56,
+ 0xda, 0x16, 0x89, 0x8c, 0x0c, 0xf3, 0xa2, 0xa9, 0xca, 0xe5, 0x5d, 0xf2,
+ 0x4d, 0x8a, 0x65, 0x91, 0x32, 0x9d, 0x66, 0x8b, 0xa0, 0x62, 0x8b, 0x9b,
+ 0x6b, 0x8b, 0x6e, 0xcb, 0x8d, 0xb6, 0x75, 0x85, 0xa4, 0x8d, 0xf3, 0xb6,
+ 0x18, 0x3e, 0x60, 0xf6, 0x0b, 0xe2, 0x57, 0xaa, 0x29, 0x38, 0x23, 0x79,
+ 0x3c, 0x3e, 0x0e, 0xcd, 0x27, 0x6d, 0xe9, 0xb3, 0xb6, 0x54, 0x9f, 0x46,
+ 0x1b, 0x76, 0x03, 0x12, 0x32, 0xf8, 0x8b, 0xe8, 0x65, 0x96, 0x75, 0x67,
+ 0x73, 0x85, 0xb2, 0x50, 0x04, 0xf5, 0x69, 0x75, 0xb7, 0x84, 0x49, 0x2e,
+ 0xb5, 0xa9, 0x7c, 0xf7, 0x30, 0x3f, 0x86, 0x3f, 0x5d, 0x5b, 0x0d, 0xfc,
+ 0xbe, 0xf6, 0x50, 0xc4, 0x49, 0x80, 0xc1, 0x17, 0x03, 0x38, 0x60, 0x60,
+ 0x3e, 0x89, 0x40, 0x03, 0xa7, 0x9f, 0x11, 0xc8, 0x49, 0x6f, 0x77, 0x2f,
+ 0xe9, 0xd9, 0xd5, 0xe9, 0x0b, 0x41, 0xbe, 0x1b, 0x2a, 0x76, 0x46, 0xef,
+ 0x01, 0x8a, 0x60, 0x6c, 0xab, 0x48, 0x95, 0x37, 0xa4, 0x98, 0xad, 0x2b,
+ 0xb8, 0x6c, 0xdb, 0x80, 0x14, 0xc0, 0x07, 0x45, 0x80, 0xb0, 0xc2, 0xc9,
+ 0x0f, 0x7b, 0xbb, 0xbb, 0xf7, 0x42, 0xe7, 0x88, 0x81, 0xb8, 0x16, 0x41,
+ 0x07, 0x3c, 0x8a, 0x63, 0x0a, 0xb6, 0xd4, 0x3b, 0xcd, 0xa5, 0x8e, 0xa7,
+ 0x0b, 0x36, 0x66, 0x3e, 0x69, 0x91, 0x6c, 0xdc, 0x15, 0x64, 0x5e, 0xc7,
+ 0x08, 0x53, 0x84, 0xa3, 0x63, 0x58, 0xd8, 0x21, 0xcd, 0xb1, 0x3e, 0x68,
+ 0xbd, 0x13, 0x6d, 0xa6, 0x8c, 0x09, 0xe1, 0x25, 0xd1, 0xfa, 0x46, 0xc9,
+ 0xd7, 0x77, 0xce, 0x54, 0xf6, 0x3c, 0x44, 0x34, 0x2b, 0xba, 0x61, 0x32,
+ 0xff, 0xd1, 0x3a, 0xbc, 0xa2, 0x38, 0x3c, 0xce, 0xbf, 0x31, 0x63, 0xa1,
+ 0x61, 0x0d, 0x03, 0x5a, 0xd6, 0x34, 0x2a, 0xa1, 0x6c, 0xc4, 0x7d, 0x44,
+ 0x76, 0xb5, 0x69, 0x1d, 0xb4, 0x17, 0xf2, 0x3a, 0x05, 0xb1, 0x50, 0x59,
+ 0x8b, 0x64, 0xdc, 0x06, 0x3b, 0x6a, 0x27, 0x67, 0x3e, 0x6b, 0x6b, 0x06,
+ 0xa8, 0x38, 0x1e, 0x52, 0x5d, 0x71, 0x17, 0x4c, 0x01, 0xa5, 0xc8, 0xe0,
+ 0x5d, 0x64, 0xd9, 0x97, 0x85, 0xe7, 0xf2, 0x00, 0xc8, 0x16, 0x27, 0xc4,
+ 0x68, 0x09, 0x52, 0x07, 0xbe, 0xd5, 0x67, 0xac, 0x8a, 0x39, 0xaf, 0x37,
+ 0x7d, 0x56, 0x7a, 0x90, 0x4e, 0xb6, 0xea, 0xac, 0xe3, 0x3b, 0x61, 0xe7,
+ 0x49, 0x88, 0x16, 0xc1, 0x89, 0xb5, 0xce, 0x31, 0xc7, 0xf5, 0xd3, 0x94,
+ 0x34, 0x40, 0xca, 0x17, 0x6b, 0x6b, 0x46, 0x49, 0x18, 0x24, 0xd2, 0x83,
+ 0x1b, 0x79, 0xd4, 0x7c, 0xca, 0x51, 0x8d, 0xd2, 0x39, 0xde, 0x19, 0x5b,
+ 0x92, 0x57, 0x52, 0x3b, 0x94, 0x34, 0x30, 0x6d, 0xee, 0x16, 0x66, 0x46,
+ 0xad, 0x6d, 0xc6, 0x54, 0xe8, 0x84, 0xf4, 0x0a, 0x97, 0xcd, 0x93, 0x00,
+ 0x6e, 0xa9, 0x57, 0xe4, 0x32, 0xe6, 0xe1, 0x2d, 0x30, 0x19, 0xdf, 0x49,
+ 0x2e, 0xe8, 0x86, 0x6b, 0x4a, 0x0a, 0x53, 0xa3, 0x41, 0x69, 0x60, 0x1a,
+ 0x26, 0x74, 0x38, 0x54, 0x19, 0xbe, 0xaa, 0xbc, 0xd0, 0xf4, 0xc6, 0x55,
+ 0x6e, 0x4e, 0xb5, 0xd8, 0x20, 0xbc, 0xc4, 0xd5, 0x84, 0x81, 0x38, 0x1b,
+ 0xfd, 0x68, 0xb0, 0xd8, 0xd5, 0xdc, 0x73, 0x87, 0xc6, 0x1b, 0x6c, 0xb7,
+ 0xe2, 0x4f, 0x83, 0xa4, 0x75, 0x21, 0x54, 0x89, 0xe3, 0xbc, 0x76, 0x57,
+ 0x93, 0xce, 0xe7, 0x16, 0x75, 0xa0, 0xba, 0xfa, 0x34, 0xdc, 0x7c, 0xea,
+ 0x49, 0x35, 0xf0, 0x1b, 0xc2, 0xb8, 0x7c, 0x97, 0x74, 0x01, 0xaf, 0x09,
+ 0x27, 0xc0, 0x60, 0x97, 0xe3, 0xaa, 0x4a, 0x65, 0x91, 0x4c, 0x22, 0x68,
+ 0xba, 0x92, 0xf1, 0x96, 0xde, 0x51, 0x31, 0x8e, 0xfd, 0x34, 0x51, 0x77,
+ 0x80, 0x8b, 0x06, 0x8c, 0xc0, 0x92, 0xb4, 0x6d, 0xa1, 0x63, 0x6c, 0xe1,
+ 0xb4, 0xca, 0x97, 0x0d, 0xa7, 0x01, 0x48, 0xce, 0xf1, 0x7d, 0x2a, 0xd8,
+ 0xe5, 0xbc, 0x9c, 0xa4, 0x7c, 0x47, 0x6c, 0xca, 0x8f, 0x3a, 0x19, 0x5b,
+ 0x50, 0xbd, 0x60, 0x6f, 0x20, 0xcf, 0x48, 0xab, 0x01, 0xb3, 0xe4, 0xe1,
+ 0x01, 0xf5, 0x45, 0x47, 0xf0, 0x71, 0xdd, 0x07, 0xed, 0x27, 0x18, 0x15,
+ 0x6f, 0x78, 0x31, 0x90, 0xdb, 0xab, 0xc5, 0xca, 0x94, 0x31, 0x55, 0x7b,
+ 0x77, 0x2a, 0x50, 0x83, 0x08, 0x5d, 0x60, 0xb6, 0xca, 0xda, 0x09, 0x54,
+ 0x9b, 0x12, 0x9a, 0x95, 0x66, 0x6e, 0x94, 0xc4, 0x63, 0x31, 0xfa, 0x25,
+ 0x04, 0x1a, 0x4d, 0x0e, 0x02, 0x34, 0xae, 0x24, 0xf3, 0x0c, 0x8c, 0xc2,
+ 0x7f, 0x43, 0x85, 0x0b, 0x05, 0xa4, 0x92, 0x9b, 0x9c, 0x26, 0xa5, 0x7a,
+ 0x7b, 0xc5, 0x78, 0x03, 0x21, 0xc5, 0x5f, 0xb0, 0x8e, 0x46, 0x1e, 0x43,
+ 0x3e, 0x93, 0x35, 0x3b, 0xe3, 0xe3, 0x6b, 0xef, 0xb7, 0x38, 0x9a, 0xfd,
+ 0x74, 0x5c, 0x3c, 0x11, 0x5b, 0xab, 0xa1, 0xc7, 0xc3, 0xa5, 0xbe, 0x65,
+ 0x88, 0x45, 0x8a, 0xc2, 0x52, 0x8a, 0xf5, 0x13, 0x64, 0xa4, 0x36, 0xb2,
+ 0x63, 0x5e, 0x10, 0x2f, 0x58, 0xc3, 0x4d, 0x41, 0xea, 0xd7, 0xfc, 0x8e,
+ 0x6a, 0x35, 0xf8, 0xcc, 0x49, 0x03, 0x15, 0x37, 0xbd, 0x12, 0x54, 0xd6,
+ 0x4c, 0xbd, 0x5f, 0xce, 0xb2, 0x74, 0x1e, 0xeb, 0x13, 0x81, 0x09, 0xc3,
+ 0x6d, 0xca, 0xac, 0x0d, 0xe8, 0x21, 0x85, 0x84, 0x29, 0x24, 0xf5, 0x98,
+ 0x93, 0xef, 0x0a, 0x29, 0x94, 0xd6, 0x19, 0xd2, 0xad, 0x8a, 0x98, 0x86,
+ 0xe8, 0x5c, 0x43, 0x0f, 0x50, 0x49, 0xed, 0x54, 0x0a, 0xf5, 0x09, 0x07,
+ 0xce, 0x55, 0xa6, 0x90, 0xee, 0xff, 0xf6, 0xd8, 0x3e, 0x40, 0x14, 0x40,
+ 0x21, 0xf3, 0xee, 0x70, 0xe2, 0xba, 0xe4, 0x72, 0x49, 0x12, 0x32, 0x5a,
+ 0xcd, 0x80, 0x89, 0x71, 0xda, 0x09, 0x98, 0xe4, 0xb6, 0xdc, 0x43, 0x4e,
+ 0x6e, 0x60, 0xce, 0xb1, 0x0c, 0x4f, 0xfa, 0x3a, 0xd3, 0x84, 0x21, 0xb2,
+ 0x2d, 0xf8, 0x00, 0x1a, 0x5b, 0x43, 0x8a, 0xd1, 0x84, 0xcf, 0x30, 0x93,
+ 0xd9, 0xdf, 0xef, 0x01, 0x15, 0x91, 0x0e, 0xe1, 0x42, 0x63, 0x74, 0xd9,
+ 0xeb, 0xf4, 0x22, 0x53, 0x3c, 0x51, 0x61, 0xdf, 0xe5, 0xd4, 0x6c, 0x21,
+ 0xc5, 0x45, 0x09, 0xab, 0x07, 0xda, 0x51, 0x60, 0xb4, 0x32, 0xd7, 0x04,
+ 0x97, 0xb4, 0x22, 0x17, 0x17, 0x41, 0xd8, 0x6d, 0x3d, 0xcf, 0x97, 0xea,
+ 0x13, 0x1e, 0x24, 0x99, 0x64, 0xf3, 0x00, 0xf8, 0x97, 0x4e, 0x65, 0x35,
+ 0x8c, 0x58, 0x43, 0xb6, 0x8d, 0xb9, 0xa0, 0xc2, 0xce, 0xa1, 0xf8, 0x6f,
+ 0x75, 0x46, 0x7f, 0xbc, 0xbb, 0x47, 0x93, 0x7d, 0xbc, 0xfb, 0x6c, 0xbb,
+ 0x2d, 0x95, 0xe7, 0x75, 0x36, 0xa4, 0x5c, 0xae, 0xb8, 0x76, 0x7a, 0xde,
+ 0xf1, 0xbf, 0x93, 0x26, 0x8a, 0x97, 0x24, 0x01, 0x6c, 0xb6, 0xaa, 0x34,
+ 0x2b, 0x12, 0xed, 0xfb, 0x60, 0x2d, 0xd6, 0x57, 0x00, 0x23, 0x0c, 0xa4,
+ 0xbc, 0x7b, 0x87, 0x93, 0x48, 0x20, 0x93, 0x78, 0x9f, 0x52, 0x7a, 0x55,
+ 0x5a, 0x83, 0xf1, 0x3e, 0xd0, 0x73, 0x30, 0x13, 0x39, 0x1b, 0x38, 0xd6,
+ 0xc8, 0x53, 0x8d, 0x3c, 0xae, 0x14, 0x92, 0x80, 0x59, 0xbb, 0xd1, 0xae,
+ 0xe5, 0x3b, 0x6f, 0x72, 0x63, 0xd9, 0x5f, 0x51, 0x83, 0xde, 0xba, 0x4e,
+ 0x2f, 0xb3, 0xb0, 0xee, 0xdb, 0x30, 0x24, 0x63, 0x32, 0x71, 0x03, 0xb9,
+ 0x8a, 0x30, 0xd9, 0x91, 0x91, 0xc5, 0xfb, 0x2e, 0x75, 0x1c, 0xd2, 0x5d,
+ 0x8e, 0x00, 0xc3, 0xdc, 0x32, 0x63, 0xf4, 0x92, 0xd7, 0x5e, 0xeb, 0xc3,
+ 0xbe, 0xce, 0x87, 0xe8, 0xc3, 0x45, 0xc8, 0x51, 0xdc, 0x15, 0x87, 0xdb,
+ 0xe2, 0xc4, 0xfa, 0x9d, 0x18, 0x55, 0xdb, 0x1c, 0xee, 0xc9, 0xd8, 0xb0,
+ 0x20, 0xd7, 0xa5, 0x97, 0x32, 0xe3, 0xcc, 0xcf, 0x7e, 0x34, 0xba, 0xe8,
+ 0xe8, 0xb9, 0xfd, 0xf1, 0xf6, 0xc3, 0x5a, 0x25, 0xee, 0x77, 0x74, 0x33,
+ 0xa4, 0xa8, 0x8a, 0xfb, 0x9f, 0x4c, 0x95, 0x2f, 0xf9, 0x1f, 0x3d, 0xee,
+ 0x07, 0x2a, 0xc5, 0x4c, 0x8e, 0xde, 0xbe, 0x24, 0xa4, 0x25, 0x07, 0x7c,
+ 0xec, 0x27, 0x73, 0xf9, 0xa5, 0x6b, 0xd4, 0x37, 0x12, 0xaa, 0x6a, 0x14,
+ 0xf7, 0xce, 0x42, 0xd5, 0x72, 0x62, 0x5d, 0x0b, 0x84, 0x9c, 0xc3, 0x60,
+ 0x73, 0xb4, 0xc6, 0xc2, 0x35, 0x30, 0x1c, 0xf2, 0x38, 0xe3, 0x36, 0x31,
+ 0xc9, 0xe6, 0x57, 0x9b, 0x91, 0x22, 0xb7, 0xcd, 0x17, 0x1e, 0xea, 0x76,
+ 0xed, 0x5a, 0x50, 0x6d, 0x7e, 0x81, 0x5c, 0x5d, 0x60, 0x8c, 0xf0, 0x37,
+ 0xe5, 0x0c, 0x38, 0xed, 0x54, 0x02, 0x8c, 0x3d, 0x75, 0x4b, 0x02, 0x9b,
+ 0xd7, 0x4e, 0xd8, 0xe1, 0x96, 0xcf, 0x00, 0x24, 0xef, 0xac, 0x5b, 0xf5,
+ 0xb9, 0xcd, 0xa0, 0x08, 0x0e, 0x19, 0xed, 0x0c, 0x62, 0x23, 0x7d, 0xb1,
+ 0x5d, 0x03, 0x4f, 0x9e, 0x13, 0x4f, 0x86, 0xdc, 0x83, 0xd3, 0x69, 0x0e,
+ 0xcd, 0x85, 0xae, 0xbe, 0xf9, 0xe5, 0xe5, 0x65, 0x34, 0xab, 0xc8, 0x6c,
+ 0x01, 0x0e, 0x1e, 0x6b, 0xbe, 0xc8, 0xd2, 0x86, 0xf4, 0x0d, 0xc8, 0xf9,
+ 0xfe, 0x9c, 0x62, 0xa7, 0xbb, 0x47, 0x9e, 0xf1, 0x56, 0xf1, 0xc2, 0x2f,
+ 0xdb, 0x88, 0x53, 0x01, 0x11, 0x01, 0xd3, 0x00, 0x80, 0x2e, 0xe9, 0x67,
+ 0xd6, 0xff, 0x74, 0x91, 0x1a, 0xa2, 0xb8, 0x93, 0x58, 0xee, 0x9c, 0xd2,
+ 0xec, 0x99, 0x83, 0x64, 0x8b, 0x80, 0x87, 0xcd, 0x35, 0x63, 0x95, 0x13,
+ 0xbb, 0xd1, 0x45, 0x83, 0x73, 0x80, 0x13, 0x86, 0x9e, 0x07, 0x20, 0x9f,
+ 0xcd, 0x05, 0x4f, 0xb4, 0x95, 0x84, 0x4b, 0xf1, 0xee, 0x7a, 0x45, 0xfc,
+ 0x84, 0x6f, 0x51, 0x55, 0xd4, 0x06, 0xa4, 0x9c, 0x75, 0x61, 0x18, 0xbe,
+ 0x5f, 0xc8, 0xaf, 0xf1, 0xeb, 0xba, 0x05, 0xc9, 0x84, 0x30, 0xdc, 0x68,
+ 0x87, 0x2e, 0x09, 0x27, 0xda, 0x4f, 0x81, 0xee, 0x42, 0x4c, 0xa6, 0x4c,
+ 0xd0, 0x9e, 0x6c, 0xff, 0xd1, 0xe7, 0x9f, 0x8f, 0xa2, 0xf0, 0x9f, 0x5c,
+ 0xb5, 0x6c, 0x88, 0x10, 0x3b, 0xe5, 0xa0, 0x22, 0x07, 0x16, 0xf4, 0x17,
+ 0xdf, 0x07, 0x85, 0x31, 0xde, 0xfe, 0x02, 0x88, 0x3e, 0x60, 0x8e, 0xab,
+ 0x79, 0x68, 0xde, 0x53, 0xac, 0x6f, 0x01, 0xb5, 0x42, 0xb8, 0x18, 0xa9,
+ 0x57, 0xe0, 0x1a, 0x8b, 0xbc, 0x47, 0xa5, 0xcb, 0x24, 0x25, 0x8e, 0xb3,
+ 0x27, 0x05, 0x31, 0x4f, 0x52, 0x38, 0x39, 0x1b, 0xd6, 0x68, 0x0d, 0x94,
+ 0xfa, 0xcd, 0x89, 0x16, 0xbc, 0x1d, 0x9b, 0x3d, 0x55, 0x92, 0x9b, 0x89,
+ 0x86, 0x1b, 0x27, 0x99, 0x85, 0x1d, 0xe0, 0x9e, 0x53, 0x1d, 0x60, 0x18,
+ 0xae, 0xa4, 0x2e, 0x50, 0x2a, 0x85, 0x1e, 0x0f, 0xe6, 0x03, 0x9d, 0xe1,
+ 0xa8, 0x70, 0xf8, 0x32, 0x6b, 0xc2, 0xf2, 0x1e, 0x2f, 0xb1, 0x76, 0xcd,
+ 0xe0, 0x31, 0x9b, 0x48, 0xaa, 0x93, 0x92, 0x17, 0xe2, 0xbd, 0x4f, 0x66,
+ 0xf9, 0x85, 0x5e, 0x52, 0xdb, 0x17, 0xe1, 0x2b, 0x3a, 0x8d, 0x17, 0xb2,
+ 0xf5, 0x52, 0xad, 0xf7, 0x55, 0x14, 0xfa, 0x4b, 0xb2, 0x7b, 0x09, 0x87,
+ 0xaa, 0x69, 0x8c, 0x5a, 0xed, 0x78, 0x37, 0x25, 0x57, 0x13, 0xd2, 0x90,
+ 0x94, 0xb4, 0xf0, 0x06, 0x73, 0x9a, 0xe4, 0x3c, 0x86, 0x3d, 0xf1, 0xc2,
+ 0x0e, 0x2a, 0x4d, 0x3e, 0x90, 0xdf, 0x8e, 0xa9, 0xc4, 0x76, 0x42, 0xe1,
+ 0xbb, 0xc1, 0x1f, 0xcc, 0xd3, 0x81, 0xd5, 0x83, 0x77, 0xbd, 0x7d, 0x0a,
+ 0xcf, 0xde, 0x0f, 0x66, 0x09, 0xd0, 0x04, 0x6f, 0xb1, 0xcb, 0x8b, 0xf6,
+ 0xdd, 0xe5, 0xb2, 0x52, 0xeb, 0x2e, 0xed, 0x3a, 0x49, 0xb1, 0x54, 0x57,
+ 0xe0, 0x4c, 0x94, 0x75, 0x59, 0x66, 0x3c, 0x4b, 0x42, 0x9b, 0xd0, 0x5d,
+ 0x85, 0xaf, 0xb2, 0xa9, 0x56, 0x53, 0x28, 0x96, 0x64, 0x94, 0xd3, 0xa7,
+ 0x62, 0x7d, 0xa8, 0xa4, 0xeb, 0x9d, 0x5b, 0x31, 0x75, 0x8b, 0xa3, 0xf3,
+ 0xa2, 0x5d, 0x16, 0x9c, 0x3c, 0xb6, 0xf0, 0x04, 0x46, 0x91, 0x93, 0x42,
+ 0x87, 0xd1, 0x0e, 0xa6, 0x19, 0xb9, 0x5b, 0xea, 0xfc, 0x6f, 0xac, 0x94,
+ 0x49, 0x36, 0xad, 0xa2, 0x86, 0x91, 0x83, 0x23, 0x03, 0x8e, 0x7d, 0xf2,
+ 0x1a, 0xfd, 0x35, 0x59, 0x94, 0x83, 0xde, 0x02, 0x3e, 0xed, 0xe7, 0x7b,
+ 0xb3, 0x44, 0x82, 0x1a, 0x57, 0x65, 0x97, 0x2b, 0x48, 0x39, 0xda, 0xa7,
+ 0x2d, 0x45, 0x09, 0xd5, 0x27, 0x96, 0xf9, 0x92, 0x7a, 0x78, 0x18, 0x7b,
+ 0x2e, 0x48, 0x21, 0x37, 0x6f, 0x71, 0xe7, 0xcc, 0x55, 0x61, 0xb6, 0xab,
+ 0x59, 0x21, 0xf2, 0x27, 0x30, 0x29, 0x86, 0x7f, 0xfd, 0x85, 0x5c, 0x7f,
+ 0xa5, 0x2c, 0x9d, 0xdb, 0x51, 0xcc, 0xac, 0xe9, 0x9d, 0x5d, 0x04, 0xb6,
+ 0x4b, 0x46, 0xc9, 0x26, 0x84, 0xef, 0x85, 0xf4, 0x8d, 0x46, 0x19, 0x00,
+ 0xb7, 0x58, 0x83, 0x23, 0xe6, 0x0b, 0x84, 0x06, 0xa7, 0x99, 0x43, 0x37,
+ 0xa5, 0x4d, 0xa1, 0x24, 0xcf, 0xe0, 0x56, 0x13, 0x50, 0xa0, 0xea, 0x4e,
+ 0x3e, 0x7c, 0x24, 0x6b, 0x60, 0x08, 0x63, 0x62, 0xa9, 0x5c, 0xf5, 0x23,
+ 0x58, 0x38, 0x69, 0xcd, 0x55, 0x05, 0x75, 0xd8, 0x7a, 0x94, 0x84, 0x00,
+ 0x6b, 0xd5, 0x7f, 0xb1, 0x06, 0x2f, 0x38, 0x5f, 0x04, 0x55, 0x88, 0xe0,
+ 0x54, 0x0f, 0x38, 0x3b, 0x82, 0x1a, 0xb9, 0x09, 0x43, 0x53, 0xd3, 0x43,
+ 0xab, 0x86, 0x58, 0x45, 0xdc, 0x34, 0xac, 0x13, 0x7b, 0xbf, 0x29, 0x17,
+ 0x37, 0x06, 0x65, 0xe3, 0xec, 0x7c, 0x62, 0xd5, 0x7c, 0x4d, 0x2c, 0x00,
+ 0xa4, 0xe5, 0x21, 0x50, 0xa9, 0xaa, 0xd4, 0x70, 0xcc, 0xbf, 0x2c, 0x2f,
+ 0x7b, 0xb0, 0x06, 0xb9, 0x5b, 0x8c, 0xb1, 0x15, 0xc2, 0xf6, 0x54, 0x44,
+ 0x87, 0xc3, 0x37, 0x89, 0xcc, 0xe7, 0xcb, 0xaf, 0x5a, 0xc3, 0x69, 0x3f,
+ 0x07, 0x1f, 0xae, 0x5c, 0xa0, 0x2f, 0xa6, 0x97, 0xf9, 0x3d, 0x9b, 0xc0,
+ 0x58, 0xff, 0x36, 0x83, 0xb7, 0xbe, 0x2a, 0x33, 0x39, 0xbb, 0x82, 0x4c,
+ 0x60, 0xdb, 0x7d, 0xc8, 0xac, 0xab, 0x8e, 0x36, 0x9a, 0x50, 0x8d, 0xb7,
+ 0x7f, 0xda, 0x24, 0xd7, 0xff, 0xb3, 0xbc, 0x2a, 0xf0, 0x0f, 0x7c, 0x01,
+ 0x1f, 0xf8, 0x72, 0x6f, 0x2f, 0x3a, 0xf3, 0xde, 0xf9, 0xf2, 0x84, 0x75,
+ 0xc6, 0x10, 0x46, 0x92, 0x95, 0xe9, 0xf1, 0xb6, 0x96, 0xe9, 0x3f, 0xa2,
+ 0x62, 0xb2, 0xd0, 0xcd, 0x46, 0x77, 0x88, 0x60, 0xba, 0xbc, 0x57, 0x39,
+ 0xe1, 0x2d, 0xca, 0x12, 0x73, 0x2b, 0x1f, 0xe6, 0x21, 0xe6, 0x83, 0xd1,
+ 0xd5, 0x70, 0x24, 0xfd, 0x8b, 0xdf, 0x40, 0x78, 0xe6, 0xee, 0xcb, 0x17,
+ 0x57, 0xab, 0xcb, 0x8c, 0xf8, 0x66, 0x73, 0xdb, 0x6c, 0x3c, 0x68, 0xe5,
+ 0xf0, 0x52, 0xb0, 0x9b, 0x82, 0xa3, 0xe9, 0x8d, 0x97, 0x49, 0x48, 0x45,
+ 0x02, 0x2d, 0x15, 0x82, 0x03, 0xdf, 0xb0, 0x94, 0xb4, 0x0f, 0x7d, 0xb7,
+ 0xdc, 0x86, 0x95, 0xd1, 0x01, 0x6f, 0x9a, 0xc0, 0x41, 0xb8, 0x02, 0xf4,
+ 0x35, 0x2b, 0xb8, 0xc9, 0x26, 0x5f, 0x7e, 0x05, 0xdf, 0xd6, 0x2d, 0xc1,
+ 0xea, 0xb3, 0x56, 0x8b, 0xad, 0xdb, 0x21, 0x94, 0xfd, 0xc4, 0x5b, 0x44,
+ 0x77, 0x90, 0xb2, 0xea, 0x1f, 0xd6, 0x2b, 0xff, 0xf1, 0x86, 0xbc, 0x28,
+ 0xcb, 0xb5, 0x23, 0xaa, 0xef, 0x86, 0xf6, 0xc4, 0xcb, 0x1f, 0xe4, 0xac,
+ 0x3a, 0x57, 0xda, 0xc8, 0x04, 0x41, 0x72, 0xa6, 0x25, 0x2e, 0x63, 0xa5,
+ 0xe6, 0xf0, 0x90, 0x49, 0x27, 0x6f, 0x95, 0x38, 0x5f, 0x0e, 0xb4, 0xc2,
+ 0x26, 0xd2, 0x48, 0xc5, 0xad, 0x81, 0xaf, 0x23, 0x21, 0x03, 0xe1, 0xaf,
+ 0x5f, 0xd8, 0xd7, 0xf1, 0x1f, 0x73, 0x9b, 0x09, 0xa8, 0x7a, 0xcd, 0x6a,
+ 0x90, 0x76, 0xa7, 0xef, 0xec, 0x50, 0xf8, 0xc9, 0xb6, 0xda, 0xdd, 0x1c,
+ 0xb0, 0xa2, 0xfd, 0xc5, 0x26, 0xb9, 0x71, 0x35, 0x2e, 0x4c, 0x1d, 0x8c,
+ 0x88, 0xc7, 0xcd, 0xca, 0x40, 0xad, 0x45, 0x02, 0x24, 0xb7, 0x38, 0xa2,
+ 0xd9, 0xf7, 0x4c, 0x1c, 0x33, 0xd7, 0xa9, 0xff, 0xb4, 0x61, 0x27, 0xff,
+ 0xd3, 0x86, 0x9b, 0xfe, 0x4f, 0x1b, 0x6e, 0x01, 0x3f, 0x6d, 0x00, 0x9d,
+ 0x11, 0x8b, 0x08, 0x0d, 0xe2, 0x5f, 0x7a, 0xe8, 0x9b, 0xfc, 0x55, 0xf7,
+ 0x51, 0xef, 0x9b, 0xde, 0x27, 0x37, 0x36, 0xd7, 0x6d, 0x9a, 0x1f, 0x1b,
+ 0xca, 0x2f, 0x6c, 0x43, 0x53, 0xb7, 0x87, 0x86, 0x5d, 0xb7, 0xb6, 0xc9,
+ 0x6d, 0x0b, 0x8c, 0xb3, 0xa0, 0x77, 0xb5, 0xf7, 0x00, 0x76, 0x1c, 0xc6,
+ 0x2c, 0xf7, 0x6b, 0xf2, 0x7a, 0x11, 0x58, 0x70, 0x47, 0x3d, 0x07, 0xed,
+ 0x7a, 0x1c, 0xc8, 0x23, 0xfb, 0x7a, 0x20, 0x7f, 0xfe, 0xb7, 0xf9, 0x02,
+ 0xe9, 0xff, 0x34, 0x86, 0xdc, 0x6a, 0xc2, 0x75, 0x91, 0x64, 0x38, 0xca,
+ 0x53, 0x2e, 0x38, 0x6a, 0xc9, 0xe2, 0xef, 0x82, 0x8b, 0x7b, 0x98, 0x24,
+ 0x82, 0xf4, 0xf5, 0x45, 0x4e, 0x4d, 0xba, 0xcc, 0xaa, 0xe6, 0x6c, 0xa1,
+ 0xee, 0x40, 0x2a, 0x50, 0xba, 0x29, 0x75, 0xce, 0xaa, 0xc9, 0x44, 0x17,
+ 0xe3, 0xb5, 0xd5, 0x01, 0xab, 0x9f, 0xa4, 0xa1, 0x88, 0xcf, 0xcb, 0xaa,
+ 0xfe, 0x72, 0xa3, 0x42, 0xcf, 0xd3, 0xe4, 0xb2, 0x32, 0x1a, 0xec, 0x17,
+ 0x20, 0xad, 0x95, 0x39, 0x2c, 0x77, 0x4f, 0x6f, 0x87, 0x8b, 0x3b, 0x33,
+ 0xef, 0xcd, 0x5f, 0x44, 0x19, 0x1e, 0x4b, 0x9b, 0x51, 0xf0, 0xdc, 0x30,
+ 0xc7, 0x45, 0xd2, 0xcd, 0x1c, 0xe0, 0xab, 0xeb, 0x5d, 0x4a, 0xf9, 0xfd,
+ 0x97, 0x31, 0xf4, 0xb7, 0x60, 0x21, 0x1e, 0xe7, 0x25, 0x53, 0xed, 0xcb,
+ 0x93, 0xef, 0xbe, 0xd0, 0x01, 0x7e, 0xda, 0xf8, 0x71, 0xc8, 0x3f, 0xa5,
+ 0x32, 0xda, 0x83, 0xe4, 0xe4, 0x3b, 0x50, 0xf7, 0x2f, 0x63, 0x60, 0xeb,
+ 0x3e, 0xf0, 0x15, 0xff, 0x85, 0x28, 0x7b, 0xdd, 0xb0, 0xe7, 0x2e, 0xe3,
+ 0xe0, 0x4b, 0xb4, 0xee, 0xa5, 0xba, 0x1e, 0xb2, 0xc2, 0x97, 0x4b, 0x54,
+ 0xeb, 0x68, 0xd9, 0x68, 0xc3, 0x65, 0xa3, 0x14, 0x35, 0x4a, 0x27, 0x25,
+ 0x67, 0xdf, 0x37, 0x21, 0x64, 0x34, 0x41, 0xd6, 0xd2, 0xd9, 0x8a, 0xef,
+ 0x6a, 0x49, 0x8e, 0x0b, 0x52, 0x87, 0x75, 0x77, 0xe1, 0x2d, 0x24, 0x05,
+ 0xae, 0x65, 0xed, 0x1c, 0x46, 0x7a, 0x03, 0x38, 0xcc, 0x1f, 0xfe, 0x1b,
+ 0xe9, 0x65, 0xb6, 0x2b, 0x35, 0x9a, 0x8c, 0xa5, 0x55, 0xa6, 0x8d, 0x63,
+ 0xa4, 0x9b, 0x1d, 0x37, 0x2f, 0xfb, 0x22, 0x16, 0x0a, 0x90, 0xe8, 0xa4,
+ 0xe4, 0x7e, 0x5f, 0x94, 0x73, 0xe9, 0x5f, 0x5e, 0x1b, 0xaa, 0xe7, 0x03,
+ 0xb6, 0x0d, 0xe4, 0x8c, 0xc6, 0x81, 0xad, 0x90, 0x48, 0x85, 0x7c, 0x36,
+ 0xa2, 0x72, 0x48, 0x34, 0x91, 0xbd, 0x71, 0xd2, 0xd6, 0x8c, 0x70, 0xb4,
+ 0x98, 0xf0, 0xbf, 0x80, 0xd1, 0x3f, 0xc9, 0xc8, 0xf9, 0x64, 0xab, 0x23,
+ 0x87, 0xe2, 0x1c, 0x8e, 0x78, 0x70, 0x12, 0x7b, 0x6f, 0xf4, 0xe2, 0x70,
+ 0x1a, 0x84, 0x56, 0x48, 0x02, 0x60, 0xe9, 0x5b, 0xa8, 0x84, 0x92, 0x39,
+ 0xae, 0x0d, 0x5f, 0x20, 0x5e, 0xe2, 0x8b, 0xa5, 0x3b, 0xac, 0x6a, 0x44,
+ 0x78, 0xdb, 0x92, 0xdf, 0x89, 0x2f, 0x59, 0x1f, 0x4b, 0x45, 0xdf, 0x92,
+ 0xc3, 0x1a, 0x05, 0x2f, 0xfc, 0x28, 0x79, 0x3a, 0xc3, 0xbd, 0x03, 0xaf,
+ 0x79, 0x0f, 0xff, 0x2c, 0x3e, 0xbc, 0x8f, 0x8d, 0xa2, 0x01, 0xe2, 0x5a,
+ 0xb6, 0x7f, 0xcd, 0xf8, 0xfb, 0x76, 0xfc, 0xcf, 0x22, 0x70, 0x24, 0x0c,
+ 0x18, 0x12, 0xff, 0x2c, 0x50, 0x40, 0x25, 0x6b, 0x4b, 0xbd, 0xa8, 0xd6,
+ 0x93, 0xd1, 0xf2, 0x21, 0x28, 0x12, 0x32, 0x43, 0x95, 0x70, 0xb8, 0x21,
+ 0xec, 0x7d, 0xc0, 0x28, 0x8e, 0x64, 0x06, 0xd2, 0x3a, 0xcc, 0x36, 0x76,
+ 0x4d, 0x44, 0xe9, 0x4e, 0xcf, 0x84, 0x55, 0x2e, 0x80, 0x4c, 0x3a, 0x3b,
+ 0x70, 0xdd, 0x1e, 0x19, 0x5b, 0x21, 0xf7, 0x13, 0xda, 0x5d, 0xfd, 0x6a,
+ 0x50, 0x49, 0xd8, 0xc2, 0xfd, 0x0d, 0x3e, 0x65, 0x58, 0x31, 0x23, 0x12,
+ 0x91, 0x8d, 0x22, 0x37, 0x61, 0x6b, 0x53, 0x9c, 0x2a, 0xf8, 0x10, 0x9a,
+ 0x24, 0x52, 0x76, 0x12, 0xd5, 0x28, 0xa7, 0x04, 0x25, 0x21, 0xbe, 0x9c,
+ 0x61, 0x44, 0xeb, 0x38, 0x20, 0xd6, 0x6e, 0xef, 0x04, 0xe3, 0xe7, 0x10,
+ 0x7c, 0x8e, 0xda, 0xcd, 0x8c, 0x75, 0xd5, 0xc2, 0xcc, 0x09, 0x8d, 0x64,
+ 0x6f, 0x8b, 0x65, 0x30, 0xb6, 0x4d, 0x29, 0x45, 0x50, 0x2e, 0xc5, 0xe6,
+ 0x97, 0xdb, 0x9b, 0x76, 0x69, 0xfd, 0x66, 0x91, 0xda, 0x31, 0xb6, 0x2d,
+ 0xa2, 0x06, 0x21, 0x6d, 0x07, 0x54, 0xf2, 0x2c, 0x2d, 0x90, 0xfb, 0x90,
+ 0x0d, 0xe9, 0x40, 0xa3, 0xc0, 0x72, 0x75, 0x23, 0xde, 0x4e, 0x98, 0x58,
+ 0x05, 0xdd, 0x4e, 0x86, 0x40, 0x61, 0x12, 0x4f, 0xe7, 0x0d, 0xb2, 0xe3,
+ 0xa9, 0x7e, 0x81, 0x41, 0xf0, 0xea, 0x03, 0x4f, 0x1f, 0x8f, 0x5c, 0x4f,
+ 0x04, 0x72, 0xa8, 0xb7, 0x80, 0xb8, 0x44, 0x3c, 0x8f, 0xc6, 0x3a, 0xd5,
+ 0x7b, 0xf3, 0xcb, 0x2d, 0x16, 0x58, 0xce, 0x9f, 0xe6, 0x7d, 0x7b, 0x33,
+ 0xf9, 0x29, 0x5e, 0x4a, 0x9a, 0xf0, 0xbb, 0x9e, 0x85, 0x20, 0x64, 0x7b,
+ 0xdf, 0x1b, 0xc9, 0x8b, 0x49, 0x39, 0xbb, 0xfb, 0x23, 0x85, 0x9d, 0xe4,
+ 0x95, 0x17, 0x3b, 0xf4, 0xa3, 0x8e, 0xca, 0xdc, 0x37, 0x10, 0x8d, 0x62,
+ 0x8e, 0x8a, 0xfe, 0xfc, 0x0a, 0x8f, 0xab, 0xc5, 0xb0, 0x99, 0x8c, 0x46,
+ 0x86, 0x09, 0xd5, 0x0b, 0xea, 0x52, 0xb5, 0x46, 0xb0, 0x30, 0x0c, 0x1c,
+ 0x89, 0x58, 0x28, 0x29, 0x82, 0xe4, 0x41, 0x9e, 0x1d, 0xb5, 0xb2, 0xd9,
+ 0x09, 0xc9, 0xbf, 0xaa, 0xbe, 0x1c, 0x25, 0x2f, 0x6d, 0x96, 0x4c, 0x16,
+ 0x81, 0x8e, 0xc6, 0x35, 0x66, 0xd9, 0xe1, 0x55, 0x61, 0x7f, 0x3e, 0xc9,
+ 0xc5, 0xcd, 0x3e, 0x2b, 0x5b, 0x70, 0x94, 0x0c, 0x75, 0x60, 0x84, 0x7b,
+ 0x1c, 0x40, 0x6c, 0x5a, 0x56, 0x1c, 0x23, 0x62, 0x77, 0xba, 0xb5, 0x5f,
+ 0x64, 0x6a, 0xc3, 0x43, 0xc1, 0xab, 0x52, 0x36, 0x3a, 0x48, 0x9e, 0xd9,
+ 0x2f, 0x45, 0x20, 0xdc, 0xd9, 0xe2, 0xaf, 0x93, 0xcf, 0x87, 0x78, 0xca,
+ 0xeb, 0x93, 0x2a, 0x74, 0xdf, 0xce, 0xe0, 0x18, 0x88, 0x52, 0x38, 0xa4,
+ 0xc4, 0xa4, 0x48, 0x0d, 0x0c, 0x49, 0x82, 0x49, 0x5a, 0x67, 0x4f, 0x1f,
+ 0xab, 0x7a, 0xc9, 0xbb, 0x54, 0xab, 0xff, 0xb6, 0xe5, 0x84, 0x65, 0x39,
+ 0xe4, 0x2d, 0xa8, 0x7b, 0x11, 0xa8, 0x94, 0x17, 0xca, 0x19, 0x7a, 0x62,
+ 0x71, 0xde, 0x2b, 0xa4, 0xa9, 0x51, 0x24, 0x2f, 0x1b, 0x2a, 0xe2, 0x79,
+ 0xf6, 0xd4, 0x9b, 0xf4, 0x3d, 0xee, 0x8a, 0x0e, 0x27, 0x95, 0x15, 0x76,
+ 0x57, 0xa4, 0xf6, 0xfa, 0x22, 0xec, 0x68, 0x4a, 0xce, 0x5b, 0xc6, 0xe3,
+ 0x92, 0x35, 0x5a, 0x07, 0xe3, 0x7d, 0xd7, 0xc8, 0xbf, 0x04, 0x5f, 0x28,
+ 0xe1, 0x74, 0x3f, 0xbd, 0x96, 0xa8, 0x3d, 0x13, 0x49, 0xdf, 0xe7, 0x49,
+ 0x30, 0x61, 0xdf, 0x4f, 0xd7, 0x08, 0x22, 0x5c, 0xac, 0x2a, 0x92, 0x3e,
+ 0xf2, 0x18, 0x2b, 0x09, 0x5a, 0x1a, 0x24, 0x7a, 0xfa, 0xdb, 0x97, 0xef,
+ 0xde, 0xbf, 0x3c, 0x7e, 0x78, 0xb3, 0x9c, 0x56, 0xff, 0xb5, 0xd1, 0xfa,
+ 0xc6, 0x6d, 0xae, 0x1a, 0x38, 0x40, 0xc0, 0x39, 0xd2, 0x3e, 0x39, 0xfc,
+ 0xcf, 0x73, 0xaa, 0x40, 0x0e, 0x02, 0x88, 0x84, 0x26, 0xd0, 0xcd, 0xd6,
+ 0x43, 0x9d, 0x16, 0xe8, 0x0a, 0x49, 0x22, 0x71, 0x64, 0x1c, 0xce, 0xbc,
+ 0x95, 0x10, 0xb9, 0x97, 0xb9, 0x99, 0xd6, 0xd2, 0xaa, 0x70, 0x43, 0xdf,
+ 0xc7, 0xeb, 0x1b, 0x92, 0xaf, 0x6d, 0x4b, 0xb3, 0x63, 0x54, 0x6e, 0x6b,
+ 0xc9, 0x6d, 0xea, 0x95, 0xb6, 0x73, 0x16, 0x81, 0xd6, 0xf2, 0xbe, 0x95,
+ 0x17, 0x17, 0x0e, 0x88, 0xa6, 0x1b, 0xe1, 0x7b, 0xf5, 0xaa, 0xbf, 0xca,
+ 0xf5, 0x53, 0x82, 0x88, 0x76, 0x92, 0xc0, 0x69, 0x1b, 0x1d, 0x77, 0x1f,
+ 0x36, 0x25, 0x97, 0x80, 0xbf, 0x90, 0xb9, 0xc5, 0x77, 0xd5, 0x4c, 0xd0,
+ 0xaf, 0xd6, 0x57, 0x15, 0x97, 0xba, 0xb0, 0x8e, 0x0f, 0xcf, 0x68, 0xb3,
+ 0x4e, 0x5f, 0x8e, 0xc7, 0x56, 0x16, 0xd6, 0x92, 0x96, 0x30, 0x08, 0x8c,
+ 0x31, 0x52, 0x23, 0xfd, 0x6e, 0x20, 0xa3, 0xc4, 0x36, 0x50, 0x95, 0x74,
+ 0x4e, 0x8a, 0xfd, 0x18, 0x9b, 0xef, 0x7c, 0xb5, 0x30, 0x17, 0xc6, 0x68,
+ 0xbc, 0xb3, 0xcd, 0x5a, 0x42, 0xb1, 0x5d, 0xc2, 0x03, 0xe7, 0x12, 0x4d,
+ 0x8a, 0xce, 0x1a, 0xb4, 0x87, 0xb3, 0x1f, 0x6b, 0x0c, 0x09, 0x5c, 0x9e,
+ 0x83, 0xd7, 0x3e, 0xf2, 0xeb, 0x20, 0xee, 0x4c, 0xdf, 0x18, 0x1f, 0x9d,
+ 0x1f, 0x9a, 0xed, 0x7b, 0x7f, 0xfe, 0xed, 0x86, 0xa4, 0x2e, 0x74, 0x61,
+ 0x27, 0xc8, 0x69, 0x8f, 0xce, 0xa7, 0xd7, 0xb6, 0x38, 0xb5, 0x62, 0x47,
+ 0x8a, 0xb1, 0x16, 0x62, 0x1a, 0xb8, 0xfb, 0xe8, 0x68, 0xcd, 0x29, 0x3d,
+ 0x19, 0x3d, 0xe9, 0x9e, 0x52, 0x3f, 0x8a, 0x33, 0xe3, 0xfa, 0x06, 0xe4,
+ 0x2e, 0x60, 0xc1, 0xc8, 0x9e, 0xda, 0x71, 0x3d, 0x45, 0x28, 0xc8, 0x46,
+ 0xa0, 0x33, 0x94, 0xb5, 0x1b, 0x01, 0x95, 0x53, 0x84, 0x3d, 0x2f, 0x2e,
+ 0x4e, 0x90, 0xc6, 0x16, 0x85, 0x47, 0xbc, 0xbd, 0x1c, 0x0e, 0x35, 0x27,
+ 0x96, 0x56, 0x33, 0x5b, 0x89, 0x19, 0xea, 0x87, 0x9a, 0xeb, 0x87, 0x4e,
+ 0x45, 0x86, 0x04, 0xb4, 0x53, 0x49, 0xab, 0x3e, 0x36, 0x6c, 0x39, 0xe0,
+ 0xf2, 0xf9, 0xe2, 0x18, 0xd3, 0xe4, 0x45, 0xa7, 0xe6, 0x25, 0x16, 0x2c,
+ 0x79, 0x6d, 0xf6, 0x63, 0x1c, 0x16, 0x19, 0xfb, 0x2a, 0xf9, 0x22, 0x2f,
+ 0xf8, 0xcf, 0x38, 0xbd, 0x93, 0xc8, 0xad, 0xca, 0x39, 0x3b, 0x10, 0xe5,
+ 0x0d, 0x4e, 0xe2, 0xe4, 0x0a, 0x13, 0x5b, 0xf9, 0x90, 0x52, 0x08, 0x94,
+ 0xec, 0x13, 0x6a, 0xe7, 0x1d, 0x76, 0xa3, 0xda, 0x1a, 0x6f, 0x5b, 0x4f,
+ 0xeb, 0x39, 0x45, 0x14, 0x69, 0xb4, 0x48, 0xe1, 0x90, 0x07, 0x38, 0x28,
+ 0xea, 0x65, 0x0c, 0xf4, 0xc6, 0xbb, 0xbd, 0xa1, 0xc5, 0x44, 0x8c, 0x7a,
+ 0x7a, 0x33, 0xeb, 0x81, 0x70, 0x23, 0xb7, 0x16, 0x25, 0x91, 0x91, 0x0d,
+ 0xc8, 0x65, 0x4a, 0xaf, 0x7e, 0x78, 0xed, 0xf5, 0xa0, 0xd1, 0x3c, 0x35,
+ 0xa6, 0x17, 0x51, 0x48, 0xfb, 0x40, 0xd2, 0x32, 0x97, 0x6c, 0x39, 0xa2,
+ 0xa0, 0xea, 0x2c, 0xcb, 0x96, 0x16, 0xf1, 0x3b, 0xa7, 0xba, 0x96, 0xbc,
+ 0xa6, 0x20, 0xaa, 0xa0, 0xad, 0x53, 0x97, 0xb5, 0x9e, 0xd9, 0x09, 0xeb,
+ 0xb0, 0x35, 0x95, 0xf8, 0x7f, 0xf4, 0xd4, 0x42, 0x18, 0x77, 0xef, 0xd9,
+ 0xa3, 0xcf, 0x8d, 0x6c, 0xbe, 0x23, 0x08, 0x6e, 0xb7, 0x65, 0x0c, 0x91,
+ 0xdb, 0x0f, 0x7f, 0x27, 0x46, 0x8d, 0xa6, 0xf7, 0x0a, 0x82, 0x41, 0x52,
+ 0xc3, 0x8c, 0x20, 0x07, 0x95, 0xd4, 0x13, 0x87, 0xf0, 0x2f, 0x66, 0x13,
+ 0x65, 0xc3, 0x24, 0xe9, 0x8e, 0xf6, 0x89, 0x13, 0xc4, 0x46, 0x1e, 0x01,
+ 0xa3, 0x6f, 0x07, 0x1a, 0x8c, 0x19, 0x96, 0x72, 0x76, 0x78, 0x7e, 0x66,
+ 0xfe, 0x18, 0x9f, 0x9f, 0x9c, 0xf5, 0x00, 0x16, 0x36, 0x8c, 0x8c, 0x81,
+ 0x4d, 0xd3, 0x74, 0x15, 0xda, 0xe6, 0x36, 0x98, 0x19, 0x65, 0x42, 0x33,
+ 0xdb, 0xa9, 0xa3, 0xf8, 0x57, 0x1e, 0x0c, 0x56, 0x3d, 0x6a, 0x2d, 0xf4,
+ 0xc2, 0xc8, 0x87, 0xb5, 0x0b, 0xe3, 0x33, 0x5f, 0x4f, 0x21, 0xb4, 0x60,
+ 0x10, 0x23, 0x56, 0x6c, 0x19, 0x3d, 0xcd, 0xd6, 0x18, 0x6d, 0x70, 0xfe,
+ 0x3b, 0x74, 0x77, 0xed, 0xda, 0xdc, 0x03, 0xf2, 0xc7, 0xa9, 0xb9, 0xdc,
+ 0xb3, 0xc4, 0x35, 0x31, 0x37, 0x9c, 0x56, 0xcb, 0xef, 0x37, 0x92, 0x2d,
+ 0x72, 0x20, 0x8b, 0x5e, 0x72, 0x0f, 0xfd, 0x1a, 0x5d, 0x68, 0xdb, 0x2d,
+ 0xb8, 0x2e, 0x17, 0x19, 0x7b, 0xf8, 0x39, 0x39, 0x57, 0x99, 0x13, 0xcb,
+ 0x16, 0x86, 0x6b, 0x4d, 0x62, 0x10, 0x14, 0x16, 0x59, 0x0b, 0xa7, 0xbc,
+ 0x69, 0x6b, 0xf8, 0x4b, 0xa1, 0x0e, 0x3e, 0x97, 0xcc, 0x58, 0xaa, 0x0d,
+ 0x41, 0x96, 0x6d, 0xea, 0xac, 0x3c, 0xc8, 0xad, 0x36, 0xf3, 0xde, 0xeb,
+ 0x32, 0x19, 0xe0, 0x20, 0xc4, 0x39, 0x0b, 0xb5, 0x97, 0x6b, 0xe1, 0x2f,
+ 0x68, 0x8e, 0x0d, 0xe9, 0x12, 0x7e, 0x5b, 0xcd, 0x53, 0x79, 0x2a, 0x1a,
+ 0x56, 0xa3, 0x72, 0x41, 0xe0, 0x67, 0x58, 0xda, 0x96, 0x23, 0xe7, 0x10,
+ 0xcd, 0xaa, 0xcb, 0x74, 0x5b, 0xfa, 0x5c, 0xc8, 0x66, 0x55, 0x69, 0x4b,
+ 0x5c, 0xa3, 0xa2, 0x4e, 0x81, 0xfc, 0x9a, 0x6e, 0x58, 0xbf, 0x39, 0x68,
+ 0x4d, 0xf2, 0xbe, 0x10, 0xb0, 0x96, 0xc2, 0xd8, 0x16, 0x94, 0xff, 0x30,
+ 0xb3, 0x9b, 0x06, 0x0c, 0x23, 0xa4, 0x6d, 0xb1, 0xd0, 0x9a, 0x95, 0xac,
+ 0xd0, 0x13, 0xd4, 0x71, 0x88, 0x85, 0x47, 0x3e, 0x64, 0xca, 0x26, 0x50,
+ 0x49, 0x23, 0xe3, 0x39, 0xbb, 0x64, 0xda, 0x74, 0x57, 0x4a, 0xc0, 0x0a,
+ 0xc1, 0x42, 0x4f, 0xfd, 0x43, 0x63, 0x96, 0x46, 0xd6, 0x8f, 0xe3, 0x05,
+ 0x0d, 0xe3, 0x1b, 0xb4, 0x60, 0x2a, 0x64, 0xad, 0xd1, 0x5c, 0xf1, 0x42,
+ 0x40, 0x24, 0xb4, 0x47, 0x7c, 0x0b, 0x9d, 0x41, 0xd5, 0xc0, 0xd1, 0x1a,
+ 0xd4, 0x2f, 0x1f, 0xcc, 0xa1, 0x45, 0x92, 0xed, 0x12, 0xf9, 0xf6, 0xea,
+ 0x7a, 0x8b, 0x6d, 0x89, 0x40, 0xcf, 0x70, 0x64, 0x0a, 0xd4, 0xa8, 0xb4,
+ 0x95, 0x17, 0x39, 0xc0, 0x7b, 0xca, 0x6a, 0x07, 0x55, 0x2a, 0x80, 0xb2,
+ 0x33, 0x56, 0x65, 0x39, 0xa7, 0x8e, 0x37, 0xaa, 0xba, 0xc5, 0xfa, 0x14,
+ 0x93, 0x0a, 0xc6, 0xf5, 0x97, 0x66, 0xf0, 0x76, 0xe7, 0x59, 0xaf, 0x87,
+ 0x1b, 0xa4, 0xa9, 0x87, 0xd4, 0x30, 0x8a, 0x75, 0x49, 0xe3, 0x8c, 0x10,
+ 0xca, 0x78, 0x6c, 0xab, 0x63, 0xda, 0xb1, 0x53, 0x7b, 0x6e, 0xd0, 0xb9,
+ 0x92, 0xca, 0x47, 0xf9, 0xf7, 0x3d, 0xe5, 0x75, 0xda, 0xef, 0x84, 0xf0,
+ 0x98, 0xcc, 0xae, 0x0c, 0x38, 0x3b, 0xa4, 0x7d, 0x33, 0xc9, 0x72, 0x68,
+ 0x7f, 0xad, 0xce, 0x9a, 0xd5, 0x32, 0x94, 0xf3, 0xae, 0xe0, 0xd3, 0x8e,
+ 0xa8, 0x41, 0x51, 0x6f, 0x8a, 0x00, 0x32, 0x70, 0xdb, 0xef, 0x83, 0xd6,
+ 0x77, 0x6f, 0x23, 0x69, 0x02, 0x81, 0x74, 0xef, 0x2b, 0xbe, 0x57, 0xf1,
+ 0x82, 0xbe, 0xb9, 0xc9, 0x86, 0xd1, 0x2f, 0x76, 0x37, 0x48, 0x83, 0xd6,
+ 0xc6, 0x07, 0x82, 0x0f, 0xa6, 0x6f, 0x9b, 0x7d, 0xf1, 0xe6, 0x1b, 0xde,
+ 0x19, 0xad, 0x47, 0x91, 0x3a, 0x42, 0x9c, 0xce, 0x16, 0x5a, 0xb4, 0xd3,
+ 0xfd, 0xdd, 0xfe, 0xac, 0x77, 0xe9, 0x6b, 0x66, 0xb5, 0xb1, 0xf7, 0x7c,
+ 0x7f, 0xb4, 0xf7, 0xf4, 0xf3, 0xd1, 0x1e, 0x35, 0x78, 0xf5, 0xe6, 0xe6,
+ 0x1a, 0x91, 0x7a, 0x03, 0x45, 0xda, 0xdc, 0x26, 0xfd, 0x40, 0xb7, 0xfc,
+ 0x85, 0xc5, 0xdd, 0x08, 0xcf, 0x8d, 0xb8, 0xd9, 0x4c, 0xf0, 0x8d, 0x85,
+ 0xd1, 0x69, 0xf2, 0x22, 0x88, 0x83, 0x0c, 0x5d, 0x56, 0x11, 0xd3, 0xe2,
+ 0x32, 0x07, 0x19, 0x29, 0xf8, 0xa4, 0xb7, 0x4f, 0xda, 0x27, 0xcf, 0xf6,
+ 0xfd, 0xa0, 0xdb, 0x19, 0x9f, 0x91, 0xb2, 0xf4, 0xa9, 0xa8, 0x91, 0x8e,
+ 0xab, 0xdb, 0xef, 0x07, 0x6c, 0xf3, 0x17, 0x5b, 0x7d, 0x40, 0x4d, 0xb1,
+ 0x97, 0xae, 0x8b, 0x96, 0x43, 0xa8, 0x4a, 0x5d, 0x60, 0x1e, 0xc1, 0x59,
+ 0xe1, 0x07, 0x7d, 0x0c, 0xab, 0x44, 0x9b, 0x0e, 0xeb, 0x70, 0x04, 0x37,
+ 0xe4, 0x2a, 0x71, 0x6c, 0x5f, 0x37, 0x1d, 0x59, 0x83, 0xe7, 0x5d, 0x04,
+ 0x25, 0x8b, 0x6c, 0xc4, 0x4c, 0x5a, 0x87, 0xc3, 0x3b, 0x7f, 0xf8, 0x83,
+ 0xe3, 0x48, 0xdc, 0x6d, 0x9c, 0x5a, 0x5c, 0x3c, 0x21, 0x04, 0x53, 0x8e,
+ 0x55, 0x33, 0x58, 0xfe, 0xc6, 0xc1, 0x9f, 0xc9, 0x39, 0xfc, 0xf3, 0xf0,
+ 0xcf, 0xe6, 0x9f, 0x3f, 0x6f, 0xe8, 0xa5, 0x66, 0x30, 0x2c, 0x57, 0x30,
+ 0xe2, 0x10, 0x07, 0xe9, 0x80, 0x06, 0x49, 0xbb, 0x5b, 0x2b, 0x69, 0x06,
+ 0xe7, 0xaf, 0x4e, 0xf9, 0x32, 0x56, 0x1c, 0xf6, 0x26, 0x6a, 0x06, 0x1f,
+ 0x22, 0xb5, 0x1e, 0x2c, 0x9c, 0x1a, 0x4d, 0x30, 0x9d, 0xd8, 0xbd, 0xf4,
+ 0x5e, 0x19, 0xb8, 0xa4, 0x86, 0x1b, 0xe6, 0x00, 0xa9, 0xd1, 0x6f, 0x2f,
+ 0xe1, 0x5f, 0xe1, 0x2a, 0x70, 0xc3, 0x77, 0x55, 0x91, 0x96, 0x46, 0xba,
+ 0x40, 0xd2, 0x32, 0x6c, 0xc0, 0x5e, 0x87, 0x1b, 0x33, 0xa5, 0x41, 0x22,
+ 0xa8, 0xb0, 0x5c, 0x1b, 0xd1, 0x28, 0x78, 0x61, 0x01, 0x43, 0x45, 0xb9,
+ 0x6d, 0x95, 0xd7, 0x1f, 0xb1, 0x3e, 0x29, 0xf3, 0xf1, 0x72, 0x85, 0x30,
+ 0x9f, 0xcf, 0xac, 0xd6, 0x77, 0xa7, 0x30, 0x31, 0xb6, 0x70, 0xcf, 0xdb,
+ 0x59, 0x27, 0x1d, 0xf4, 0xd8, 0x15, 0x4e, 0x20, 0x8a, 0x74, 0x25, 0x8f,
+ 0x55, 0xd9, 0x03, 0x00, 0xd8, 0x24, 0x15, 0xe6, 0xd4, 0xe8, 0xb9, 0x96,
+ 0x34, 0x3c, 0x30, 0x24, 0x54, 0x91, 0x83, 0x58, 0x20, 0xfd, 0xb6, 0xbb,
+ 0x52, 0x0b, 0x8d, 0x5b, 0xe0, 0x28, 0x66, 0x50, 0x26, 0x0b, 0x29, 0x46,
+ 0xad, 0xa4, 0x50, 0x3e, 0x51, 0x99, 0x69, 0xcc, 0x06, 0x5a, 0x0f, 0xcf,
+ 0x37, 0x03, 0x41, 0x5e, 0xd5, 0xe9, 0x3e, 0x8b, 0xda, 0x0a, 0x74, 0xd1,
+ 0x9c, 0x32, 0x3a, 0x67, 0x9f, 0x3a, 0x36, 0x9f, 0x76, 0x1d, 0x7f, 0x1a,
+ 0x6e, 0xad, 0x8d, 0xc6, 0x6e, 0x0a, 0xea, 0x1a, 0x9c, 0x84, 0x06, 0x0d,
+ 0x4d, 0x7f, 0x11, 0x43, 0xae, 0xf5, 0x84, 0xea, 0xfe, 0x6e, 0xe8, 0x4a,
+ 0x41, 0x2f, 0x64, 0xda, 0xe4, 0x61, 0xbe, 0xbc, 0x7f, 0x03, 0x71, 0x6c,
+ 0x8a, 0xc6, 0xdb, 0xe2, 0x2c, 0x56, 0xc2, 0xd4, 0xab, 0xcb, 0x4b, 0x42,
+ 0xa2, 0x08, 0x33, 0xf3, 0xa8, 0x62, 0x51, 0x0a, 0x07, 0x04, 0xe6, 0xdf,
+ 0x30, 0x72, 0x9a, 0xb9, 0xee, 0x86, 0x2b, 0x8b, 0x14, 0x86, 0x53, 0xbb,
+ 0x86, 0x1d, 0xbd, 0xa5, 0xb3, 0x68, 0xf1, 0x26, 0xd7, 0xdb, 0x69, 0x32,
+ 0x55, 0x36, 0xd4, 0x89, 0x76, 0xf9, 0x20, 0x52, 0x83, 0x82, 0x0c, 0x58,
+ 0xe6, 0x88, 0xe4, 0x6b, 0xe8, 0xe7, 0x7d, 0x6b, 0xdd, 0x8d, 0xf0, 0xb0,
+ 0x59, 0x20, 0x29, 0x84, 0x91, 0x18, 0x36, 0x8f, 0x71, 0xcf, 0x2a, 0x0b,
+ 0x24, 0xc5, 0x7a, 0xa5, 0xf0, 0xa3, 0xae, 0xd4, 0xbc, 0xa0, 0xed, 0x58,
+ 0xe7, 0x17, 0x70, 0xac, 0xd0, 0xd7, 0x96, 0x1e, 0x8f, 0xf6, 0x83, 0x83,
+ 0xad, 0xe7, 0xc3, 0xe9, 0x74, 0x3a, 0x24, 0x3d, 0xe0, 0x05, 0x2b, 0x27,
+ 0x3b, 0xa2, 0x1c, 0xf4, 0xf8, 0x0c, 0xc6, 0x99, 0xec, 0xf7, 0xab, 0x57,
+ 0xaf, 0x44, 0x8f, 0x39, 0xbf, 0xea, 0x68, 0x14, 0x16, 0xe4, 0x49, 0x34,
+ 0xaa, 0x58, 0xf7, 0xbf, 0xfa, 0x6a, 0xd5, 0xcc, 0xa8, 0x49, 0x30, 0x58,
+ 0x86, 0xb2, 0x5e, 0x5b, 0x23, 0xdb, 0x01, 0xe2, 0x44, 0xaf, 0xf6, 0x81,
+ 0xcb, 0x4c, 0x34, 0x63, 0x07, 0x47, 0xb3, 0xe4, 0xbe, 0x20, 0xf4, 0xa2,
+ 0x8c, 0xdd, 0xed, 0x3c, 0xca, 0x53, 0xf5, 0xd1, 0xb2, 0x74, 0x82, 0x75,
+ 0x2c, 0x93, 0x4d, 0x47, 0xa1, 0xcf, 0xa6, 0xb9, 0x64, 0x80, 0xa5, 0xf2,
+ 0xad, 0xee, 0xd8, 0xf7, 0x9c, 0x87, 0x6c, 0x75, 0xfb, 0x48, 0x9e, 0xf6,
+ 0x1e, 0x49, 0x74, 0xf3, 0x61, 0x55, 0x61, 0xdb, 0xb7, 0x5e, 0x11, 0x8a,
+ 0xe7, 0x2b, 0xb9, 0x10, 0xaf, 0xae, 0x90, 0xbf, 0x45, 0xc8, 0x16, 0x66,
+ 0xca, 0x35, 0x33, 0x01, 0x91, 0x1f, 0xe3, 0xf1, 0xf1, 0xce, 0xf9, 0xf1,
+ 0x38, 0xc8, 0x78, 0xbf, 0x83, 0xcb, 0x98, 0x7b, 0x4b, 0xb7, 0x5c, 0x9e,
+ 0xbc, 0x45, 0x84, 0x99, 0x5c, 0x5e, 0xb4, 0x29, 0x9c, 0xbf, 0x12, 0x85,
+ 0x18, 0x59, 0x15, 0x5a, 0x0c, 0x63, 0x65, 0x77, 0x91, 0x15, 0x54, 0x44,
+ 0x0e, 0x11, 0x4e, 0x37, 0x80, 0x12, 0x62, 0xeb, 0xe4, 0xdd, 0xcb, 0x73,
+ 0x94, 0xb7, 0x34, 0x92, 0xe2, 0x01, 0x17, 0x50, 0xe8, 0x19, 0xbf, 0xb1,
+ 0xb8, 0x04, 0x14, 0xb5, 0x49, 0xa7, 0xae, 0x47, 0x88, 0x2a, 0xeb, 0x7c,
+ 0x7c, 0xb5, 0x12, 0xde, 0xba, 0xed, 0x37, 0x5b, 0x2a, 0xd2, 0xa1, 0x4b,
+ 0xf3, 0xdd, 0xd3, 0xd8, 0x8b, 0x9e, 0x06, 0x6f, 0x40, 0xfc, 0x3a, 0x9c,
+ 0x09, 0x2b, 0xd7, 0x8d, 0x96, 0x2a, 0x7e, 0x9d, 0xfe, 0xbc, 0xbc, 0xcc,
+ 0xe1, 0x09, 0xa4, 0xf3, 0xf2, 0x03, 0x6f, 0x81, 0x9b, 0x94, 0x77, 0xa7,
+ 0xe6, 0x52, 0x9c, 0x36, 0x68, 0x2c, 0x5f, 0x11, 0xc8, 0x09, 0xbb, 0xa7,
+ 0xb6, 0x3d, 0x91, 0x96, 0x40, 0x86, 0x15, 0x86, 0x84, 0xc4, 0x98, 0x4f,
+ 0x8d, 0x89, 0x30, 0x45, 0xf6, 0x07, 0x95, 0x03, 0xd6, 0xed, 0x14, 0xdb,
+ 0xbc, 0x85, 0xfc, 0xa8, 0x1e, 0xd2, 0x3a, 0x8c, 0x55, 0x90, 0xa6, 0x20,
+ 0x2b, 0x5c, 0xeb, 0x87, 0x7f, 0xda, 0x12, 0x1e, 0xdf, 0xc0, 0x22, 0xbb,
+ 0x0c, 0x84, 0xae, 0x45, 0xa1, 0x88, 0x40, 0xed, 0x91, 0x8a, 0x4a, 0xe5,
+ 0xfd, 0xd2, 0xf2, 0xd7, 0x47, 0x3a, 0x87, 0x85, 0x35, 0x9c, 0x0d, 0xa2,
+ 0x30, 0xf5, 0x83, 0x6e, 0x97, 0x2f, 0x06, 0x02, 0x6c, 0xe3, 0x43, 0xb7,
+ 0xd0, 0x78, 0x34, 0xd1, 0xb7, 0x33, 0xdc, 0x37, 0x87, 0xae, 0xab, 0x40,
+ 0x07, 0xb2, 0xa7, 0xd5, 0x71, 0x80, 0xe3, 0x90, 0x88, 0x41, 0xdd, 0xa0,
+ 0x39, 0xe9, 0x4d, 0x8f, 0x91, 0xc3, 0x4a, 0xec, 0xb9, 0x03, 0x29, 0xe7,
+ 0xfb, 0xc1, 0x5a, 0x60, 0x66, 0xb3, 0x54, 0x81, 0xf6, 0xa2, 0x01, 0xfa,
+ 0xff, 0xd8, 0x74, 0x4d, 0x73, 0x46, 0xbd, 0xd0, 0x7c, 0x31, 0xd0, 0x5e,
+ 0x17, 0x7a, 0x1a, 0xb8, 0x09, 0xbb, 0xef, 0xf6, 0x40, 0x6e, 0xdf, 0x33,
+ 0x9f, 0x6f, 0x0f, 0x5f, 0xbe, 0xb6, 0x30, 0x02, 0xbf, 0x2e, 0xa8, 0xc3,
+ 0x3e, 0x11, 0x75, 0x8d, 0x11, 0xe6, 0x24, 0x21, 0x0e, 0xf4, 0xf8, 0x45,
+ 0xac, 0xef, 0x6b, 0x92, 0x71, 0x73, 0x84, 0x95, 0x3a, 0x4a, 0xe8, 0x74,
+ 0x94, 0x50, 0x89, 0x56, 0x8c, 0xba, 0x56, 0x67, 0x7c, 0x43, 0x7a, 0x7b,
+ 0x04, 0xf4, 0x7a, 0x46, 0xfc, 0xec, 0x03, 0xf1, 0x58, 0x43, 0x53, 0xe6,
+ 0xda, 0x2a, 0x8f, 0x90, 0x2f, 0x89, 0x90, 0xe7, 0xe5, 0xa4, 0xbc, 0xb8,
+ 0x58, 0x23, 0xdd, 0x19, 0x91, 0x91, 0x6a, 0xa0, 0x98, 0x60, 0x36, 0xb0,
+ 0x8d, 0x78, 0x6f, 0xc2, 0x88, 0x9d, 0x95, 0xb9, 0x6a, 0x1b, 0x52, 0x98,
+ 0x20, 0xdd, 0xe9, 0x03, 0xc1, 0xe3, 0x17, 0xa6, 0xab, 0xcd, 0xa0, 0x26,
+ 0x1e, 0x15, 0xe6, 0xb3, 0x3b, 0x46, 0xd3, 0x84, 0x2c, 0xde, 0x7d, 0x9d,
+ 0xfc, 0xfd, 0x1f, 0x7f, 0xfe, 0x39, 0x02, 0xfa, 0x0f, 0x87, 0xdf, 0x15,
+ 0x57, 0x16, 0x9a, 0xa7, 0x15, 0x2c, 0xda, 0xe2, 0xb3, 0x73, 0xa2, 0x09,
+ 0xc7, 0x33, 0x9a, 0x3a, 0x9b, 0x5f, 0x8c, 0xbc, 0x9c, 0xca, 0x50, 0x2c,
+ 0xc2, 0x84, 0xd2, 0x0f, 0x52, 0x13, 0x37, 0x94, 0x82, 0x73, 0xf9, 0x2e,
+ 0xc0, 0xb2, 0xa9, 0x73, 0x8e, 0x4b, 0x99, 0xb6, 0x60, 0xba, 0x7c, 0x12,
+ 0x01, 0x7e, 0x8c, 0xeb, 0x6e, 0xd3, 0x0d, 0xa6, 0xbf, 0x3f, 0x3b, 0xb2,
+ 0xae, 0x4e, 0x9f, 0x2b, 0x5f, 0x19, 0x4a, 0xbd, 0x1b, 0x66, 0x77, 0xd9,
+ 0xc4, 0x70, 0x89, 0x5a, 0x81, 0x1f, 0x86, 0x8b, 0x3a, 0x79, 0xb1, 0x30,
+ 0x34, 0x9e, 0xf7, 0x40, 0x76, 0x7c, 0x8b, 0xd7, 0x12, 0x7d, 0xcd, 0x42,
+ 0x86, 0x5e, 0x96, 0x95, 0xd9, 0xa1, 0x85, 0x54, 0xe3, 0x4a, 0x49, 0x72,
+ 0xdb, 0x99, 0x91, 0x50, 0x81, 0x49, 0xe0, 0x0e, 0xb8, 0x7e, 0x2c, 0x1a,
+ 0x37, 0xe1, 0x9f, 0x79, 0xe8, 0x5c, 0xa4, 0xac, 0xaf, 0x8c, 0xf2, 0x68,
+ 0x66, 0x6f, 0x8c, 0x6c, 0x58, 0xeb, 0xf5, 0x40, 0x48, 0xaa, 0x52, 0xe8,
+ 0xb6, 0x28, 0x8c, 0x80, 0x2d, 0x43, 0x64, 0x0b, 0xcb, 0x30, 0x1d, 0x7f,
+ 0x45, 0xb6, 0xb9, 0xa7, 0x0f, 0xb8, 0x26, 0x2d, 0x7d, 0xc3, 0x7d, 0xd5,
+ 0x05, 0xb0, 0x1b, 0x34, 0x71, 0xd9, 0xab, 0x28, 0xd8, 0xc8, 0xb5, 0xed,
+ 0xae, 0xef, 0x89, 0xb5, 0xa6, 0x72, 0x70, 0x29, 0x17, 0xe9, 0xcc, 0x16,
+ 0xd2, 0xfb, 0x68, 0x7d, 0x54, 0x86, 0x98, 0xa2, 0x2e, 0x32, 0x9b, 0x8f,
+ 0xa4, 0xd9, 0x34, 0xa5, 0x55, 0xb9, 0x31, 0x89, 0xe1, 0x76, 0x71, 0x5d,
+ 0x6a, 0xa4, 0x08, 0x70, 0x35, 0xac, 0x38, 0xf4, 0xa9, 0xac, 0x5c, 0x3c,
+ 0x0f, 0xd1, 0x58, 0xef, 0xb9, 0xe0, 0xe5, 0x5c, 0x92, 0xd9, 0x2f, 0xf6,
+ 0x03, 0x21, 0x14, 0x53, 0x4b, 0x2d, 0x86, 0x21, 0xc1, 0xdb, 0x94, 0x5e,
+ 0x01, 0x1e, 0xc2, 0x07, 0x7e, 0x28, 0x07, 0xde, 0x19, 0x0e, 0xb1, 0x96,
+ 0xa7, 0x4f, 0x9e, 0x3c, 0xe1, 0x58, 0xcb, 0xc6, 0x11, 0x7d, 0xf8, 0xec,
+ 0xf0, 0xd5, 0xc9, 0xdb, 0xb7, 0x87, 0xef, 0x5e, 0x1f, 0xbe, 0xd6, 0x8c,
+ 0x0f, 0x6f, 0x25, 0x8e, 0x3a, 0xc2, 0x15, 0x21, 0x4b, 0xd0, 0xec, 0xf3,
+ 0xde, 0x93, 0xdd, 0xe1, 0xfe, 0x93, 0xdd, 0xc4, 0xd0, 0x62, 0x6a, 0xeb,
+ 0xd4, 0xd2, 0x79, 0x0a, 0xfb, 0xf6, 0x6a, 0x65, 0x54, 0x35, 0xa0, 0x69,
+ 0x36, 0xc0, 0xdc, 0x20, 0xd7, 0x2b, 0xbc, 0x3d, 0x59, 0x03, 0x3b, 0x3a,
+ 0x92, 0x19, 0x30, 0xda, 0xb0, 0xc0, 0x68, 0x2e, 0x60, 0x29, 0xba, 0x0f,
+ 0x11, 0xe8, 0xfe, 0x2e, 0x3e, 0x34, 0x4a, 0xde, 0x18, 0xed, 0xe3, 0xa2,
+ 0xbc, 0x65, 0x5a, 0x7c, 0x75, 0x65, 0x94, 0xd2, 0x2c, 0x0c, 0x55, 0xb6,
+ 0xdf, 0xc7, 0xeb, 0x8f, 0xf8, 0xf5, 0x7f, 0x61, 0x8c, 0xfe, 0xc9, 0xf3,
+ 0xb6, 0x61, 0x69, 0x2e, 0x32, 0x41, 0xb1, 0x6b, 0x49, 0x62, 0x0f, 0x08,
+ 0xeb, 0x98, 0xcd, 0xf1, 0x6f, 0x5f, 0x9e, 0xe2, 0x69, 0x63, 0x96, 0x9f,
+ 0xfc, 0xf8, 0x27, 0x57, 0xe6, 0x79, 0xbd, 0xa7, 0xd9, 0x8c, 0x52, 0xc9,
+ 0x4a, 0xfd, 0xe9, 0x8a, 0x30, 0xe8, 0xed, 0x94, 0x59, 0x6b, 0x10, 0xaa,
+ 0x90, 0xa1, 0x15, 0x22, 0x03, 0xd5, 0x6c, 0x1d, 0xb7, 0x8e, 0x92, 0x43,
+ 0xab, 0x6a, 0xb9, 0xe2, 0xb1, 0xba, 0x7e, 0xc3, 0xca, 0x31, 0x8d, 0xdb,
+ 0x9c, 0x5b, 0x2d, 0xe4, 0xc5, 0x8c, 0xfb, 0xb5, 0xb6, 0x1c, 0xb3, 0x4d,
+ 0xb5, 0xca, 0x62, 0x5e, 0xd3, 0xb5, 0x18, 0x3b, 0x50, 0x6a, 0xab, 0x7c,
+ 0x91, 0x56, 0x39, 0x77, 0x65, 0x07, 0x81, 0xdf, 0x70, 0x0b, 0x49, 0x4e,
+ 0x95, 0xa2, 0xd8, 0x97, 0x45, 0x73, 0x84, 0xb3, 0x26, 0x82, 0x65, 0x9e,
+ 0x4f, 0xe5, 0x4a, 0x31, 0xac, 0x91, 0xc4, 0x28, 0x79, 0xb3, 0xd6, 0x1d,
+ 0xd3, 0xd3, 0xb6, 0xfd, 0x6f, 0x15, 0x8a, 0x68, 0x09, 0x2e, 0x54, 0xdc,
+ 0x37, 0x47, 0xc7, 0x87, 0xdb, 0xc9, 0x9b, 0xac, 0x91, 0x12, 0x27, 0xcd,
+ 0x30, 0x86, 0xc8, 0xff, 0x37, 0x52, 0xb0, 0x2c, 0x0e, 0xa0, 0xd4, 0x08,
+ 0x47, 0x73, 0xc1, 0xc4, 0x07, 0x47, 0xca, 0x86, 0xd6, 0x4b, 0xf1, 0xe1,
+ 0xd0, 0x12, 0x11, 0x8f, 0xd3, 0xdc, 0x32, 0x8d, 0x6f, 0xca, 0xc9, 0x47,
+ 0xf2, 0x6e, 0x15, 0xe7, 0x61, 0xe4, 0x21, 0x9e, 0x95, 0x7e, 0x0a, 0x01,
+ 0x26, 0x2d, 0x39, 0xcf, 0x1a, 0x2f, 0xce, 0xeb, 0xe5, 0x1c, 0xdc, 0x20,
+ 0x8a, 0xf2, 0x32, 0xcf, 0x5c, 0x65, 0x1f, 0x51, 0x3e, 0x37, 0x50, 0x17,
+ 0xa3, 0x87, 0x18, 0x2a, 0xd6, 0xeb, 0x6d, 0xdc, 0xb7, 0xba, 0x71, 0x48,
+ 0x3b, 0xe1, 0x3f, 0x77, 0xbe, 0x8a, 0x82, 0x8f, 0x09, 0xa1, 0x1f, 0x52,
+ 0x2b, 0x59, 0x79, 0x83, 0x28, 0x8a, 0x5b, 0x8b, 0x8b, 0x90, 0x57, 0xb5,
+ 0xb3, 0x45, 0x09, 0x11, 0xf5, 0x95, 0x7c, 0x77, 0x6a, 0xee, 0xfe, 0x49,
+ 0xda, 0x17, 0xa9, 0xfe, 0x80, 0x12, 0x70, 0x27, 0x5d, 0xb8, 0x79, 0xad,
+ 0xcd, 0x32, 0x4e, 0x62, 0x9d, 0xc2, 0x98, 0x2b, 0x4b, 0xa7, 0x5a, 0xd6,
+ 0xa6, 0x90, 0xad, 0x9f, 0x6a, 0xba, 0xbe, 0xce, 0x17, 0x8f, 0x5d, 0x09,
+ 0x5a, 0x34, 0xf9, 0x52, 0xb8, 0x8a, 0xac, 0x8e, 0xba, 0xfc, 0xa5, 0xbc,
+ 0x4d, 0x42, 0x7b, 0xd4, 0x69, 0x94, 0x9d, 0x32, 0xac, 0x43, 0xaf, 0xa0,
+ 0xd0, 0x71, 0x65, 0x17, 0x41, 0xff, 0x57, 0x0c, 0x51, 0x19, 0xd1, 0x96,
+ 0xe4, 0xeb, 0x3e, 0x0b, 0xea, 0xea, 0xec, 0xfe, 0x67, 0xda, 0x96, 0x68,
+ 0xa8, 0x2e, 0x9a, 0xbd, 0x23, 0x9d, 0x12, 0x7d, 0x36, 0x50, 0xf5, 0x3e,
+ 0xfd, 0x98, 0x53, 0x21, 0xe2, 0x8a, 0xd4, 0xb9, 0xb4, 0xd0, 0x7a, 0x2b,
+ 0x9e, 0xa6, 0xc3, 0x56, 0x9f, 0x21, 0xe2, 0xf1, 0xa7, 0x3e, 0xed, 0x93,
+ 0x21, 0xcb, 0xe0, 0x34, 0x00, 0xec, 0xa9, 0xce, 0x67, 0x4e, 0x15, 0x0d,
+ 0xf6, 0xb6, 0xa8, 0xa2, 0x86, 0x7a, 0x48, 0xd2, 0x15, 0x23, 0x50, 0xcc,
+ 0x19, 0xf5, 0x21, 0x26, 0x97, 0x9f, 0xf6, 0xb7, 0xdf, 0xac, 0x32, 0x86,
+ 0x83, 0x1f, 0x19, 0x4b, 0x74, 0x81, 0x92, 0x00, 0x4a, 0xb3, 0x95, 0x25,
+ 0xcb, 0xf6, 0x18, 0xde, 0x76, 0x99, 0x5f, 0xc7, 0xb2, 0x2c, 0x90, 0x1f,
+ 0x21, 0x13, 0xa3, 0x2c, 0x0d, 0xd7, 0x45, 0x55, 0xd3, 0x8e, 0x6d, 0x48,
+ 0x9b, 0xfd, 0xd2, 0xc0, 0x01, 0x94, 0x9d, 0x0d, 0x6e, 0xf0, 0x1c, 0x1a,
+ 0x2b, 0x00, 0xbd, 0x0a, 0xee, 0x5b, 0xfb, 0xad, 0xd1, 0x7c, 0x0e, 0x36,
+ 0x2c, 0x88, 0x39, 0xf9, 0x55, 0x19, 0x23, 0xdc, 0xa7, 0x1c, 0xe9, 0xa4,
+ 0x3c, 0x8c, 0xb6, 0xe3, 0x12, 0xcd, 0xbd, 0x51, 0xc6, 0x65, 0x0b, 0x6e,
+ 0xc2, 0xb4, 0x66, 0x5b, 0x00, 0xc3, 0x15, 0xa3, 0x21, 0x48, 0x3b, 0xa6,
+ 0xf4, 0xe3, 0xf0, 0x15, 0x7d, 0x7c, 0xf8, 0x2d, 0x0d, 0xf7, 0xc5, 0x86,
+ 0x75, 0xf8, 0x76, 0x7f, 0x75, 0x10, 0xf6, 0xcf, 0x75, 0x7e, 0x43, 0x36,
+ 0x3c, 0x56, 0x5a, 0x95, 0x41, 0x89, 0x24, 0x32, 0x41, 0x6e, 0x4d, 0x65,
+ 0xae, 0xc8, 0x8e, 0x1e, 0xb8, 0x74, 0xbe, 0x29, 0x9a, 0xbe, 0xc6, 0xad,
+ 0x46, 0x8a, 0x2c, 0x09, 0x4c, 0x67, 0x36, 0x2c, 0x2f, 0x86, 0x94, 0x21,
+ 0x6d, 0x98, 0xff, 0x47, 0x24, 0x23, 0x79, 0xb7, 0x8e, 0x00, 0x42, 0x08,
+ 0xee, 0x7a, 0x36, 0x8b, 0xa9, 0xe6, 0x5c, 0xc8, 0x08, 0xad, 0x43, 0x08,
+ 0x5f, 0x0b, 0x2d, 0xf8, 0x20, 0x0f, 0xc4, 0x2b, 0x4f, 0xaf, 0xdb, 0xe6,
+ 0x4f, 0x40, 0xe6, 0x92, 0x82, 0x88, 0xc0, 0x9f, 0x46, 0xe5, 0x11, 0x03,
+ 0xd6, 0xde, 0x69, 0xd5, 0x64, 0xc3, 0x2d, 0xd8, 0x95, 0x4b, 0xfe, 0xe7,
+ 0xd5, 0x92, 0x54, 0x56, 0x40, 0x68, 0x06, 0xde, 0x17, 0x2d, 0x12, 0xa1,
+ 0xd6, 0x3e, 0x46, 0xf8, 0x3f, 0x19, 0xed, 0x0e, 0x82, 0x40, 0x7d, 0x43,
+ 0xc6, 0x7e, 0xe1, 0xb2, 0x84, 0xcc, 0xc3, 0xc4, 0x23, 0x87, 0xb1, 0xea,
+ 0xda, 0xba, 0xb9, 0x03, 0xbf, 0xb6, 0xc5, 0xb4, 0x94, 0x5a, 0xec, 0xea,
+ 0x1e, 0x5c, 0x4e, 0x0f, 0x6d, 0xa1, 0xb0, 0x4d, 0xae, 0xa2, 0x8d, 0xa1,
+ 0x8e, 0x4a, 0xc6, 0xd6, 0x57, 0xc3, 0x6e, 0xf7, 0x48, 0xdb, 0x04, 0xcc,
+ 0xaf, 0xde, 0xf0, 0xda, 0x79, 0xf5, 0x7a, 0x9a, 0x08, 0xbc, 0xfe, 0xa5,
+ 0xf6, 0x9b, 0x19, 0x9a, 0x4d, 0x95, 0x46, 0xa7, 0xc3, 0x0c, 0x3f, 0x64,
+ 0xc0, 0x0e, 0x85, 0xf2, 0xac, 0xfb, 0xf7, 0x8c, 0x71, 0x6d, 0x9f, 0x61,
+ 0xc7, 0x2c, 0x9a, 0xbf, 0x36, 0xae, 0x71, 0xf2, 0x81, 0xc8, 0xd6, 0xbb,
+ 0x4b, 0xdd, 0x3d, 0x03, 0x57, 0x01, 0x27, 0x28, 0x34, 0xe7, 0x9b, 0xfa,
+ 0x94, 0xdf, 0xde, 0xf5, 0xa6, 0x16, 0xf7, 0xe4, 0xfc, 0xd2, 0xb5, 0x79,
+ 0x03, 0xc5, 0x7e, 0xf8, 0xce, 0x1c, 0xc3, 0x41, 0xf2, 0x9f, 0x65, 0xc6,
+ 0x35, 0xab, 0xf7, 0x94, 0xac, 0xfe, 0xf0, 0xf2, 0xec, 0xdd, 0xd1, 0xbb,
+ 0x6f, 0x0e, 0x2c, 0x8f, 0x03, 0xbf, 0xeb, 0x76, 0x91, 0xb0, 0xbc, 0x9b,
+ 0x7e, 0xcb, 0x6d, 0xca, 0xe1, 0xfd, 0xe9, 0x83, 0xb5, 0x46, 0x2c, 0x93,
+ 0xd8, 0x33, 0x3b, 0x2f, 0xab, 0x8c, 0xe3, 0x22, 0x6c, 0x8b, 0x6a, 0xe5,
+ 0x84, 0x94, 0x6b, 0x92, 0xa8, 0x6c, 0xca, 0xf9, 0x2c, 0x06, 0xd8, 0x30,
+ 0x3c, 0xc6, 0x99, 0xcc, 0xcb, 0x56, 0x5f, 0x26, 0x10, 0xe5, 0x9c, 0x8e,
+ 0xbf, 0xf4, 0x29, 0xc0, 0x6b, 0xaf, 0x04, 0x5b, 0xaa, 0x8c, 0x74, 0xd7,
+ 0x23, 0x33, 0x8f, 0xd3, 0x70, 0x82, 0x7e, 0x34, 0xdc, 0x55, 0xa2, 0xa6,
+ 0x23, 0xab, 0x73, 0x72, 0x36, 0xd8, 0x2d, 0xd1, 0x1c, 0xaf, 0x88, 0x1f,
+ 0x84, 0xf7, 0x6a, 0x9a, 0xae, 0xf8, 0xbe, 0x30, 0x3a, 0x99, 0xfc, 0xd4,
+ 0xd5, 0x65, 0xd8, 0x1d, 0x78, 0x70, 0x9a, 0xb3, 0xcb, 0x73, 0x66, 0x7d,
+ 0x9e, 0x0d, 0x44, 0x8f, 0x65, 0x99, 0x3f, 0x21, 0x4a, 0xa2, 0x38, 0x24,
+ 0xf3, 0xcc, 0x55, 0x25, 0x59, 0x5d, 0xe7, 0x8a, 0x75, 0x9d, 0xf9, 0x32,
+ 0x00, 0xdb, 0xa3, 0x3e, 0x74, 0xf8, 0x8d, 0x3a, 0x75, 0x10, 0xbc, 0x22,
+ 0x09, 0xac, 0x66, 0x49, 0x0b, 0xdc, 0xce, 0x76, 0x4c, 0x64, 0xa6, 0x1e,
+ 0xca, 0x53, 0xe0, 0x3d, 0x65, 0x8c, 0x37, 0xe6, 0x57, 0xc0, 0x98, 0xaf,
+ 0x9b, 0x3d, 0x5e, 0xae, 0x26, 0x8b, 0xd9, 0x93, 0xe4, 0x85, 0xf9, 0x4f,
+ 0xa0, 0x64, 0x51, 0xce, 0xe8, 0xf8, 0x95, 0x51, 0xb4, 0x90, 0xe0, 0x02,
+ 0x79, 0xc1, 0x90, 0x37, 0x5e, 0xdf, 0x86, 0x47, 0xfb, 0x66, 0xa6, 0xb7,
+ 0xa9, 0x42, 0x5b, 0x1a, 0x8d, 0xf0, 0x32, 0x6f, 0x38, 0x4f, 0xaf, 0x07,
+ 0x37, 0xc8, 0x4b, 0x6d, 0xa0, 0x33, 0xdf, 0xdb, 0xff, 0x3c, 0x41, 0xf1,
+ 0xc1, 0xdb, 0xd7, 0x4f, 0x92, 0xe9, 0x55, 0x36, 0xfd, 0x58, 0xaf, 0x16,
+ 0xca, 0x8e, 0xb1, 0xa7, 0x0d, 0xa3, 0x45, 0x07, 0x88, 0x0f, 0x66, 0xe2,
+ 0xf3, 0x7c, 0x8a, 0xd2, 0xbf, 0x41, 0x2b, 0x3a, 0x75, 0xa1, 0xd1, 0x29,
+ 0xcf, 0x0e, 0xb5, 0x62, 0x83, 0xd2, 0x05, 0x38, 0xa7, 0x26, 0x12, 0xbc,
+ 0x30, 0x7b, 0x60, 0x3e, 0x5e, 0x73, 0x93, 0xe7, 0xb5, 0x2e, 0xdb, 0x67,
+ 0x6d, 0xaf, 0x37, 0x2e, 0xf6, 0xee, 0xe8, 0x79, 0x4f, 0x47, 0x76, 0xca,
+ 0x4c, 0xb1, 0x20, 0xf5, 0x30, 0xf8, 0xb5, 0xda, 0x8e, 0xec, 0x01, 0x68,
+ 0xf9, 0x98, 0x24, 0x00, 0xa1, 0x34, 0x8c, 0x17, 0x7c, 0x1c, 0x4f, 0xee,
+ 0xe0, 0x09, 0xce, 0x33, 0xe0, 0x2c, 0xb6, 0x8c, 0x30, 0x29, 0x98, 0xb4,
+ 0x28, 0x4d, 0xc8, 0x46, 0x01, 0x2d, 0xc2, 0x19, 0x85, 0x60, 0x43, 0xa5,
+ 0xcd, 0xd6, 0x7f, 0xab, 0xcb, 0xc6, 0xb1, 0x18, 0x29, 0xa1, 0xf5, 0xd0,
+ 0x1c, 0xb4, 0x96, 0x90, 0xf0, 0xda, 0x60, 0x53, 0x04, 0x44, 0x66, 0xbf,
+ 0xcb, 0x71, 0x69, 0x77, 0x1c, 0x35, 0xa3, 0x11, 0x92, 0xf3, 0x1c, 0xcd,
+ 0x53, 0xd9, 0xa2, 0x2e, 0x6f, 0x8a, 0xcb, 0x0a, 0xfe, 0x11, 0x2a, 0x0a,
+ 0x4b, 0x63, 0xb1, 0x8c, 0x98, 0x59, 0x9c, 0x5c, 0xac, 0xc8, 0x12, 0xa2,
+ 0xe1, 0x75, 0xd7, 0x04, 0x3d, 0xd3, 0xe8, 0xe8, 0x52, 0xd1, 0x48, 0xc2,
+ 0xa0, 0x03, 0x8f, 0x4a, 0x09, 0x61, 0x41, 0xa3, 0x2e, 0x70, 0x2d, 0x43,
+ 0x0e, 0xb4, 0xb5, 0x7b, 0xa3, 0x5d, 0xcd, 0xb5, 0x8a, 0xd8, 0xf2, 0xde,
+ 0x59, 0xef, 0x0e, 0xe4, 0xbc, 0xcd, 0x1b, 0x7d, 0x2d, 0x50, 0x3c, 0xf0,
+ 0x35, 0x49, 0x92, 0x69, 0x1d, 0x34, 0xbe, 0xe5, 0x29, 0xdc, 0x9c, 0x2d,
+ 0x61, 0x6e, 0x4d, 0x4f, 0x1a, 0x9f, 0xd9, 0x31, 0x71, 0x84, 0x65, 0xb3,
+ 0xd6, 0x40, 0x6b, 0x99, 0x97, 0xdf, 0x78, 0x8d, 0xa7, 0xbb, 0x27, 0xf1,
+ 0x1c, 0xfc, 0x6b, 0xbf, 0x4b, 0xbd, 0xe6, 0xd7, 0x0f, 0xa1, 0xde, 0xc8,
+ 0x5a, 0xf6, 0xd6, 0x4e, 0xa3, 0x55, 0xf2, 0xb1, 0x3b, 0x70, 0x9f, 0xdb,
+ 0xd5, 0x46, 0x91, 0x32, 0x1f, 0xbd, 0x5f, 0x61, 0x78, 0x3b, 0x84, 0xab,
+ 0xa7, 0x37, 0x50, 0x37, 0x53, 0x56, 0x43, 0xe8, 0xfe, 0xf3, 0x6c, 0x16,
+ 0xe8, 0x62, 0xb1, 0xc3, 0x20, 0x9e, 0x9d, 0xd7, 0x35, 0x94, 0x64, 0xe8,
+ 0xc7, 0x44, 0xe8, 0x88, 0x3f, 0xd1, 0x92, 0xac, 0x73, 0x20, 0x96, 0xff,
+ 0x4f, 0x44, 0xb2, 0x6f, 0x55, 0x7d, 0xa1, 0x99, 0xbd, 0xe4, 0xfd, 0x92,
+ 0x28, 0x19, 0x91, 0xf2, 0xc6, 0x6b, 0xb5, 0x90, 0xd0, 0xe4, 0x18, 0xa9,
+ 0x25, 0x36, 0x3b, 0xf6, 0x94, 0xf9, 0x0d, 0x95, 0xb4, 0xf0, 0xb3, 0xd6,
+ 0x4f, 0xd5, 0xa8, 0xa8, 0x75, 0x3d, 0xde, 0x18, 0x66, 0x5f, 0xe7, 0x18,
+ 0xc3, 0x07, 0xe6, 0x0b, 0x6a, 0x34, 0x56, 0x19, 0xa0, 0x95, 0x94, 0x0f,
+ 0xdc, 0x73, 0x8e, 0x05, 0xd9, 0x76, 0x7b, 0x33, 0xd7, 0xef, 0x2d, 0xe2,
+ 0xa8, 0xc9, 0x5d, 0x17, 0xee, 0x0e, 0x42, 0x60, 0x10, 0x49, 0x8a, 0x1e,
+ 0xc7, 0x83, 0xfb, 0x17, 0x04, 0x40, 0x60, 0x39, 0x3b, 0xdb, 0xb4, 0x10,
+ 0x96, 0x57, 0x33, 0x7a, 0x18, 0x71, 0xef, 0x0e, 0xa2, 0xb3, 0x03, 0xb9,
+ 0xf9, 0xc4, 0xdf, 0x42, 0xd5, 0x7b, 0x1e, 0x21, 0xae, 0x5f, 0x75, 0x17,
+ 0xf6, 0xd7, 0xc5, 0x53, 0x8d, 0xb5, 0x96, 0xce, 0x97, 0xc5, 0x48, 0xbf,
+ 0xf0, 0xa0, 0xfd, 0xe9, 0x1e, 0xb3, 0xed, 0xf6, 0xf0, 0xeb, 0xf6, 0xa7,
+ 0xbb, 0x37, 0x3e, 0x2f, 0xf3, 0xf7, 0xa7, 0x7b, 0x96, 0x6b, 0x7b, 0x47,
+ 0x70, 0xdd, 0xba, 0x76, 0x4e, 0x1f, 0x72, 0x6d, 0x5e, 0xac, 0x2c, 0x25,
+ 0x91, 0x1b, 0xa9, 0xb8, 0x73, 0x83, 0xe4, 0x88, 0x31, 0x95, 0x29, 0x31,
+ 0x42, 0x5e, 0x3f, 0xe6, 0xd2, 0x3e, 0x71, 0xb9, 0xa9, 0xbb, 0x31, 0x52,
+ 0xfc, 0x9b, 0x4f, 0x81, 0xec, 0xe4, 0x9c, 0x7d, 0x50, 0xd6, 0x6d, 0xeb,
+ 0x8c, 0x15, 0x79, 0x33, 0x93, 0x97, 0x4b, 0x54, 0xe7, 0x19, 0x1e, 0x75,
+ 0x6b, 0x3b, 0xa1, 0xc6, 0x7a, 0x89, 0x1b, 0x0d, 0x8e, 0x5a, 0x9d, 0x18,
+ 0xd9, 0x25, 0x49, 0xbf, 0xdd, 0xe9, 0xd0, 0xe8, 0x8c, 0xbc, 0x36, 0x47,
+ 0x9a, 0x7b, 0xc5, 0x3a, 0xeb, 0x7e, 0x72, 0x99, 0x5f, 0x06, 0x88, 0xee,
+ 0x93, 0xbb, 0x26, 0x52, 0x81, 0x82, 0x55, 0x63, 0x17, 0xb6, 0x6a, 0x49,
+ 0x70, 0x7b, 0xfc, 0x74, 0xb4, 0xbb, 0x3d, 0x40, 0x4b, 0xe8, 0x25, 0xed,
+ 0x00, 0x4a, 0x04, 0xac, 0x5e, 0x87, 0x0a, 0x99, 0xfc, 0x12, 0xc2, 0x8e,
+ 0x1c, 0x0b, 0x91, 0x4c, 0x10, 0x38, 0xd6, 0x24, 0xc3, 0x4a, 0xd3, 0x97,
+ 0x04, 0xe9, 0xb2, 0x5d, 0x1d, 0x97, 0x0f, 0xa8, 0xcb, 0x14, 0xb9, 0xc5,
+ 0xba, 0x7e, 0x6b, 0x71, 0x96, 0xb9, 0x16, 0xf0, 0x9e, 0x24, 0x57, 0x65,
+ 0x5b, 0x78, 0x80, 0x74, 0x07, 0xa0, 0x98, 0x82, 0x70, 0xcb, 0x20, 0x2c,
+ 0xda, 0x7e, 0x71, 0x4a, 0x4e, 0x15, 0xfe, 0x82, 0xd8, 0xbe, 0x6c, 0x61,
+ 0x58, 0x8e, 0x07, 0x03, 0x15, 0xae, 0x44, 0xee, 0xbb, 0x30, 0x08, 0x11,
+ 0xbd, 0xac, 0xdb, 0xcb, 0x61, 0xd4, 0xb6, 0x2e, 0x9c, 0xe2, 0xca, 0x8e,
+ 0x46, 0xa3, 0x48, 0x25, 0xfd, 0x75, 0x9e, 0xdd, 0xb4, 0xbc, 0x80, 0x32,
+ 0xb3, 0x81, 0xed, 0xcd, 0xc0, 0xc6, 0xe7, 0x35, 0x76, 0xc8, 0x0c, 0x39,
+ 0x29, 0x6d, 0xf7, 0xf1, 0x35, 0x17, 0xd9, 0x7f, 0xda, 0xdb, 0xe6, 0x8f,
+ 0xbc, 0xcd, 0x75, 0xac, 0x14, 0x8d, 0x31, 0x59, 0x1d, 0x94, 0xfc, 0x00,
+ 0xc6, 0x58, 0x75, 0x97, 0x50, 0xcf, 0x00, 0xa7, 0xa4, 0x12, 0x5f, 0xe1,
+ 0xd4, 0xe7, 0xbc, 0x66, 0x48, 0x54, 0x86, 0x34, 0x09, 0x03, 0x55, 0xfc,
+ 0x99, 0xf6, 0x9d, 0x17, 0x07, 0x9d, 0x72, 0x27, 0xc3, 0xda, 0xa7, 0xb0,
+ 0x81, 0x49, 0xc8, 0x2a, 0x0e, 0x3a, 0x59, 0x81, 0x91, 0xac, 0x07, 0x39,
+ 0x11, 0xaf, 0x69, 0x82, 0x17, 0xa4, 0x77, 0x9d, 0x2c, 0x12, 0x5d, 0x60,
+ 0x3c, 0xd4, 0xa4, 0xe7, 0xea, 0x07, 0x80, 0xfc, 0x95, 0x4c, 0xee, 0xb4,
+ 0x11, 0x93, 0xb8, 0x81, 0x1c, 0xd4, 0x6b, 0x57, 0x3d, 0x75, 0xa5, 0x71,
+ 0x0e, 0xce, 0xc7, 0x39, 0xd4, 0x18, 0x37, 0x8c, 0x56, 0x26, 0x83, 0xd7,
+ 0x3e, 0x46, 0x6f, 0x50, 0xe5, 0x6c, 0x2b, 0x2f, 0x69, 0x60, 0x6e, 0xf7,
+ 0x11, 0x3d, 0x62, 0x56, 0xfd, 0xb8, 0xe0, 0x1e, 0x0d, 0x67, 0x56, 0x88,
+ 0x79, 0xd3, 0xdd, 0x97, 0xc2, 0x59, 0xa9, 0x95, 0xed, 0xe2, 0x28, 0x58,
+ 0x34, 0x2a, 0xec, 0xfe, 0xe8, 0x2a, 0xbd, 0xbd, 0x1d, 0xd5, 0xd9, 0x8e,
+ 0xa1, 0xda, 0x7a, 0xa7, 0xae, 0xe7, 0xf8, 0x68, 0x4d, 0xc0, 0x4f, 0x6b,
+ 0x7b, 0xd9, 0xdd, 0xde, 0x59, 0x02, 0x12, 0x66, 0x3c, 0x4d, 0xf1, 0x6a,
+ 0x8b, 0xd9, 0xba, 0x66, 0x76, 0xdc, 0x9b, 0xa2, 0x9b, 0xad, 0xc8, 0x98,
+ 0xb7, 0x84, 0xde, 0xec, 0x17, 0xfa, 0x31, 0x6b, 0x70, 0x79, 0x21, 0x76,
+ 0x1c, 0x07, 0xe5, 0x0d, 0x94, 0xdb, 0xaa, 0x2f, 0xab, 0x5c, 0xee, 0xaa,
+ 0x17, 0x95, 0x31, 0x9b, 0x62, 0x73, 0xaf, 0x8d, 0x7c, 0x70, 0x88, 0x1e,
+ 0xdc, 0xff, 0x85, 0xdb, 0xd6, 0x47, 0xd0, 0x66, 0xfa, 0x3c, 0x26, 0xde,
+ 0xd2, 0x90, 0xa5, 0x7e, 0xe0, 0xb0, 0xcd, 0x6e, 0x6e, 0x6e, 0x46, 0xeb,
+ 0x5c, 0x26, 0xff, 0x74, 0xf8, 0xad, 0x3d, 0xdc, 0x89, 0xa1, 0xda, 0x63,
+ 0x63, 0x47, 0xdc, 0x26, 0x1e, 0xbc, 0x84, 0xed, 0x43, 0xa2, 0x31, 0x81,
+ 0xe4, 0xfb, 0xb3, 0x37, 0xb6, 0xed, 0xad, 0x16, 0xf6, 0xc3, 0xe9, 0x54,
+ 0x87, 0xee, 0xf1, 0x2c, 0x67, 0xc8, 0x0f, 0xe0, 0xd5, 0xbe, 0x7a, 0x79,
+ 0xfa, 0xe1, 0xdd, 0xe1, 0xf9, 0x87, 0xb3, 0x97, 0x3f, 0x60, 0x0b, 0xd9,
+ 0x20, 0x34, 0xf2, 0x0a, 0xae, 0xc8, 0xaa, 0x2c, 0xd1, 0xc2, 0xea, 0x2d,
+ 0x55, 0x2c, 0xe5, 0x05, 0x21, 0x3b, 0x44, 0x9b, 0x2a, 0x5b, 0xb8, 0x1a,
+ 0x99, 0xa7, 0x99, 0xcb, 0x41, 0xd2, 0xda, 0xaf, 0x8f, 0xc6, 0x72, 0xc8,
+ 0xe6, 0xa3, 0xb2, 0xba, 0x04, 0x15, 0xee, 0xbc, 0x16, 0xfe, 0x19, 0x1d,
+ 0x6e, 0x47, 0x02, 0xaa, 0x40, 0x3f, 0xba, 0xae, 0x2e, 0x00, 0x96, 0xb0,
+ 0xae, 0x9d, 0xbc, 0xdf, 0x8f, 0xcc, 0x23, 0xcd, 0xc7, 0xc4, 0x00, 0x97,
+ 0xd7, 0x8f, 0xd7, 0x18, 0x03, 0x4d, 0x4b, 0x7f, 0x92, 0x8e, 0x4e, 0x44,
+ 0x41, 0x64, 0x76, 0xfa, 0x61, 0x72, 0x2e, 0x0c, 0x9b, 0xdf, 0x0d, 0x22,
+ 0xb5, 0xd7, 0x04, 0xe6, 0x5d, 0xda, 0x2a, 0x76, 0xaa, 0xad, 0x41, 0x7c,
+ 0x7f, 0x7d, 0x23, 0x35, 0xd5, 0x83, 0xba, 0x66, 0x47, 0x5f, 0x85, 0xfa,
+ 0xf0, 0x69, 0xa8, 0x4b, 0xa2, 0xc5, 0x9a, 0xb7, 0xe6, 0xa7, 0xb2, 0xe6,
+ 0xa7, 0xff, 0xd4, 0x9a, 0x9f, 0xfe, 0x13, 0x6b, 0x7e, 0xfc, 0x1b, 0xaf,
+ 0xf9, 0x71, 0x74, 0xcd, 0xde, 0x57, 0x86, 0x7f, 0xc1, 0x9a, 0xff, 0xb2,
+ 0x2a, 0x3e, 0x0e, 0xcd, 0x7c, 0x21, 0x85, 0xa5, 0xe1, 0x52, 0x1d, 0x57,
+ 0x99, 0x5b, 0x3d, 0x3e, 0xc8, 0xad, 0xe8, 0xb0, 0x4d, 0xbd, 0xfe, 0x51,
+ 0xa9, 0x54, 0x8b, 0x72, 0x74, 0xb1, 0xb7, 0x0f, 0xb6, 0xe7, 0x75, 0xce,
+ 0x51, 0x6a, 0x58, 0x4f, 0x61, 0xdb, 0xc0, 0x31, 0xb6, 0x21, 0xb3, 0xd1,
+ 0x61, 0x37, 0xb4, 0xe5, 0x03, 0xdd, 0xf4, 0x34, 0x84, 0x58, 0x99, 0x92,
+ 0x61, 0x4d, 0x77, 0xd2, 0x86, 0xdf, 0x5c, 0x17, 0xe6, 0xfc, 0xc2, 0xc2,
+ 0xcf, 0xe8, 0xc0, 0x1c, 0x92, 0x80, 0xbb, 0x39, 0xe4, 0x19, 0xe7, 0x77,
+ 0x4b, 0x0c, 0x68, 0x64, 0x73, 0x65, 0x64, 0x30, 0xc7, 0xc0, 0xb9, 0x45,
+ 0xb8, 0x9d, 0x64, 0xd2, 0x99, 0xa0, 0x38, 0x5a, 0xaf, 0xb2, 0xbb, 0xcd,
+ 0x40, 0x61, 0x98, 0xce, 0x4b, 0xf0, 0x1b, 0xe8, 0x75, 0x6b, 0x34, 0x91,
+ 0x89, 0xeb, 0x76, 0xc5, 0xf2, 0xa2, 0xd3, 0xfe, 0xca, 0x97, 0x1b, 0x1f,
+ 0xb3, 0x6c, 0x99, 0xce, 0xa9, 0xaa, 0x1f, 0x61, 0xd7, 0xbe, 0x1e, 0x3d,
+ 0xad, 0xbc, 0x2c, 0xcd, 0x59, 0xa6, 0x37, 0x5a, 0x49, 0x2f, 0xc4, 0xe7,
+ 0xf8, 0x20, 0x91, 0xa4, 0x9f, 0xe4, 0x33, 0x2a, 0xb3, 0x8b, 0xb7, 0x6c,
+ 0x70, 0x78, 0xf0, 0x76, 0x12, 0x64, 0x78, 0x4e, 0x04, 0x7e, 0xc2, 0x7e,
+ 0x42, 0x21, 0xac, 0x90, 0x15, 0x70, 0x9d, 0x23, 0x1b, 0xa8, 0x0b, 0x7b,
+ 0x6a, 0xdf, 0xe7, 0xd7, 0x09, 0xd0, 0xa6, 0x05, 0xda, 0xce, 0x07, 0x88,
+ 0x27, 0x4a, 0x2b, 0xff, 0xa0, 0x6e, 0x50, 0xd7, 0xc0, 0x80, 0xa4, 0x14,
+ 0xbb, 0x95, 0xf5, 0xdf, 0xf3, 0x57, 0xa7, 0x1f, 0xbe, 0x3b, 0x3c, 0x3c,
+ 0x3d, 0x7a, 0x7d, 0x7c, 0x28, 0x17, 0xc6, 0xfe, 0xe8, 0xdd, 0xf9, 0xf7,
+ 0xc7, 0xda, 0xa2, 0x4a, 0x69, 0x31, 0x20, 0x78, 0x41, 0x1c, 0x67, 0xa6,
+ 0x3c, 0xa0, 0x4e, 0x3c, 0x45, 0x93, 0xbc, 0x3c, 0xfa, 0xd1, 0x68, 0xad,
+ 0xa7, 0xc3, 0xf7, 0x3f, 0x06, 0x6d, 0x10, 0xbc, 0xf4, 0xf6, 0xde, 0x8e,
+ 0xe0, 0x86, 0x10, 0xc9, 0x76, 0x74, 0x6b, 0xef, 0xcb, 0xf6, 0xf9, 0x8d,
+ 0xc5, 0xa0, 0x19, 0x6e, 0x55, 0x58, 0x85, 0x81, 0x5f, 0xd4, 0x56, 0x23,
+ 0x5e, 0x46, 0xcd, 0xd3, 0x5d, 0xed, 0xe0, 0xb4, 0xd6, 0x5f, 0xfa, 0x79,
+ 0xdb, 0x66, 0xfc, 0x98, 0xdd, 0x11, 0x7c, 0x5c, 0xf2, 0x02, 0xff, 0x8d,
+ 0x77, 0xd8, 0x3a, 0xad, 0xf2, 0x6b, 0xe8, 0x7f, 0xe6, 0x59, 0x8e, 0x26,
+ 0xe1, 0xd1, 0x91, 0xed, 0x37, 0x26, 0x11, 0x2d, 0x0c, 0x42, 0x41, 0x6f,
+ 0x1a, 0x94, 0x08, 0x2b, 0x88, 0x8a, 0xe6, 0x33, 0xf6, 0x75, 0xf0, 0x78,
+ 0x34, 0xa0, 0xd9, 0x9e, 0x51, 0xf2, 0xfa, 0xf0, 0x6c, 0x90, 0x9c, 0x1e,
+ 0xbe, 0xe5, 0x1c, 0xf9, 0xc3, 0x77, 0xdf, 0x70, 0x0b, 0x36, 0xed, 0xac,
+ 0x45, 0x41, 0xd8, 0x30, 0x4f, 0xcc, 0xdb, 0x13, 0xf3, 0x2e, 0x25, 0xc5,
+ 0xd5, 0xb5, 0x91, 0xae, 0x9f, 0x10, 0xbb, 0x83, 0xd7, 0xf6, 0xc2, 0xfc,
+ 0x27, 0xb6, 0x55, 0xc6, 0x8e, 0xf8, 0x36, 0xb2, 0x5d, 0xa2, 0x98, 0xd9,
+ 0xb0, 0xbd, 0x18, 0x05, 0xd8, 0x0d, 0xde, 0x31, 0xb3, 0x21, 0x61, 0x00,
+ 0x59, 0x37, 0x88, 0xcc, 0x3e, 0x42, 0x2f, 0xe1, 0x66, 0x99, 0x12, 0xfe,
+ 0x83, 0x15, 0x6b, 0x3e, 0x37, 0x00, 0x5d, 0x12, 0x16, 0xb2, 0xdb, 0x8c,
+ 0x58, 0x61, 0x66, 0x95, 0x4b, 0xfd, 0x92, 0x0b, 0xbd, 0x18, 0x85, 0x6a,
+ 0x96, 0xcf, 0xa8, 0xf2, 0xdb, 0x7c, 0xa3, 0xac, 0x66, 0x11, 0xdc, 0x5b,
+ 0xb3, 0x71, 0x2a, 0x32, 0xd8, 0xdd, 0xa1, 0xa9, 0x5f, 0xda, 0x69, 0x6d,
+ 0x9e, 0x4f, 0x2a, 0xa3, 0x70, 0xb9, 0x46, 0x01, 0xda, 0x0d, 0x6e, 0xf9,
+ 0x71, 0x5a, 0xef, 0xed, 0x45, 0x5a, 0x9d, 0x6b, 0x39, 0xd4, 0x40, 0x73,
+ 0xf8, 0x4e, 0xbf, 0x7b, 0x35, 0xfe, 0xdd, 0xde, 0x1e, 0xa5, 0x4c, 0x6e,
+ 0x21, 0xb5, 0xed, 0xd9, 0x93, 0xbd, 0xfd, 0xed, 0x98, 0xbe, 0x17, 0xe4,
+ 0x00, 0x90, 0xfe, 0xb7, 0xf4, 0xf6, 0x9b, 0x02, 0x62, 0x92, 0x1e, 0x6d,
+ 0x07, 0x9e, 0x65, 0x48, 0x27, 0x42, 0x0d, 0x98, 0x8d, 0x7c, 0x50, 0x9e,
+ 0x55, 0x10, 0xa6, 0xf5, 0x2a, 0x61, 0x37, 0x78, 0xfe, 0x07, 0x1b, 0x96,
+ 0x10, 0xfc, 0x8c, 0x53, 0x8a, 0x56, 0x7b, 0xf3, 0x26, 0x02, 0xed, 0xba,
+ 0xe2, 0xfd, 0x75, 0x51, 0x52, 0x94, 0x03, 0xa5, 0x61, 0x79, 0xe3, 0xda,
+ 0xcc, 0x75, 0x82, 0x89, 0x88, 0x25, 0x06, 0xee, 0x38, 0x99, 0xd1, 0x46,
+ 0xc2, 0x27, 0x0e, 0x12, 0x4d, 0xdd, 0xa8, 0x76, 0xff, 0xbd, 0x2b, 0xdd,
+ 0x1e, 0x35, 0x48, 0xb2, 0x22, 0xf1, 0xba, 0x61, 0x2e, 0xdb, 0x46, 0x74,
+ 0xc4, 0x4f, 0x7a, 0x89, 0xaa, 0x49, 0xf2, 0x62, 0x6e, 0x5e, 0x9c, 0xc7,
+ 0xcb, 0x74, 0x0e, 0xb9, 0x33, 0xcf, 0x77, 0xc6, 0xb8, 0xcf, 0xaa, 0xb2,
+ 0xee, 0x14, 0x14, 0x68, 0xd3, 0x75, 0xf6, 0x81, 0xd0, 0x30, 0x02, 0x43,
+ 0x1a, 0x26, 0x6b, 0xe2, 0xd0, 0x64, 0x77, 0x02, 0x0c, 0x8f, 0x4d, 0xaa,
+ 0x6b, 0xd8, 0x1c, 0x24, 0x9b, 0xe8, 0x45, 0x83, 0x3f, 0xa9, 0x09, 0x3b,
+ 0x1a, 0x47, 0xe4, 0xe9, 0x7c, 0x13, 0x1d, 0x42, 0xba, 0xb8, 0xc3, 0x42,
+ 0x6b, 0x9b, 0x86, 0xfb, 0xf1, 0x68, 0xb8, 0xce, 0x54, 0x19, 0x2d, 0xf3,
+ 0x10, 0x24, 0xd7, 0x5a, 0xd2, 0x66, 0x28, 0x4d, 0x5c, 0xaa, 0x21, 0xeb,
+ 0xa0, 0x6b, 0x8a, 0x1d, 0xae, 0x0d, 0xb3, 0xd2, 0x97, 0x8d, 0xf8, 0x1b,
+ 0xcb, 0x15, 0x3e, 0x86, 0x5f, 0xda, 0xdd, 0xd6, 0xf9, 0x3b, 0x3b, 0xc3,
+ 0xe9, 0x61, 0xf9, 0xe7, 0xac, 0xaf, 0x47, 0xdb, 0x56, 0xbe, 0xe4, 0x4a,
+ 0x52, 0x7f, 0x49, 0x04, 0x5f, 0x8e, 0xda, 0x87, 0x19, 0x9b, 0x71, 0x52,
+ 0x26, 0xe7, 0xb7, 0x9a, 0x13, 0x85, 0x20, 0x0c, 0xa4, 0xdd, 0xd8, 0xa0,
+ 0x58, 0xaa, 0xd3, 0x1e, 0xb2, 0xb9, 0xfd, 0x2a, 0x11, 0xff, 0x01, 0x15,
+ 0x51, 0xdc, 0x54, 0x80, 0x56, 0x2c, 0x1c, 0x40, 0xeb, 0x3c, 0xeb, 0x03,
+ 0xdc, 0x51, 0xf4, 0x45, 0x73, 0x48, 0x73, 0xe9, 0x83, 0xa6, 0x99, 0x4b,
+ 0x95, 0x4e, 0x6b, 0x28, 0x81, 0x5f, 0xb5, 0xf0, 0xf1, 0xde, 0xbf, 0xfd,
+ 0x93, 0x27, 0x27, 0xad, 0xeb, 0x18, 0x85, 0x23, 0x52, 0x52, 0xfd, 0x60,
+ 0x5c, 0xa9, 0x4e, 0x49, 0x10, 0x65, 0x17, 0x0f, 0x49, 0x88, 0xbc, 0x30,
+ 0xfc, 0x34, 0x0b, 0x80, 0x75, 0xda, 0x2d, 0x44, 0x17, 0xd2, 0x20, 0xd2,
+ 0x55, 0xdc, 0x24, 0xf4, 0xae, 0xed, 0x5f, 0xeb, 0xfb, 0xdf, 0x87, 0xd0,
+ 0x31, 0xbb, 0xfe, 0x31, 0xb4, 0x36, 0x70, 0x25, 0x9d, 0x74, 0x6d, 0x09,
+ 0xb8, 0x5a, 0x01, 0x51, 0x34, 0xa3, 0x92, 0x37, 0x04, 0xce, 0x63, 0xc9,
+ 0xd5, 0x23, 0x6b, 0x20, 0x0d, 0x9c, 0x16, 0x94, 0x1c, 0xcd, 0xdd, 0x02,
+ 0x30, 0x18, 0x32, 0xc8, 0x66, 0xec, 0xca, 0xa4, 0x23, 0xb1, 0xf3, 0xc4,
+ 0xdd, 0x93, 0x79, 0x31, 0xc2, 0xba, 0xb9, 0xd1, 0x81, 0x6e, 0x3f, 0x31,
+ 0x43, 0xdc, 0xe4, 0xb3, 0xe6, 0x8a, 0xfa, 0x77, 0xa8, 0x29, 0x53, 0x4b,
+ 0x0d, 0x31, 0xbc, 0xca, 0x79, 0x58, 0x21, 0x33, 0x89, 0x7b, 0xdc, 0xf8,
+ 0xc4, 0x68, 0x4f, 0x13, 0xc6, 0xd2, 0x81, 0x63, 0x8d, 0x8e, 0x81, 0x9c,
+ 0xd0, 0x3b, 0xac, 0x9a, 0x59, 0x14, 0x89, 0xd4, 0x5c, 0xa2, 0x0b, 0x74,
+ 0xe6, 0x08, 0x5d, 0xea, 0x5a, 0xca, 0x32, 0xb2, 0x57, 0x84, 0xdb, 0xf5,
+ 0x7c, 0x64, 0x08, 0xed, 0xef, 0x36, 0xb5, 0x07, 0x25, 0x40, 0xd2, 0xbc,
+ 0x7c, 0x7b, 0x73, 0x43, 0x3f, 0xe6, 0x21, 0xaa, 0x3b, 0x7d, 0xde, 0xb0,
+ 0xb6, 0x05, 0xbf, 0xfe, 0x76, 0x53, 0x1d, 0x9b, 0xa8, 0xad, 0xbe, 0x4c,
+ 0xe5, 0xd7, 0x8c, 0xab, 0xb0, 0x79, 0xc9, 0x0f, 0x7d, 0xa3, 0x0f, 0x85,
+ 0xfd, 0x2f, 0xe1, 0x66, 0x67, 0xb7, 0xba, 0x26, 0xde, 0xd4, 0x07, 0x48,
+ 0xe6, 0xfe, 0x6e, 0x90, 0x3c, 0x5a, 0xd0, 0xa1, 0xec, 0x7d, 0x13, 0x45,
+ 0x1f, 0xe1, 0xc4, 0x32, 0x98, 0x4b, 0x9a, 0x15, 0x30, 0xfc, 0x13, 0xac,
+ 0x24, 0xda, 0x33, 0xa6, 0x4c, 0x5b, 0x37, 0xc2, 0xb5, 0x49, 0x4e, 0x7a,
+ 0x75, 0x95, 0x19, 0x1c, 0xd5, 0x12, 0x5a, 0xfd, 0x2c, 0x53, 0x44, 0xe1,
+ 0x05, 0xb9, 0x23, 0x91, 0x59, 0xb1, 0x94, 0xd2, 0x79, 0x90, 0xea, 0xd0,
+ 0xc2, 0x15, 0xd6, 0x73, 0x3c, 0x40, 0x2d, 0x75, 0xca, 0x20, 0x0b, 0x73,
+ 0xbe, 0x24, 0x8b, 0xc6, 0x76, 0xbd, 0xf2, 0xa6, 0x84, 0x0a, 0xb8, 0x69,
+ 0x22, 0x4e, 0x99, 0x4f, 0x28, 0x12, 0xe7, 0x94, 0xce, 0x93, 0xd7, 0xcd,
+ 0x30, 0x82, 0x0d, 0xc9, 0x41, 0x9b, 0xd3, 0x93, 0xd3, 0x47, 0xdb, 0xb6,
+ 0x72, 0x8f, 0xd1, 0xd8, 0xa4, 0x98, 0x3a, 0xd1, 0xdc, 0x60, 0x5b, 0x66,
+ 0xad, 0x58, 0xae, 0x54, 0xd2, 0x13, 0x1a, 0x83, 0xd3, 0x4c, 0x9b, 0x6f,
+ 0xd0, 0xf7, 0xc8, 0x43, 0xef, 0x52, 0xca, 0xbd, 0xbe, 0x69, 0xee, 0x5a,
+ 0x32, 0x4f, 0x40, 0x6a, 0xd8, 0x67, 0x21, 0x04, 0x85, 0x64, 0xe1, 0x08,
+ 0x7e, 0xc3, 0x90, 0x4a, 0x85, 0x92, 0x76, 0xfb, 0x01, 0xe4, 0x39, 0x77,
+ 0x26, 0xc9, 0x49, 0x0a, 0x91, 0xf4, 0x0f, 0xa9, 0xc8, 0x71, 0x0f, 0x52,
+ 0x04, 0x41, 0x0b, 0xa7, 0x58, 0xde, 0xda, 0x80, 0x2a, 0xdc, 0x9b, 0x20,
+ 0x5b, 0xc6, 0x5f, 0x1d, 0xf5, 0xf6, 0x8c, 0xb6, 0x18, 0xf8, 0x2d, 0x13,
+ 0x4a, 0x3a, 0x1c, 0xa5, 0xc9, 0xbb, 0xe3, 0xf1, 0xb9, 0x1f, 0xf5, 0x21,
+ 0x3d, 0x2c, 0x48, 0x7b, 0x6c, 0x83, 0x40, 0x79, 0xb9, 0x03, 0xc7, 0x47,
+ 0xe3, 0xf3, 0x51, 0x0c, 0xdd, 0xfd, 0x20, 0x19, 0x23, 0x33, 0xff, 0x8d,
+ 0x97, 0xc4, 0xc1, 0x5d, 0x84, 0xa9, 0xa6, 0x8c, 0x43, 0x59, 0x94, 0x38,
+ 0x66, 0xc6, 0xcd, 0x2b, 0xbf, 0x81, 0x6e, 0x40, 0xa9, 0x98, 0xe2, 0x17,
+ 0x9c, 0xd2, 0x28, 0xe9, 0x90, 0x1a, 0xd6, 0xa9, 0x57, 0x93, 0xa1, 0x87,
+ 0xba, 0xc6, 0xfa, 0x0e, 0xb5, 0xf3, 0x31, 0xd4, 0x6b, 0x24, 0xd4, 0xc7,
+ 0xd0, 0x28, 0xdc, 0x12, 0x7a, 0x62, 0x42, 0x12, 0xbc, 0xbc, 0x96, 0x77,
+ 0x7a, 0x9a, 0x64, 0x84, 0xcf, 0x49, 0x7e, 0x21, 0x3c, 0xfd, 0x20, 0xa2,
+ 0xc2, 0x46, 0x74, 0xf6, 0x51, 0xfa, 0xbf, 0xb5, 0xb3, 0x9b, 0x11, 0x65,
+ 0xf3, 0x50, 0xc4, 0xd6, 0x05, 0x16, 0x3d, 0x2a, 0x54, 0x38, 0x3f, 0xa1,
+ 0x3a, 0x6e, 0x48, 0xcd, 0x4e, 0x22, 0x3b, 0xeb, 0x3e, 0xc0, 0xd0, 0x7c,
+ 0xc6, 0x98, 0x79, 0x75, 0x1b, 0x34, 0x8f, 0x0b, 0xa4, 0xc1, 0x72, 0xb8,
+ 0x59, 0x08, 0x3c, 0x19, 0x3d, 0x27, 0xc9, 0x3e, 0xb4, 0x56, 0x2a, 0xdb,
+ 0xf0, 0x47, 0x4e, 0x8e, 0xa4, 0xc0, 0xd6, 0x20, 0x06, 0xe6, 0x14, 0x83,
+ 0x20, 0xb1, 0x40, 0x0d, 0x45, 0xf2, 0xfe, 0xe8, 0xf5, 0xb1, 0xdd, 0x2f,
+ 0xd9, 0x1f, 0x4a, 0xb7, 0xb3, 0x4b, 0x45, 0x0a, 0xbc, 0x32, 0x4d, 0x3a,
+ 0x91, 0x20, 0x4a, 0xb3, 0x2a, 0x72, 0xf3, 0xfd, 0x84, 0x55, 0xd7, 0x0b,
+ 0x64, 0x7d, 0x57, 0xd4, 0xe3, 0x5b, 0xc5, 0xd8, 0x66, 0x6d, 0x5b, 0x5e,
+ 0xe5, 0x33, 0xb9, 0xa9, 0x1f, 0x35, 0xdc, 0xd8, 0x93, 0xab, 0xb8, 0x16,
+ 0x65, 0x61, 0xaf, 0x0d, 0x85, 0x48, 0x88, 0xa8, 0x02, 0x5c, 0x64, 0xc4,
+ 0xd1, 0x0e, 0x95, 0x3a, 0x05, 0xca, 0x45, 0xc6, 0x50, 0xd2, 0x2e, 0x85,
+ 0xa6, 0x0d, 0xc9, 0x51, 0x56, 0x52, 0x22, 0xb5, 0xf5, 0xe6, 0xec, 0xe4,
+ 0xed, 0xf0, 0xfc, 0x84, 0x1a, 0x63, 0xd3, 0xd0, 0x49, 0x44, 0xdf, 0xe4,
+ 0xb7, 0x6a, 0xbf, 0xbb, 0x77, 0x3b, 0xd7, 0x6c, 0xab, 0xde, 0xd6, 0xe6,
+ 0xdb, 0x24, 0x50, 0x68, 0x7a, 0xfa, 0x56, 0xd0, 0xea, 0xa0, 0x60, 0x4d,
+ 0x84, 0x1c, 0x0f, 0x86, 0x96, 0xa6, 0x29, 0x14, 0x46, 0x1b, 0x79, 0xa2,
+ 0x01, 0x94, 0x75, 0x4f, 0x56, 0xf5, 0x5d, 0x22, 0x85, 0x68, 0x35, 0x27,
+ 0x46, 0x36, 0xa1, 0x3b, 0x5f, 0x91, 0xbd, 0x2c, 0xa8, 0x09, 0x0a, 0x74,
+ 0xb8, 0x02, 0xa4, 0x29, 0xcd, 0xed, 0x4d, 0xab, 0xaa, 0xbc, 0x51, 0xb9,
+ 0x45, 0x65, 0xa2, 0xe6, 0x18, 0xcd, 0xd4, 0x71, 0x4e, 0xd5, 0x5d, 0x2f,
+ 0x12, 0x84, 0x80, 0x1b, 0x69, 0x97, 0xe1, 0xb5, 0xea, 0xdf, 0x93, 0x76,
+ 0x7d, 0xbe, 0x66, 0x8b, 0x0e, 0x9b, 0x6a, 0x55, 0x87, 0x0d, 0xcb, 0x35,
+ 0x4f, 0xe7, 0x98, 0x42, 0xc3, 0x48, 0x30, 0xf5, 0xde, 0x19, 0x08, 0x00,
+ 0x1b, 0xf0, 0x3a, 0xa8, 0x35, 0x94, 0xad, 0xe6, 0xd1, 0x26, 0x25, 0x7f,
+ 0x08, 0x6e, 0xb0, 0xc0, 0xb2, 0x42, 0xa9, 0x47, 0xcb, 0x47, 0x4a, 0x31,
+ 0x75, 0x3d, 0xfb, 0xf2, 0x86, 0x7b, 0xf5, 0x69, 0x06, 0x28, 0x01, 0x2f,
+ 0x11, 0x37, 0xc0, 0x4f, 0x03, 0x5d, 0x52, 0x11, 0x55, 0x72, 0x54, 0xb3,
+ 0xcf, 0x56, 0x53, 0x3a, 0x25, 0x84, 0xe8, 0xd0, 0x0a, 0x70, 0xc2, 0x18,
+ 0x8f, 0x5a, 0x10, 0x8e, 0xa1, 0x5d, 0x6a, 0x2d, 0x7b, 0x5c, 0xba, 0x5a,
+ 0x16, 0x3f, 0x65, 0xbb, 0x1b, 0x41, 0x95, 0x44, 0xe6, 0x4e, 0xc6, 0x6a,
+ 0x65, 0xd5, 0x35, 0x39, 0x11, 0x04, 0xb2, 0xed, 0x55, 0x23, 0xec, 0x0a,
+ 0x00, 0xdb, 0x04, 0x2d, 0x2c, 0x51, 0x7a, 0xa0, 0xe0, 0x81, 0x7c, 0x29,
+ 0x4a, 0xfe, 0x75, 0x5a, 0x1b, 0xb6, 0xd4, 0x1e, 0x71, 0x7b, 0x8d, 0x3f,
+ 0x79, 0xa5, 0x49, 0xd8, 0xde, 0xe9, 0xb5, 0xf2, 0x7d, 0x7b, 0x4e, 0xee,
+ 0xe8, 0xc2, 0x6f, 0x62, 0x24, 0xd9, 0x14, 0xde, 0x9e, 0x0b, 0x97, 0x22,
+ 0x98, 0xb6, 0x4b, 0x6e, 0x55, 0x8e, 0x4c, 0xd9, 0x59, 0xac, 0x06, 0x47,
+ 0x7b, 0xbf, 0x35, 0x89, 0x7e, 0x34, 0xd9, 0xd2, 0x2a, 0x31, 0x5b, 0xb5,
+ 0x70, 0x2c, 0xbf, 0x3a, 0xb0, 0x65, 0x6c, 0xe0, 0x69, 0x9d, 0xe1, 0x1e,
+ 0xfd, 0xf8, 0x63, 0xd2, 0x6e, 0xd6, 0xba, 0xdd, 0x57, 0x39, 0x2f, 0x09,
+ 0xec, 0xb3, 0xd2, 0x9f, 0x6e, 0x50, 0x83, 0xc3, 0x34, 0x67, 0x14, 0x02,
+ 0x4a, 0xf7, 0x25, 0xdf, 0x8b, 0x78, 0x89, 0x8c, 0xf5, 0x77, 0xa5, 0x45,
+ 0x19, 0x94, 0x70, 0xe1, 0x32, 0x2e, 0x90, 0xd1, 0x4c, 0x05, 0x61, 0x61,
+ 0x5a, 0x12, 0x31, 0x5c, 0x4d, 0x96, 0xe0, 0x20, 0x08, 0xe5, 0xaf, 0xfa,
+ 0x9b, 0xe5, 0xda, 0x79, 0xd7, 0x57, 0x08, 0x06, 0x08, 0xa8, 0xeb, 0xbd,
+ 0x0d, 0x65, 0x19, 0x27, 0x80, 0xd6, 0x45, 0x02, 0x9f, 0xe1, 0xe7, 0x39,
+ 0xe7, 0x6d, 0x5a, 0x65, 0xe2, 0x6b, 0x10, 0xf5, 0x29, 0x06, 0x20, 0x08,
+ 0x80, 0x0f, 0x49, 0xc2, 0x1e, 0xd1, 0x09, 0xa7, 0xde, 0x8d, 0x71, 0xe8,
+ 0x6c, 0x9d, 0x33, 0xe3, 0x9c, 0xed, 0xb0, 0x7b, 0x7d, 0x09, 0xfd, 0x09,
+ 0xf5, 0xf2, 0x04, 0x30, 0x55, 0xb2, 0x53, 0x4b, 0x1a, 0x8d, 0xb2, 0xb4,
+ 0xf9, 0x83, 0xde, 0xdb, 0x51, 0x3b, 0x80, 0x05, 0x2a, 0x88, 0xc5, 0x2c,
+ 0x95, 0x99, 0xd0, 0xc1, 0x00, 0x08, 0x14, 0xd5, 0xc7, 0xda, 0xbf, 0x08,
+ 0xbe, 0x5d, 0x8d, 0x6a, 0xb3, 0x3e, 0x4d, 0x65, 0xeb, 0xdc, 0x45, 0x3c,
+ 0x00, 0xa5, 0x75, 0x57, 0x16, 0x49, 0x37, 0xe4, 0xa7, 0x74, 0x18, 0x56,
+ 0xec, 0xdb, 0x32, 0x26, 0xe9, 0x90, 0x1e, 0xab, 0xfb, 0xf2, 0x43, 0x5c,
+ 0x98, 0x4b, 0x3a, 0x2d, 0xf8, 0x1b, 0xa6, 0x4e, 0x32, 0x0b, 0x90, 0x20,
+ 0x35, 0x29, 0x02, 0xd9, 0x8f, 0xf2, 0xfc, 0xee, 0xd5, 0xf2, 0x43, 0x7d,
+ 0x84, 0x47, 0x60, 0xfe, 0x7d, 0xfa, 0xfe, 0x7c, 0xdb, 0xf5, 0xa3, 0x17,
+ 0x6a, 0xf5, 0x73, 0xda, 0xa5, 0xd6, 0x2d, 0x4c, 0xdb, 0x67, 0x04, 0x00,
+ 0xe1, 0x53, 0x92, 0xbd, 0x23, 0x17, 0x03, 0x2e, 0x96, 0x47, 0xbb, 0x7b,
+ 0xc6, 0x8e, 0xda, 0xdd, 0xa7, 0xe6, 0xb4, 0x8f, 0x76, 0x1f, 0xd9, 0xa2,
+ 0x69, 0x7d, 0x2a, 0x84, 0xb4, 0xe7, 0x17, 0xc9, 0x6b, 0x42, 0xb4, 0xff,
+ 0xe8, 0xf6, 0x96, 0x7e, 0xdc, 0x4e, 0xc5, 0x1e, 0xda, 0xf2, 0x25, 0x7f,
+ 0x9a, 0x51, 0xb9, 0xef, 0xed, 0x37, 0x85, 0xe2, 0x56, 0x05, 0x17, 0x0b,
+ 0x52, 0xf3, 0x5f, 0x60, 0x0c, 0x8c, 0xfa, 0xda, 0x58, 0x35, 0x5d, 0x18,
+ 0x25, 0xbf, 0x8f, 0x95, 0xa1, 0x14, 0x2c, 0xdd, 0x6e, 0x8e, 0x02, 0x16,
+ 0x84, 0xac, 0x99, 0x1e, 0xe3, 0xfa, 0x08, 0xa8, 0x0b, 0x8f, 0x76, 0x6f,
+ 0x7d, 0xa5, 0xb8, 0x45, 0x10, 0x46, 0xd4, 0x09, 0x43, 0xd2, 0xcc, 0xfb,
+ 0xd0, 0x09, 0x01, 0xee, 0x77, 0x80, 0xbc, 0x0e, 0x73, 0x25, 0x68, 0x7f,
+ 0xf5, 0xaf, 0xfb, 0x92, 0xdb, 0xc1, 0xff, 0x7a, 0xd4, 0x96, 0x94, 0x70,
+ 0x0f, 0xeb, 0x98, 0x2f, 0xe4, 0x2f, 0x81, 0xaf, 0x92, 0x7a, 0x92, 0x42,
+ 0x31, 0xa6, 0x66, 0x12, 0xdb, 0xd6, 0x7d, 0x42, 0x06, 0x1f, 0x86, 0xb0,
+ 0xd3, 0x12, 0x25, 0x45, 0x9a, 0x3d, 0x0b, 0x83, 0xee, 0xd2, 0x46, 0x4b,
+ 0x3e, 0x8c, 0xfa, 0xfb, 0x0d, 0xa9, 0x2e, 0x18, 0x7c, 0x42, 0x73, 0x22,
+ 0x6c, 0x7d, 0xb1, 0x55, 0x89, 0xcb, 0x65, 0xec, 0xee, 0x8a, 0x68, 0x80,
+ 0x68, 0x55, 0x4f, 0xbb, 0xcc, 0xb0, 0x33, 0x17, 0xa3, 0x56, 0x34, 0xa4,
+ 0xb8, 0xd5, 0x52, 0x54, 0x17, 0x98, 0xa8, 0xd8, 0x8a, 0x01, 0xdb, 0xa8,
+ 0xdc, 0x94, 0x19, 0xdd, 0x35, 0x34, 0x31, 0xb2, 0x35, 0x51, 0x0e, 0x5d,
+ 0x10, 0x18, 0xac, 0x64, 0x56, 0x44, 0x24, 0x1a, 0x67, 0x55, 0x84, 0x8b,
+ 0x5c, 0x22, 0x51, 0x3c, 0x23, 0x9d, 0x5f, 0xfa, 0xc6, 0x3e, 0x1e, 0xd0,
+ 0xdf, 0x9e, 0xec, 0x3e, 0xdf, 0x57, 0x44, 0x83, 0xc3, 0xf3, 0x37, 0x5d,
+ 0x67, 0x5e, 0x65, 0xe8, 0x89, 0xff, 0x3b, 0xcc, 0xd2, 0xea, 0xca, 0x18,
+ 0x17, 0x80, 0x55, 0x19, 0x02, 0xab, 0x7f, 0xb8, 0xbb, 0x1b, 0x4b, 0xb4,
+ 0xf8, 0x84, 0xa5, 0xe4, 0x8f, 0x1e, 0xb7, 0x63, 0x70, 0x50, 0xe9, 0x87,
+ 0xd8, 0xf1, 0x7e, 0xd4, 0x4f, 0xa6, 0x2f, 0xe7, 0x9f, 0x73, 0xc0, 0xd0,
+ 0xf2, 0x46, 0x2b, 0xc8, 0x1e, 0x64, 0xc9, 0xc4, 0xba, 0xc3, 0x74, 0x5c,
+ 0xea, 0x92, 0x4c, 0xb4, 0xc5, 0x36, 0x44, 0x73, 0xb7, 0xcd, 0x7e, 0x6b,
+ 0x7c, 0x88, 0x3a, 0x43, 0x11, 0x8b, 0x17, 0x23, 0x22, 0x5a, 0x64, 0x5b,
+ 0x4b, 0x9d, 0x51, 0x95, 0x01, 0x9e, 0x89, 0xd5, 0x3e, 0x69, 0xb1, 0x73,
+ 0x3f, 0xc4, 0x14, 0x6d, 0x41, 0x35, 0x5d, 0x4a, 0xc1, 0x19, 0xff, 0x1b,
+ 0xa2, 0xb8, 0x95, 0xf0, 0xba, 0xff, 0x24, 0xb2, 0x71, 0x24, 0xb0, 0x7f,
+ 0xc1, 0xc6, 0xb5, 0xf7, 0xcd, 0x29, 0x47, 0xec, 0xc2, 0x23, 0x83, 0x57,
+ 0x22, 0x05, 0x21, 0xf4, 0x4f, 0xad, 0x2d, 0x60, 0x7f, 0xf1, 0x5a, 0xb0,
+ 0xdd, 0xa3, 0x75, 0x40, 0x75, 0xee, 0xad, 0x7b, 0xd6, 0x32, 0xb6, 0x89,
+ 0x4f, 0xed, 0x95, 0x0c, 0x5c, 0x97, 0x04, 0x48, 0x8f, 0x85, 0x34, 0x81,
+ 0x22, 0x5f, 0x03, 0x45, 0x20, 0xbb, 0x20, 0x12, 0xd9, 0x32, 0xa3, 0xa5,
+ 0xfb, 0x89, 0x06, 0x1e, 0x71, 0x5b, 0x1b, 0x15, 0x65, 0xc5, 0x5a, 0x3c,
+ 0x65, 0xa4, 0x68, 0xbe, 0x04, 0x3a, 0x40, 0x1d, 0xf5, 0xb3, 0xb4, 0x3b,
+ 0xbd, 0xd3, 0x5e, 0xaa, 0x4f, 0x76, 0x20, 0x72, 0x4c, 0xde, 0xd7, 0x3d,
+ 0xb6, 0x69, 0x5c, 0x61, 0x01, 0x2d, 0xcc, 0x75, 0x1a, 0xc2, 0x1e, 0x55,
+ 0xe9, 0xaa, 0x70, 0x79, 0xec, 0x32, 0x2e, 0xfe, 0xfd, 0x59, 0x38, 0xd2,
+ 0xe6, 0x04, 0x45, 0xd5, 0x65, 0xbf, 0x3f, 0x7b, 0xf3, 0x27, 0x35, 0xbb,
+ 0xb7, 0x07, 0x7d, 0x96, 0xb0, 0xce, 0xd6, 0x2f, 0x95, 0xf2, 0x92, 0xf7,
+ 0xa4, 0x62, 0xbc, 0xb5, 0xf1, 0xee, 0x1f, 0x61, 0x9e, 0x37, 0xc3, 0x9e,
+ 0x26, 0x5b, 0x08, 0xb3, 0x99, 0xa7, 0xc6, 0x62, 0xd2, 0x3d, 0x1a, 0x3d,
+ 0x21, 0x8f, 0xc8, 0x9b, 0x57, 0x4f, 0x1e, 0xed, 0xef, 0x19, 0xab, 0x75,
+ 0xab, 0xc3, 0x2d, 0xb6, 0xef, 0x5d, 0x66, 0xfb, 0xbc, 0xb3, 0xdb, 0x25,
+ 0x68, 0x6f, 0xeb, 0xf0, 0xc7, 0xd3, 0x77, 0x9d, 0x45, 0xd2, 0x09, 0x04,
+ 0x81, 0xd4, 0x35, 0x6b, 0x74, 0xd2, 0x36, 0x20, 0x29, 0xe9, 0x6e, 0x1b,
+ 0x86, 0x2a, 0xdf, 0x54, 0x39, 0xf4, 0xdc, 0x0d, 0xec, 0xc7, 0xc6, 0x71,
+ 0x59, 0xcc, 0x8c, 0xf4, 0x3f, 0x01, 0x9c, 0x57, 0xb6, 0x61, 0x64, 0xc9,
+ 0xbd, 0xab, 0xeb, 0xbf, 0x26, 0x6f, 0x07, 0x74, 0x55, 0x8a, 0x30, 0x25,
+ 0xe5, 0x2d, 0xfd, 0x90, 0xd0, 0x53, 0x01, 0x84, 0xc0, 0x35, 0x66, 0x2b,
+ 0x58, 0x39, 0x70, 0xef, 0xc2, 0x34, 0x6b, 0xdf, 0xb6, 0x5b, 0x6a, 0x5e,
+ 0x42, 0x1e, 0x9f, 0x17, 0xe4, 0xd0, 0xee, 0x8b, 0x85, 0xf0, 0xca, 0x39,
+ 0x12, 0x42, 0x8f, 0x6f, 0xa9, 0x53, 0x7f, 0xdb, 0x6b, 0xfd, 0x4c, 0xfa,
+ 0xbb, 0x86, 0x3a, 0x48, 0x51, 0x8f, 0x75, 0xd8, 0xa6, 0x47, 0x9d, 0x61,
+ 0x91, 0xb7, 0x93, 0xd8, 0xe9, 0x2a, 0x52, 0xe5, 0xf8, 0xa0, 0x0d, 0x74,
+ 0x16, 0xf1, 0x81, 0x53, 0xc8, 0x9f, 0xba, 0x73, 0xa5, 0x45, 0x1b, 0x13,
+ 0x12, 0x85, 0xcf, 0x6c, 0x01, 0x65, 0xb7, 0xd4, 0x70, 0xd1, 0xa8, 0x88,
+ 0x4f, 0x1f, 0x45, 0x6a, 0xb8, 0x68, 0x31, 0xa2, 0xdb, 0x55, 0xbe, 0x12,
+ 0xc0, 0x12, 0x5a, 0x94, 0xde, 0x81, 0x17, 0x84, 0x40, 0x0c, 0x82, 0xcc,
+ 0xa8, 0xcd, 0xef, 0x36, 0xa3, 0xd1, 0x37, 0x0e, 0x4a, 0xf0, 0x5a, 0xc5,
+ 0xab, 0x83, 0x3b, 0x42, 0x81, 0x09, 0x89, 0x34, 0x50, 0x24, 0x82, 0x07,
+ 0x79, 0xbb, 0x99, 0xd8, 0x60, 0x44, 0xd7, 0xda, 0xbf, 0x37, 0x34, 0x91,
+ 0x37, 0xf1, 0x58, 0x04, 0x07, 0x23, 0xba, 0x26, 0xa8, 0x0d, 0x4d, 0xb4,
+ 0x88, 0xef, 0xc9, 0xe7, 0x11, 0xe2, 0x7b, 0x77, 0x72, 0x7e, 0x78, 0x20,
+ 0x79, 0xd4, 0x0e, 0x39, 0x43, 0x2d, 0x05, 0xce, 0x25, 0xe3, 0xb6, 0xcf,
+ 0x5c, 0x59, 0x44, 0xf8, 0x8e, 0x7c, 0xee, 0x83, 0xc8, 0x95, 0xa7, 0xa4,
+ 0x6e, 0xdc, 0x12, 0xf6, 0xf4, 0x36, 0xbd, 0x68, 0x9a, 0x54, 0x16, 0x2c,
+ 0x96, 0x01, 0x07, 0x25, 0x71, 0xfc, 0x21, 0x8a, 0x02, 0x50, 0x25, 0xc8,
+ 0x86, 0x04, 0x68, 0x2a, 0x8b, 0xdc, 0x80, 0x88, 0x58, 0x96, 0x91, 0xc5,
+ 0xa5, 0xa5, 0xc1, 0xe8, 0xbd, 0x18, 0x36, 0x0c, 0xa4, 0x08, 0xdd, 0x1b,
+ 0x69, 0x3a, 0x4d, 0xf6, 0x88, 0x85, 0xe4, 0x5b, 0x27, 0xe2, 0x5c, 0x20,
+ 0xb1, 0x7b, 0xa9, 0xc4, 0x38, 0x83, 0x17, 0xb0, 0x07, 0x29, 0x04, 0x6e,
+ 0x40, 0x1b, 0x59, 0x54, 0x22, 0x81, 0xaa, 0xa1, 0x56, 0x1a, 0x8c, 0x4a,
+ 0x6b, 0xa5, 0x50, 0xfe, 0x9e, 0x54, 0x21, 0xc6, 0x04, 0x4e, 0xc7, 0x4d,
+ 0xe5, 0x4c, 0x6e, 0x55, 0xd8, 0x28, 0xd7, 0x06, 0x7b, 0x2b, 0xe1, 0x4a,
+ 0x52, 0x17, 0xe2, 0xa8, 0x8d, 0x7e, 0x3d, 0xb2, 0xa8, 0xd4, 0x10, 0x7d,
+ 0x53, 0x23, 0xb8, 0xfd, 0x92, 0x01, 0xd2, 0xf9, 0xc8, 0x98, 0xcd, 0xb9,
+ 0x28, 0xdc, 0x7c, 0xe2, 0xc9, 0x6e, 0x8f, 0x2d, 0xcb, 0x1a, 0xef, 0x38,
+ 0x6b, 0xba, 0x71, 0xee, 0xe1, 0x9e, 0xc5, 0xeb, 0xc8, 0xa9, 0x10, 0x56,
+ 0x90, 0x9f, 0x3e, 0x5d, 0x88, 0x69, 0x31, 0x90, 0x33, 0x5a, 0x9b, 0x78,
+ 0xf8, 0xd6, 0x06, 0x7d, 0xf1, 0x14, 0x05, 0x26, 0xe4, 0x49, 0x56, 0x95,
+ 0xe0, 0x4d, 0x63, 0x0f, 0x20, 0xbe, 0x79, 0x73, 0x55, 0xce, 0xfd, 0xe8,
+ 0x77, 0xd8, 0x53, 0x1b, 0x85, 0x6a, 0x89, 0x0f, 0x56, 0xa4, 0x25, 0x42,
+ 0x72, 0x2a, 0xd8, 0x74, 0x72, 0xb8, 0x4d, 0x50, 0xea, 0x9b, 0xfc, 0xa5,
+ 0x9c, 0x88, 0x0f, 0x06, 0x85, 0x6e, 0x97, 0x51, 0xd4, 0x0f, 0x42, 0x87,
+ 0x34, 0xb2, 0xca, 0xd0, 0xd9, 0x6c, 0xc5, 0xae, 0x55, 0xcc, 0x47, 0x92,
+ 0xa7, 0xb9, 0x51, 0x2c, 0x42, 0x1e, 0xc9, 0x65, 0xc9, 0xcd, 0x62, 0xe1,
+ 0xaf, 0x61, 0x38, 0xeb, 0xb0, 0xa0, 0x71, 0xbf, 0x8b, 0xec, 0x90, 0x4e,
+ 0xe1, 0x0f, 0x31, 0x43, 0x4b, 0x21, 0x35, 0x83, 0x73, 0xb9, 0x0c, 0xf3,
+ 0x74, 0xda, 0xac, 0x64, 0xe3, 0xbb, 0xb3, 0x2b, 0xd5, 0x45, 0x6a, 0xde,
+ 0x25, 0xc8, 0x68, 0xca, 0x43, 0x9a, 0x1a, 0xba, 0x4b, 0xa7, 0x77, 0xaa,
+ 0x2c, 0x38, 0xc9, 0x2a, 0xe0, 0x6f, 0x0e, 0x60, 0x3a, 0x58, 0xac, 0x9d,
+ 0x04, 0xa2, 0x9d, 0x79, 0xdd, 0xd3, 0xd9, 0xe1, 0x37, 0xb5, 0x53, 0xfc,
+ 0xfe, 0x3c, 0xec, 0x74, 0x56, 0x90, 0xba, 0xd6, 0x55, 0xcf, 0x9a, 0x14,
+ 0x7b, 0x7c, 0x4f, 0xcd, 0x7e, 0xcb, 0x23, 0xc0, 0x41, 0x41, 0xc2, 0x90,
+ 0x42, 0x45, 0x0c, 0x45, 0xc1, 0x35, 0xd5, 0x01, 0x39, 0x52, 0xa1, 0x1e,
+ 0xf1, 0x56, 0xbe, 0xa2, 0xa9, 0x10, 0x5b, 0xc4, 0xae, 0x6c, 0xd1, 0x11,
+ 0x5b, 0x9a, 0x8f, 0x39, 0x69, 0xec, 0xc9, 0xe7, 0x4f, 0x1e, 0x6f, 0xb7,
+ 0xd3, 0x06, 0xb7, 0x23, 0xd9, 0xdb, 0x74, 0xe1, 0x04, 0x7e, 0x9d, 0x24,
+ 0x7b, 0x8e, 0x76, 0x7a, 0x1c, 0x92, 0x13, 0xbf, 0x66, 0xce, 0xfd, 0x75,
+ 0xe0, 0x61, 0xa7, 0x4e, 0x55, 0x12, 0xfb, 0x0c, 0xf2, 0x07, 0xa8, 0xab,
+ 0x6a, 0xc6, 0xaf, 0x6f, 0x89, 0x22, 0xe4, 0xb8, 0xb7, 0xab, 0xe5, 0x61,
+ 0x1c, 0x70, 0xd2, 0xd2, 0x34, 0xf7, 0x6d, 0x1b, 0x09, 0xb3, 0x31, 0x09,
+ 0x4a, 0x3b, 0x4f, 0x8a, 0xaa, 0x68, 0x30, 0x68, 0xdd, 0x5c, 0x7a, 0x42,
+ 0x41, 0xfc, 0x22, 0x8c, 0x18, 0x2d, 0x62, 0x27, 0x89, 0x81, 0xda, 0x52,
+ 0x4d, 0xba, 0x94, 0xff, 0xbb, 0x8d, 0xa4, 0x31, 0x18, 0x27, 0x11, 0xa4,
+ 0xa2, 0x23, 0x48, 0x86, 0x94, 0x9c, 0x0b, 0x89, 0xc7, 0x40, 0x20, 0x2f,
+ 0xb4, 0x93, 0x0c, 0xab, 0x1e, 0xa5, 0xa4, 0x37, 0xb0, 0x8d, 0xae, 0xbd,
+ 0xe3, 0x25, 0xc1, 0xb7, 0x0f, 0xa4, 0x43, 0xfd, 0x20, 0xa9, 0xe2, 0x09,
+ 0xb4, 0x26, 0xd6, 0x5b, 0x90, 0xa2, 0xd4, 0xa6, 0xb0, 0x1d, 0xdd, 0x3a,
+ 0x14, 0xfd, 0xbb, 0xa5, 0xca, 0xb0, 0x04, 0x8d, 0xbf, 0xda, 0xd9, 0x87,
+ 0x9e, 0xd9, 0x93, 0x25, 0xc5, 0x18, 0x5b, 0xe4, 0x49, 0x09, 0x1b, 0x49,
+ 0xce, 0x93, 0x2d, 0x9a, 0xf0, 0xce, 0xce, 0xf6, 0xfd, 0x93, 0x96, 0x27,
+ 0xef, 0x9b, 0xe4, 0x29, 0xbb, 0x36, 0x18, 0x7b, 0xde, 0x02, 0x57, 0xb9,
+ 0x59, 0xe0, 0xab, 0x38, 0x32, 0x46, 0x88, 0xe7, 0x34, 0xc2, 0x4a, 0x14,
+ 0x13, 0x14, 0x15, 0x87, 0x4e, 0x7c, 0xc9, 0x4b, 0xa3, 0xe5, 0xb5, 0x57,
+ 0x2e, 0x26, 0x2f, 0x03, 0x7f, 0x09, 0x03, 0xa1, 0xc4, 0x28, 0x82, 0x62,
+ 0x4a, 0x5e, 0x1a, 0x2a, 0x0c, 0xf5, 0xcd, 0x56, 0x9f, 0x72, 0x6f, 0x7d,
+ 0x6c, 0xe6, 0xfa, 0xd5, 0x8d, 0x74, 0x35, 0x5a, 0x2e, 0xf9, 0x48, 0x31,
+ 0x83, 0x3c, 0x6a, 0xd3, 0x2b, 0xb9, 0xe9, 0xf2, 0x28, 0x00, 0x4f, 0xe5,
+ 0x07, 0xbd, 0xd6, 0xd9, 0x91, 0xc2, 0x74, 0xb1, 0xde, 0xd4, 0x47, 0xc8,
+ 0x63, 0x1a, 0x9e, 0xfa, 0xd1, 0xad, 0x9b, 0xd1, 0x4b, 0xb9, 0xbf, 0xf3,
+ 0x45, 0x0b, 0xe9, 0x2d, 0xad, 0x42, 0xaf, 0x3b, 0xcd, 0xcd, 0xd2, 0x37,
+ 0x37, 0x31, 0x27, 0xe0, 0x8e, 0x09, 0xff, 0xb4, 0xb5, 0x9d, 0x03, 0xbe,
+ 0xa6, 0x04, 0x99, 0x11, 0xd3, 0xd5, 0xa9, 0xc3, 0x5a, 0x58, 0xac, 0xed,
+ 0x36, 0xd0, 0x15, 0xab, 0x7b, 0xd5, 0xe8, 0xf7, 0x64, 0xe1, 0x75, 0x3d,
+ 0x13, 0xe2, 0x6a, 0xd3, 0x41, 0xdb, 0xbe, 0x86, 0x67, 0x6d, 0x5f, 0x83,
+ 0x2d, 0x3c, 0x8f, 0x6b, 0x68, 0x9c, 0x7d, 0x59, 0x27, 0xef, 0xf4, 0xb1,
+ 0x64, 0x6b, 0x7c, 0xfa, 0xee, 0xf0, 0x9b, 0x93, 0xed, 0xfb, 0x7c, 0x94,
+ 0x3e, 0xff, 0xb7, 0x8b, 0x4a, 0x35, 0x49, 0x58, 0xe6, 0x4e, 0xb6, 0xc9,
+ 0x37, 0xe3, 0xf1, 0xf0, 0xe5, 0xe9, 0x11, 0x19, 0x02, 0xe3, 0xb1, 0xf9,
+ 0x4b, 0x1f, 0x6e, 0xf3, 0x48, 0xba, 0x31, 0x0d, 0xbf, 0x27, 0x45, 0x4f,
+ 0x79, 0x3f, 0xd9, 0x5b, 0x70, 0x03, 0x12, 0x35, 0x72, 0x42, 0x1e, 0xb5,
+ 0x7e, 0xd3, 0xda, 0x7d, 0x7c, 0xa0, 0x6b, 0xf2, 0x9c, 0x1e, 0xed, 0xd0,
+ 0xb7, 0x90, 0x3a, 0x4d, 0x0b, 0x8a, 0xbb, 0x0f, 0x56, 0x61, 0x2f, 0x3c,
+ 0x68, 0x3d, 0x94, 0x62, 0x4a, 0x0c, 0x5a, 0x93, 0xb7, 0x8d, 0xed, 0x07,
+ 0x71, 0x82, 0x78, 0x9d, 0x04, 0xec, 0xe2, 0xb5, 0x32, 0x8c, 0x50, 0x83,
+ 0x72, 0x08, 0x85, 0x58, 0xec, 0x78, 0xdf, 0xc8, 0x48, 0x63, 0x20, 0x2d,
+ 0xf4, 0x3a, 0x1f, 0x8b, 0xbd, 0xd5, 0x75, 0x8a, 0x6c, 0x0e, 0x57, 0xc9,
+ 0xc1, 0x26, 0x65, 0xe8, 0x14, 0xe5, 0xea, 0xf2, 0x2a, 0xf4, 0x3f, 0x74,
+ 0x3a, 0x62, 0x8a, 0x26, 0x45, 0xf4, 0x64, 0x66, 0x19, 0x90, 0x20, 0xbd,
+ 0xa8, 0x7a, 0x4f, 0x95, 0x21, 0x38, 0xc4, 0xea, 0x0d, 0x67, 0xfe, 0xcc,
+ 0xfe, 0x25, 0x7d, 0xa4, 0xd6, 0x68, 0x20, 0x13, 0x0e, 0x9c, 0x92, 0x1b,
+ 0xad, 0x68, 0xe6, 0x0b, 0xf9, 0x6b, 0x5a, 0xdc, 0x91, 0xbb, 0x54, 0xfc,
+ 0xf7, 0x54, 0xb0, 0x69, 0x69, 0xba, 0x4d, 0xe8, 0x4d, 0x35, 0x25, 0x43,
+ 0x9f, 0x53, 0x50, 0xb9, 0x52, 0xb3, 0x9f, 0x66, 0xa9, 0xfb, 0xf5, 0xc2,
+ 0xc8, 0x68, 0x32, 0xeb, 0x86, 0xc5, 0x40, 0xc7, 0x18, 0x18, 0x73, 0x58,
+ 0xc2, 0x64, 0x69, 0x23, 0xc9, 0x6c, 0x42, 0x05, 0x31, 0x56, 0xc4, 0x6d,
+ 0x1c, 0xb7, 0xd2, 0x49, 0x5d, 0xce, 0x57, 0x8d, 0xc4, 0x1e, 0xe1, 0x18,
+ 0x45, 0x45, 0xcc, 0xb6, 0xcd, 0x22, 0xa2, 0xa1, 0x5d, 0x06, 0x6a, 0x2c,
+ 0x71, 0xdf, 0xb5, 0x32, 0x1c, 0xb9, 0x40, 0x0b, 0x47, 0x12, 0xc5, 0x3f,
+ 0x81, 0x8d, 0xf5, 0x06, 0x5a, 0x52, 0x5a, 0xd2, 0x75, 0x19, 0x6f, 0xb2,
+ 0x8d, 0xf3, 0xd3, 0x73, 0x6a, 0x6d, 0x8f, 0x3a, 0xd8, 0xc1, 0xb9, 0x5b,
+ 0x99, 0xea, 0x6d, 0xb5, 0x31, 0x2c, 0x80, 0x8e, 0x93, 0x89, 0xa6, 0x0a,
+ 0x4c, 0x70, 0x4d, 0x26, 0x77, 0xf6, 0x5b, 0xfc, 0x99, 0x94, 0x52, 0x79,
+ 0xac, 0x22, 0xfc, 0x50, 0xf4, 0x14, 0x77, 0x1c, 0xa3, 0x75, 0xc9, 0x28,
+ 0xed, 0x2f, 0x75, 0x86, 0xfe, 0x3e, 0xa3, 0xb4, 0xb3, 0xf8, 0x19, 0xb3,
+ 0x8a, 0xef, 0x41, 0xa6, 0x48, 0x16, 0x24, 0x9d, 0xe9, 0x88, 0x1e, 0x0a,
+ 0x08, 0x18, 0x81, 0x74, 0xbb, 0x2a, 0x55, 0x8f, 0xe0, 0x6f, 0x4b, 0xb9,
+ 0xf5, 0x1e, 0xdf, 0x50, 0xef, 0x33, 0xb6, 0x76, 0xa7, 0x5c, 0xdf, 0x1d,
+ 0xd3, 0x1d, 0xce, 0xe8, 0x01, 0x1b, 0xe2, 0xd6, 0xef, 0x7e, 0x18, 0x58,
+ 0x76, 0xb4, 0x18, 0xc6, 0x5f, 0xa9, 0xa7, 0x16, 0xe9, 0x8b, 0x17, 0x66,
+ 0xc8, 0xf5, 0x83, 0xfc, 0xc5, 0x7c, 0xe4, 0x87, 0xbc, 0x30, 0xba, 0x61,
+ 0xbd, 0xed, 0x2b, 0x4a, 0xe1, 0xdd, 0xad, 0x36, 0x6b, 0x63, 0x87, 0x19,
+ 0xb6, 0xe3, 0x12, 0xf5, 0xa0, 0x39, 0x73, 0xc8, 0x46, 0x5d, 0xa0, 0x89,
+ 0x0b, 0x28, 0xdb, 0x26, 0x88, 0x77, 0xcb, 0xa0, 0xe0, 0x85, 0xab, 0x00,
+ 0x99, 0x95, 0x5c, 0x08, 0x42, 0x83, 0x99, 0x08, 0x5a, 0x5a, 0xb9, 0x08,
+ 0xbf, 0x85, 0x6a, 0xf2, 0xa3, 0x9b, 0x59, 0x11, 0xe9, 0x7f, 0x4d, 0x9c,
+ 0xad, 0x1b, 0xc5, 0xc2, 0xee, 0xd2, 0x1a, 0xb7, 0x9e, 0x98, 0x95, 0x35,
+ 0xcb, 0xad, 0xbd, 0x6d, 0xc6, 0xbb, 0x96, 0xbe, 0xcb, 0xa5, 0x13, 0xf7,
+ 0xa1, 0x17, 0x07, 0xb9, 0x85, 0x49, 0xf2, 0x8a, 0x21, 0x34, 0xc9, 0xdb,
+ 0x45, 0x19, 0xfe, 0x04, 0xff, 0x44, 0xa5, 0x77, 0x17, 0x7c, 0x89, 0x59,
+ 0x59, 0x90, 0x54, 0x45, 0xad, 0x6a, 0xec, 0x7a, 0x07, 0x28, 0xeb, 0x67,
+ 0x09, 0x14, 0x48, 0x2a, 0x45, 0x44, 0xdc, 0xc5, 0xba, 0xc4, 0xa5, 0x6f,
+ 0x90, 0xd4, 0x2a, 0x9b, 0x9d, 0x9b, 0xcf, 0x86, 0x60, 0x20, 0x97, 0x55,
+ 0x69, 0x44, 0x64, 0x15, 0xc1, 0xca, 0x13, 0x93, 0x82, 0x54, 0xfd, 0xac,
+ 0xb8, 0xce, 0xab, 0xb2, 0x20, 0x3c, 0xc2, 0xeb, 0xb4, 0xca, 0x29, 0xd2,
+ 0xbf, 0xf1, 0xed, 0xc9, 0xdb, 0xc3, 0x0d, 0xdf, 0x27, 0x72, 0x91, 0x8b,
+ 0x23, 0xfd, 0x2a, 0x44, 0x5c, 0xb6, 0xa7, 0x19, 0x71, 0x1a, 0x1a, 0x99,
+ 0x6e, 0x94, 0x1c, 0x1c, 0xeb, 0xb5, 0xdc, 0x24, 0xa8, 0xf5, 0x1a, 0x20,
+ 0x37, 0xba, 0xa4, 0xa4, 0x00, 0x48, 0x0b, 0x36, 0x25, 0x2e, 0x12, 0x80,
+ 0xd1, 0x4e, 0x19, 0x1e, 0x1e, 0x10, 0x35, 0xcc, 0x28, 0xfd, 0x46, 0x60,
+ 0x89, 0xd7, 0x2c, 0x0c, 0x9a, 0x3e, 0x13, 0x40, 0x5f, 0x37, 0xe8, 0xcd,
+ 0xc5, 0x1d, 0x0c, 0x9b, 0xcd, 0x16, 0xd5, 0x25, 0x9b, 0x35, 0x8c, 0xf1,
+ 0x66, 0x53, 0xb7, 0x97, 0xd2, 0x45, 0x1d, 0x07, 0x08, 0xbb, 0xb3, 0xf6,
+ 0x7c, 0x9a, 0xa9, 0x9a, 0x3f, 0xe1, 0x46, 0xe7, 0xc1, 0xdd, 0xed, 0x3b,
+ 0xe0, 0xdb, 0x77, 0xdb, 0xb5, 0xee, 0x42, 0xc0, 0x9a, 0xd4, 0x55, 0x74,
+ 0xb5, 0x1b, 0xbb, 0xb6, 0xa3, 0xf4, 0xc0, 0xa3, 0x0f, 0xbd, 0x8a, 0xe6,
+ 0xf3, 0xe5, 0x54, 0xa0, 0x83, 0x6c, 0x5c, 0x55, 0x72, 0x29, 0x05, 0x7e,
+ 0x82, 0x85, 0x94, 0xc6, 0x4c, 0x94, 0xe9, 0x63, 0xb8, 0x3e, 0x70, 0xc2,
+ 0x01, 0xe3, 0x4f, 0x2a, 0x44, 0x5b, 0x6e, 0x54, 0x83, 0x9b, 0xc2, 0x8f,
+ 0x21, 0xd3, 0x77, 0x06, 0x7e, 0xf5, 0xf3, 0x20, 0xe9, 0x81, 0x2b, 0x75,
+ 0xa9, 0x28, 0xf6, 0xb4, 0x18, 0xaf, 0x93, 0x11, 0x1f, 0x2d, 0xc2, 0x93,
+ 0xa2, 0x5e, 0x86, 0xfa, 0xf1, 0xc1, 0x20, 0x91, 0xad, 0xd4, 0xfb, 0x86,
+ 0xf0, 0x73, 0xc3, 0x00, 0x8b, 0x6c, 0xd4, 0x58, 0xa1, 0x55, 0xcc, 0x58,
+ 0x26, 0xa2, 0x57, 0x81, 0x40, 0xf2, 0xc6, 0xac, 0x6b, 0xbd, 0x8d, 0x66,
+ 0x65, 0x02, 0xb9, 0x5e, 0xaf, 0xaa, 0x6b, 0x2a, 0x52, 0x95, 0x4e, 0x3d,
+ 0x0c, 0x7d, 0x68, 0x8f, 0xc3, 0x9d, 0x43, 0x4c, 0xca, 0xb7, 0xa6, 0x88,
+ 0xcc, 0xcd, 0x6a, 0x25, 0xd8, 0xdc, 0xdf, 0xc8, 0x3c, 0x64, 0x7e, 0x6a,
+ 0xeb, 0x58, 0xc8, 0x92, 0x20, 0x49, 0xbf, 0xac, 0x09, 0x63, 0xb3, 0xa9,
+ 0xd2, 0xa9, 0xfb, 0xcb, 0x30, 0xad, 0xa7, 0x79, 0xae, 0xbd, 0x5f, 0x10,
+ 0x1f, 0xcc, 0x90, 0x0e, 0x1b, 0x05, 0xb4, 0xb1, 0xe7, 0xa1, 0x3d, 0x17,
+ 0x66, 0x25, 0x3b, 0x77, 0x39, 0xe3, 0x24, 0xe5, 0xa6, 0x60, 0xc8, 0x5f,
+ 0xa1, 0xd2, 0x38, 0x8d, 0x1d, 0x46, 0xdb, 0xe1, 0x28, 0x9c, 0x61, 0x8f,
+ 0x69, 0x6b, 0xac, 0xef, 0x3d, 0xdf, 0xfc, 0xd6, 0x2d, 0x18, 0x02, 0x1c,
+ 0xbc, 0x6e, 0x48, 0x80, 0x9a, 0x67, 0xf6, 0xfd, 0x67, 0xd6, 0x45, 0xc3,
+ 0x9f, 0x76, 0x8c, 0x13, 0x86, 0x67, 0x8a, 0x99, 0x26, 0x63, 0xa3, 0x3a,
+ 0x69, 0x77, 0x3c, 0x3a, 0x82, 0x97, 0xc7, 0xa7, 0xef, 0x08, 0x14, 0x0b,
+ 0x38, 0xcb, 0x05, 0xf9, 0xc7, 0xf8, 0x67, 0xa4, 0x22, 0x93, 0x9d, 0x0c,
+ 0xed, 0x63, 0x16, 0xd6, 0x43, 0x73, 0xc7, 0xcc, 0x8b, 0x88, 0x69, 0xc5,
+ 0xa9, 0x6d, 0x05, 0xb5, 0xc4, 0x49, 0xac, 0xe9, 0x22, 0x8a, 0x9f, 0x9a,
+ 0x17, 0xdd, 0xe5, 0x98, 0x6f, 0x8e, 0x12, 0xfb, 0x69, 0x85, 0x64, 0xb7,
+ 0x85, 0x48, 0xfc, 0x76, 0x17, 0x57, 0x0c, 0x59, 0x32, 0xa4, 0xb5, 0x06,
+ 0xfc, 0xbc, 0xc9, 0x2c, 0xf6, 0x98, 0xd8, 0x75, 0x16, 0x37, 0x51, 0xbb,
+ 0xdd, 0x70, 0x9e, 0x06, 0x21, 0x4d, 0x68, 0x41, 0x7b, 0x7d, 0x0f, 0xea,
+ 0x55, 0xb1, 0x2c, 0xda, 0xd8, 0x5b, 0x76, 0xb3, 0x3b, 0x45, 0x60, 0x6a,
+ 0x80, 0x76, 0xe7, 0xf5, 0xa0, 0xb2, 0x30, 0x9c, 0xc7, 0x68, 0xcd, 0x01,
+ 0xbf, 0x1b, 0xf0, 0x77, 0x27, 0x2b, 0x70, 0x88, 0xce, 0x17, 0xe4, 0x74,
+ 0x59, 0x69, 0xe2, 0x27, 0xf0, 0x3d, 0xf1, 0x80, 0x31, 0xf4, 0x11, 0x8a,
+ 0x38, 0xb3, 0x74, 0x61, 0xb4, 0x82, 0x42, 0x0b, 0x05, 0xe0, 0xf7, 0x45,
+ 0x42, 0x67, 0x77, 0xc2, 0xab, 0x54, 0x58, 0x96, 0xd3, 0x16, 0x3a, 0xc5,
+ 0x03, 0xfc, 0x0d, 0x62, 0xa3, 0x3c, 0xb8, 0x8c, 0x1e, 0xed, 0x1f, 0xd2,
+ 0x62, 0x22, 0x1a, 0xb7, 0xd1, 0x36, 0x81, 0x0c, 0x32, 0xcc, 0x83, 0xd8,
+ 0x4e, 0xc1, 0xe8, 0x72, 0x73, 0xb5, 0x2a, 0x3e, 0x9a, 0x29, 0x84, 0xf5,
+ 0xcb, 0x9a, 0xec, 0x9b, 0x53, 0x33, 0xf7, 0x94, 0xe1, 0xb1, 0xb5, 0x36,
+ 0x94, 0x5e, 0x07, 0xb8, 0xf1, 0x35, 0x79, 0xf1, 0x04, 0xee, 0xb7, 0x65,
+ 0x7c, 0xc5, 0x66, 0x37, 0xb3, 0xcd, 0x23, 0xd3, 0xc6, 0x6d, 0x60, 0x34,
+ 0x9d, 0xdd, 0x79, 0x1b, 0xa4, 0x8f, 0x37, 0x9b, 0x24, 0x97, 0x5e, 0x3e,
+ 0x15, 0x2b, 0x71, 0x8a, 0xf9, 0x04, 0xef, 0x8c, 0x98, 0x20, 0x01, 0x3b,
+ 0x5c, 0xd5, 0x5c, 0x05, 0x26, 0xc7, 0x4a, 0x60, 0x2b, 0x5e, 0xa7, 0x9a,
+ 0xc8, 0x4c, 0xda, 0xc5, 0xf4, 0xeb, 0xe8, 0x40, 0xdc, 0xb5, 0xae, 0xf0,
+ 0x5e, 0xd2, 0x50, 0x6a, 0xd7, 0xb0, 0x1a, 0x2d, 0x24, 0x5b, 0x4d, 0xec,
+ 0x22, 0x7c, 0xcb, 0x95, 0x72, 0x65, 0x85, 0x1d, 0x7c, 0xc1, 0xfc, 0x81,
+ 0xf8, 0xc1, 0xbf, 0x70, 0x97, 0xdc, 0x5a, 0xbc, 0x8d, 0xb2, 0x3f, 0xec,
+ 0x6c, 0x52, 0xd1, 0xcb, 0x0d, 0xfd, 0x56, 0xa1, 0xef, 0x42, 0x56, 0xf8,
+ 0x2e, 0xc2, 0x09, 0x69, 0xa5, 0x41, 0x1d, 0x75, 0xb2, 0x86, 0x11, 0x7a,
+ 0x65, 0xde, 0x1d, 0x3e, 0xf6, 0x0e, 0x5c, 0xcf, 0xfc, 0x27, 0xac, 0xf2,
+ 0x7e, 0x20, 0x07, 0x24, 0xb5, 0xcf, 0x5a, 0xee, 0x8a, 0xed, 0xd8, 0xe3,
+ 0xda, 0xfa, 0xf5, 0x2c, 0xd0, 0x26, 0xb1, 0x2a, 0xbb, 0x0b, 0xb9, 0x60,
+ 0x11, 0x30, 0x41, 0xae, 0x84, 0xfd, 0x24, 0x2c, 0x10, 0x1f, 0x94, 0x09,
+ 0xe7, 0xb3, 0x28, 0xe4, 0x82, 0x1e, 0xac, 0x34, 0x90, 0x94, 0x1b, 0x80,
+ 0x93, 0x50, 0xac, 0x97, 0xa3, 0xd7, 0x86, 0xc2, 0xa0, 0xa9, 0xc2, 0x61,
+ 0xfb, 0x35, 0x50, 0xfc, 0xa3, 0x47, 0x4b, 0x68, 0xd4, 0x36, 0xa6, 0x4b,
+ 0xe6, 0xfd, 0x0c, 0xc6, 0xbc, 0x07, 0xc4, 0x05, 0x64, 0xbe, 0x91, 0x57,
+ 0x27, 0xc1, 0x01, 0x77, 0xe9, 0x56, 0x11, 0x77, 0x47, 0x40, 0x99, 0xa4,
+ 0x52, 0xdb, 0xab, 0x95, 0x59, 0x2d, 0xce, 0x99, 0xbb, 0xcb, 0x30, 0x8b,
+ 0x2a, 0xa1, 0xaa, 0x51, 0x41, 0x03, 0x89, 0x50, 0x37, 0xe3, 0x00, 0x59,
+ 0x8e, 0x5d, 0xd8, 0x75, 0x66, 0xae, 0x21, 0x57, 0x0a, 0x4d, 0xaa, 0xf2,
+ 0x63, 0xc6, 0x24, 0x47, 0x96, 0x05, 0x41, 0x25, 0xa9, 0x12, 0xc5, 0x11,
+ 0xc7, 0x7c, 0x3e, 0xb3, 0x69, 0x8b, 0x41, 0xd0, 0x95, 0xbb, 0xd9, 0x09,
+ 0xc6, 0x82, 0xe3, 0x85, 0xb9, 0x83, 0x38, 0x50, 0xcc, 0x77, 0x3e, 0xae,
+ 0x29, 0x90, 0xd9, 0xe2, 0xf7, 0x5e, 0x88, 0x40, 0x2c, 0xd6, 0x9e, 0x4b,
+ 0xdf, 0xba, 0xf5, 0x36, 0x45, 0xb3, 0xff, 0xde, 0xdb, 0x53, 0xf7, 0xef,
+ 0x7d, 0xe4, 0x48, 0x1f, 0xde, 0xa4, 0xce, 0xd0, 0x12, 0x39, 0xc0, 0x92,
+ 0x17, 0x86, 0xa8, 0xd8, 0x15, 0x86, 0x58, 0x56, 0xd7, 0xcb, 0x45, 0xcd,
+ 0x16, 0x87, 0x6a, 0x71, 0xcc, 0xb8, 0x72, 0x30, 0x61, 0x83, 0x0d, 0x7a,
+ 0x38, 0x17, 0x36, 0xcc, 0x5c, 0xfb, 0x53, 0x81, 0x5b, 0x27, 0x7c, 0x09,
+ 0x43, 0x30, 0xe1, 0x15, 0x77, 0xee, 0x1b, 0x36, 0x3c, 0x49, 0x01, 0xc7,
+ 0xe9, 0x10, 0xc8, 0x4e, 0x5e, 0xbb, 0x04, 0xb5, 0x7f, 0x47, 0x22, 0xb0,
+ 0x51, 0x68, 0x1b, 0x64, 0x81, 0xf1, 0x97, 0x02, 0x95, 0x93, 0x1b, 0x8f,
+ 0xd9, 0x3a, 0x11, 0xc6, 0x93, 0xb0, 0x20, 0x32, 0x80, 0x2a, 0xf6, 0x25,
+ 0x02, 0x23, 0xc1, 0x27, 0x87, 0x30, 0x57, 0x22, 0x86, 0xa0, 0x42, 0x66,
+ 0xd0, 0x1a, 0x73, 0x41, 0x91, 0xe6, 0x74, 0x2d, 0xb1, 0xaa, 0x53, 0x4d,
+ 0xc5, 0x52, 0x30, 0x4a, 0x8b, 0x6d, 0x17, 0xb1, 0xd6, 0x31, 0x23, 0x41,
+ 0x48, 0xd4, 0xe6, 0x88, 0xfa, 0x23, 0xdb, 0x73, 0xac, 0xa5, 0x83, 0x93,
+ 0x75, 0xc2, 0xf6, 0x6a, 0xa4, 0x6d, 0x18, 0xcd, 0x26, 0x71, 0x0f, 0x0d,
+ 0xbc, 0xbf, 0x1f, 0x7c, 0xbe, 0xab, 0x15, 0xee, 0x08, 0x72, 0xf9, 0xcf,
+ 0xc0, 0x39, 0x95, 0x44, 0xb4, 0x08, 0x3c, 0x67, 0x7e, 0x6a, 0x1f, 0x0d,
+ 0x39, 0x20, 0xc1, 0x5c, 0x22, 0xdd, 0xe5, 0x11, 0x62, 0xdd, 0x6d, 0xc8,
+ 0x29, 0xe7, 0x4d, 0x6a, 0x7a, 0x9c, 0x07, 0x75, 0x2c, 0xdb, 0x73, 0xe6,
+ 0x09, 0x1e, 0x39, 0x0c, 0xce, 0x54, 0xaf, 0xd0, 0xb8, 0x9c, 0x30, 0xec,
+ 0x22, 0x6e, 0x08, 0xbc, 0x16, 0xf1, 0x5d, 0x70, 0x02, 0x9b, 0x90, 0x9b,
+ 0xed, 0x19, 0x47, 0x1d, 0x73, 0x98, 0xb4, 0xe9, 0x1c, 0xcd, 0x85, 0xd9,
+ 0xa0, 0x86, 0x17, 0x3a, 0x65, 0xb3, 0xf7, 0x6b, 0xef, 0xc9, 0xf3, 0xd1,
+ 0xe3, 0xd6, 0x3d, 0x69, 0xe6, 0x8b, 0xe1, 0xcd, 0xe4, 0x9e, 0x90, 0xc7,
+ 0xf9, 0xf1, 0x5b, 0x4a, 0xf9, 0x50, 0x76, 0x43, 0x5d, 0x1b, 0xd4, 0xfb,
+ 0x0c, 0xaf, 0x0e, 0x7b, 0x09, 0xaf, 0xc8, 0xe4, 0x0c, 0x73, 0xb8, 0x23,
+ 0xbe, 0x7d, 0x5b, 0x31, 0x2a, 0xc6, 0xbe, 0x20, 0xd4, 0x25, 0x18, 0x91,
+ 0xbc, 0xd8, 0xa8, 0xf8, 0x9e, 0xe7, 0xd1, 0xc2, 0x1e, 0xcd, 0xac, 0xcd,
+ 0x6e, 0xb3, 0xe9, 0x8a, 0xe2, 0xd3, 0x50, 0x0f, 0x01, 0xfa, 0xb4, 0xde,
+ 0x6f, 0xee, 0xf9, 0xca, 0xc5, 0x3b, 0x6e, 0x7e, 0xd0, 0xdd, 0x0c, 0xd7,
+ 0xba, 0x47, 0x16, 0xcf, 0xab, 0x0f, 0x73, 0xbf, 0x29, 0x15, 0x8a, 0x7e,
+ 0xd7, 0xfe, 0x55, 0x10, 0x22, 0xa6, 0x84, 0x7e, 0x08, 0x44, 0x43, 0x4f,
+ 0xf9, 0x65, 0xc1, 0x2a, 0xc0, 0xdb, 0x7c, 0x5a, 0x95, 0x75, 0x79, 0xc1,
+ 0x99, 0x6a, 0x9e, 0x6e, 0x70, 0x74, 0x34, 0x4e, 0x6e, 0xb2, 0x89, 0x56,
+ 0xc5, 0x8e, 0x42, 0x1f, 0x32, 0x73, 0x11, 0xc4, 0x45, 0xaa, 0x3c, 0x6b,
+ 0xb0, 0x6b, 0x1a, 0x09, 0x05, 0xa8, 0x13, 0x35, 0xb1, 0x12, 0x04, 0x15,
+ 0x52, 0xe1, 0xd1, 0x07, 0x70, 0x4e, 0xa2, 0x69, 0x99, 0x95, 0x91, 0x78,
+ 0x38, 0x4f, 0x40, 0xc5, 0x0a, 0xd3, 0x09, 0xc9, 0xf0, 0x49, 0x2a, 0x1d,
+ 0x96, 0xd8, 0x37, 0x60, 0xd8, 0x0e, 0x94, 0x14, 0xf1, 0x57, 0x7e, 0x84,
+ 0xa7, 0x2c, 0xa8, 0x55, 0x99, 0x64, 0xe8, 0x49, 0x08, 0x76, 0xe0, 0xb7,
+ 0xc9, 0xa1, 0x8e, 0x80, 0xb3, 0xb2, 0xa2, 0x0c, 0x24, 0xaf, 0xfb, 0x09,
+ 0xda, 0x04, 0xae, 0x2a, 0xb8, 0x8a, 0x09, 0x6f, 0x34, 0xe4, 0xa7, 0x37,
+ 0x57, 0x25, 0xf7, 0x8a, 0xa2, 0x6d, 0x86, 0x68, 0xa2, 0x1a, 0x5b, 0x2e,
+ 0xeb, 0x11, 0x7c, 0x7d, 0x69, 0x90, 0xad, 0xf2, 0xc6, 0x3f, 0xa8, 0x28,
+ 0x36, 0xa1, 0x9c, 0x87, 0x2b, 0x29, 0x95, 0x14, 0x85, 0xd7, 0xf9, 0x65,
+ 0x4f, 0x2b, 0x4c, 0x76, 0x19, 0x11, 0xb4, 0x03, 0x89, 0x27, 0xba, 0xb4,
+ 0x34, 0x23, 0x11, 0x9a, 0x15, 0xdf, 0xd2, 0xa0, 0xc1, 0x2b, 0xfe, 0x15,
+ 0x3a, 0x60, 0x7b, 0xa8, 0xef, 0x17, 0x25, 0xae, 0xfc, 0xb2, 0xd6, 0x9b,
+ 0x6b, 0x95, 0x3f, 0x6f, 0x2e, 0xf6, 0x0a, 0x44, 0x43, 0xaf, 0x2e, 0xf2,
+ 0x1a, 0x00, 0x50, 0xdc, 0xa7, 0xf3, 0xc5, 0x1d, 0xf5, 0x1a, 0xc9, 0x8a,
+ 0xe4, 0xa3, 0x78, 0xc1, 0x58, 0xdb, 0x02, 0x1e, 0xc7, 0xd3, 0x8e, 0x74,
+ 0xf9, 0x57, 0xb7, 0xc4, 0x0f, 0xf6, 0x87, 0x93, 0x2c, 0x45, 0x37, 0x96,
+ 0x17, 0x0d, 0x14, 0xa6, 0x78, 0x65, 0x0a, 0x57, 0x63, 0x44, 0x6a, 0x53,
+ 0xbe, 0xe6, 0x77, 0xcf, 0x49, 0xd7, 0xc2, 0xd1, 0x9e, 0xbc, 0x7c, 0x7f,
+ 0xfe, 0x6d, 0xb2, 0x3f, 0xda, 0x7d, 0x50, 0x65, 0x0a, 0x31, 0x84, 0xd6,
+ 0x18, 0x7a, 0x78, 0xd4, 0xd4, 0xb5, 0xf8, 0xcb, 0xaa, 0x68, 0x37, 0x7b,
+ 0x88, 0xf9, 0xe6, 0x45, 0x7f, 0x52, 0xf1, 0x0b, 0x87, 0xcb, 0x24, 0x6b,
+ 0xa7, 0x56, 0xfb, 0xed, 0x80, 0x86, 0x43, 0x32, 0xe1, 0xaa, 0xfb, 0xc2,
+ 0x98, 0x75, 0x14, 0x9e, 0xa3, 0x35, 0x59, 0x41, 0x0f, 0xd2, 0x24, 0x6d,
+ 0x6a, 0xbc, 0x02, 0xef, 0x3e, 0xdf, 0x29, 0xdb, 0xc8, 0x93, 0xf4, 0xd8,
+ 0xb3, 0x37, 0xaf, 0x3a, 0xc3, 0x3d, 0x7d, 0xf6, 0x64, 0xf7, 0x13, 0x26,
+ 0xe9, 0x95, 0xf0, 0x8e, 0x88, 0x17, 0x21, 0x8a, 0x9a, 0xf3, 0x43, 0x85,
+ 0xba, 0x55, 0xf5, 0x33, 0x94, 0xf2, 0x90, 0x5f, 0x58, 0x5f, 0x37, 0x33,
+ 0x64, 0x6b, 0x69, 0xe3, 0x2a, 0xce, 0xc5, 0xc0, 0x8a, 0xfe, 0xfe, 0x8f,
+ 0xb0, 0xac, 0xf6, 0xcf, 0x3f, 0x53, 0x34, 0x80, 0xda, 0xdf, 0xd9, 0x2c,
+ 0x7f, 0x65, 0x32, 0xb5, 0x13, 0xc7, 0xb8, 0xce, 0x9b, 0xbf, 0xdb, 0x4c,
+ 0x6c, 0x93, 0x1a, 0xaa, 0xc4, 0x0a, 0x22, 0xd4, 0x9a, 0xcf, 0x29, 0x78,
+ 0x06, 0x3a, 0x3b, 0x3d, 0x56, 0xc2, 0x11, 0x4f, 0x3d, 0x8d, 0x40, 0x77,
+ 0x41, 0x5a, 0xb7, 0xcc, 0xfa, 0x9a, 0x4c, 0x69, 0xb7, 0x15, 0xc1, 0xef,
+ 0x52, 0x37, 0x39, 0xbc, 0xd9, 0x9c, 0x5a, 0x45, 0x2b, 0x80, 0x2e, 0x4a,
+ 0xd5, 0xcb, 0x79, 0xd1, 0xe3, 0xbb, 0x94, 0x04, 0xa2, 0xbf, 0x9b, 0x13,
+ 0x18, 0x34, 0x37, 0xe5, 0x3f, 0xda, 0x7e, 0x4c, 0xa3, 0x61, 0x60, 0xbe,
+ 0x1f, 0x7e, 0xb7, 0x87, 0x8a, 0xa0, 0x8d, 0xee, 0x10, 0x9c, 0xdc, 0x6f,
+ 0x4f, 0xd5, 0x2a, 0x48, 0xeb, 0xd0, 0x74, 0xf5, 0x83, 0xa8, 0x36, 0x1e,
+ 0x40, 0x6b, 0xfc, 0xc7, 0x08, 0xff, 0xfd, 0xf3, 0xde, 0xf0, 0xc9, 0xcf,
+ 0xf6, 0xa3, 0xbf, 0xdb, 0xfb, 0xf0, 0xbb, 0xfd, 0x8d, 0x58, 0xc1, 0x97,
+ 0x2b, 0xfd, 0xf7, 0x12, 0x14, 0xa1, 0xd0, 0x16, 0x77, 0x52, 0xa5, 0x21,
+ 0x01, 0x46, 0xd7, 0x16, 0x8f, 0x9a, 0xec, 0x46, 0xf0, 0x91, 0xe0, 0xb7,
+ 0x1a, 0xb1, 0xb3, 0xd8, 0x69, 0xaa, 0xda, 0x1a, 0x4f, 0x99, 0xc3, 0x4d,
+ 0xc9, 0xef, 0x2b, 0x40, 0x02, 0x6e, 0x88, 0xd4, 0x0f, 0x04, 0xbc, 0xb0,
+ 0xc8, 0xda, 0xe4, 0x01, 0xb4, 0x14, 0x85, 0xd8, 0x08, 0x77, 0x43, 0xd2,
+ 0xa2, 0x8c, 0x3c, 0x4b, 0x93, 0xce, 0xa6, 0x4f, 0x26, 0xf6, 0x27, 0x45,
+ 0x16, 0x14, 0x62, 0x69, 0xcd, 0x26, 0x5b, 0x6f, 0xca, 0x0e, 0xca, 0x96,
+ 0xf3, 0x9f, 0xe5, 0x03, 0xaf, 0x5c, 0x43, 0x6f, 0x09, 0x5d, 0xe9, 0x20,
+ 0xf3, 0xe8, 0x2f, 0x04, 0x14, 0xe6, 0xb9, 0x39, 0x59, 0xaa, 0x98, 0x01,
+ 0xf3, 0xda, 0x85, 0x5f, 0xe8, 0x67, 0x12, 0x7a, 0x41, 0x85, 0x3f, 0xf5,
+ 0x65, 0x2b, 0x23, 0xbc, 0x2c, 0x9d, 0xa0, 0x6b, 0x5d, 0xab, 0x09, 0x90,
+ 0xed, 0xe8, 0x32, 0x71, 0x60, 0x53, 0x69, 0xdd, 0xb3, 0x21, 0xfe, 0x56,
+ 0x78, 0x9b, 0x20, 0x1b, 0x45, 0x9b, 0xb3, 0xbe, 0x61, 0xd7, 0x10, 0xb9,
+ 0xa3, 0x4d, 0x36, 0xf4, 0x6a, 0x62, 0xa9, 0x04, 0x97, 0x7e, 0xca, 0x2b,
+ 0xe4, 0x60, 0x89, 0x86, 0xf5, 0x86, 0x41, 0x2c, 0x12, 0x12, 0x6a, 0x76,
+ 0x67, 0xb8, 0x21, 0x43, 0xb1, 0x8e, 0x6c, 0xed, 0x83, 0xba, 0x08, 0x84,
+ 0xdb, 0x18, 0x52, 0xdb, 0x1c, 0x6e, 0x26, 0x5b, 0xd6, 0xb0, 0x9b, 0xa5,
+ 0xf5, 0xd5, 0x76, 0xcc, 0x0b, 0xe9, 0x1c, 0x7f, 0x8e, 0x51, 0x4d, 0xc4,
+ 0xf3, 0x00, 0x91, 0xc9, 0x1c, 0xaa, 0x5f, 0x81, 0x3d, 0x61, 0x4c, 0x0d,
+ 0xa4, 0x08, 0x0e, 0x6d, 0x1c, 0xb9, 0xf5, 0x93, 0x21, 0x4c, 0x45, 0xc6,
+ 0xd2, 0xfd, 0x4f, 0x8a, 0xc2, 0x84, 0x41, 0x2d, 0x7a, 0x96, 0x93, 0xbc,
+ 0x86, 0x5c, 0x00, 0xe5, 0x84, 0x28, 0xe2, 0x77, 0xc9, 0x8b, 0xe5, 0x55,
+ 0x65, 0x34, 0xbf, 0xb0, 0xce, 0x6a, 0xfc, 0x6d, 0xc2, 0xc0, 0x97, 0xe6,
+ 0x29, 0x7e, 0xc6, 0x52, 0x86, 0x07, 0x36, 0xf8, 0x09, 0xf1, 0xf1, 0x90,
+ 0x3f, 0x32, 0x4c, 0xeb, 0x61, 0xa0, 0xe5, 0x20, 0x8c, 0xe8, 0x87, 0x4c,
+ 0xa1, 0x74, 0xc2, 0x16, 0x41, 0xee, 0x22, 0x42, 0x6a, 0xc5, 0x94, 0xda,
+ 0x77, 0x27, 0x3b, 0xa3, 0xd1, 0x0e, 0xf8, 0xd5, 0x8e, 0xf9, 0x43, 0x2c,
+ 0x19, 0xca, 0xb4, 0xed, 0x76, 0xb8, 0x32, 0x14, 0x8e, 0x6f, 0xc1, 0xfd,
+ 0x23, 0xdd, 0x20, 0xbd, 0x8e, 0x41, 0x7f, 0x5d, 0x51, 0xf6, 0x69, 0x65,
+ 0x34, 0xc9, 0x8a, 0xcb, 0x78, 0x17, 0x1d, 0x01, 0x19, 0xf4, 0x95, 0x62,
+ 0xaf, 0x7a, 0x2d, 0x60, 0x11, 0x9d, 0x5e, 0x69, 0x30, 0xe9, 0xc8, 0xf3,
+ 0x82, 0x45, 0xe4, 0x8d, 0xa2, 0x74, 0x51, 0xfd, 0x74, 0xba, 0xd6, 0x96,
+ 0x7b, 0xbc, 0xdf, 0xf6, 0x79, 0x2c, 0xf3, 0xc2, 0x58, 0x17, 0x46, 0x2f,
+ 0x26, 0x34, 0x4e, 0x64, 0xdf, 0x85, 0xf5, 0x3b, 0xec, 0x48, 0x0b, 0xbb,
+ 0xce, 0xac, 0x14, 0x99, 0xc8, 0x53, 0x36, 0xbc, 0x16, 0x56, 0x1c, 0xbf,
+ 0xdf, 0x0a, 0x04, 0x25, 0x7f, 0x64, 0x1b, 0x43, 0x78, 0xf9, 0xb9, 0xcb,
+ 0xcc, 0xf6, 0xc6, 0x10, 0xb4, 0x97, 0x94, 0x93, 0x7f, 0x48, 0x71, 0x97,
+ 0xb4, 0xe5, 0x98, 0xc7, 0xc3, 0xfa, 0x1b, 0xec, 0x65, 0xf2, 0xa6, 0x60,
+ 0xd6, 0x0c, 0x40, 0x53, 0xb3, 0xf3, 0xaf, 0x0f, 0xcf, 0x44, 0x3b, 0xa1,
+ 0x92, 0x70, 0xd7, 0x00, 0x35, 0xec, 0x0f, 0x0c, 0x23, 0xe6, 0xe9, 0x63,
+ 0xdb, 0x91, 0xbc, 0xbe, 0x4a, 0xf7, 0x9f, 0x3c, 0x95, 0x69, 0x2b, 0x5a,
+ 0x16, 0xd9, 0x48, 0x9b, 0xfc, 0xab, 0x9d, 0x1d, 0x0e, 0x94, 0xc3, 0x30,
+ 0x0d, 0x78, 0x42, 0x2a, 0x7d, 0xd5, 0x37, 0xbf, 0xd8, 0x8c, 0xa6, 0xc8,
+ 0x59, 0xa7, 0xad, 0xb6, 0xe1, 0x84, 0xe7, 0x99, 0xf2, 0xea, 0x5a, 0x9d,
+ 0x14, 0x06, 0xbe, 0xbf, 0x96, 0xa1, 0x0f, 0xd2, 0x35, 0x0d, 0x06, 0x04,
+ 0x5f, 0x42, 0x9a, 0x30, 0x25, 0x5a, 0x8a, 0x0a, 0xe4, 0x4e, 0x6f, 0x77,
+ 0x28, 0xe5, 0x8c, 0x9a, 0xbf, 0x4e, 0x43, 0x10, 0x13, 0x4d, 0x78, 0xc3,
+ 0x81, 0x78, 0x23, 0x4b, 0xda, 0x27, 0xa0, 0xaa, 0x81, 0xeb, 0x07, 0xca,
+ 0xd3, 0x88, 0x0b, 0xbb, 0x63, 0xe8, 0x30, 0x57, 0x93, 0x20, 0x43, 0x41,
+ 0xbe, 0x69, 0x61, 0x36, 0xc9, 0x9a, 0xf7, 0x12, 0x03, 0xdd, 0x75, 0x31,
+ 0x92, 0xa0, 0x62, 0xaf, 0xb1, 0xb7, 0x01, 0x81, 0xd5, 0x48, 0x40, 0xcc,
+ 0x8a, 0x9d, 0x02, 0xc4, 0x1b, 0x73, 0x2e, 0x39, 0xc3, 0x2e, 0x99, 0xb3,
+ 0x45, 0xd0, 0x27, 0xb8, 0x07, 0x86, 0x14, 0x76, 0x40, 0x07, 0x62, 0x68,
+ 0x04, 0x1d, 0x0f, 0xe0, 0x5f, 0x7e, 0x3e, 0xda, 0x3d, 0x50, 0x4c, 0xd6,
+ 0x41, 0xf2, 0x4d, 0xb1, 0xc2, 0x79, 0x60, 0xd1, 0xdf, 0x8c, 0xbf, 0x0b,
+ 0x8a, 0xab, 0xf0, 0xc6, 0xe3, 0x47, 0x78, 0xe3, 0xdd, 0x98, 0x9f, 0xba,
+ 0x29, 0xe7, 0x17, 0xe6, 0xcd, 0x9d, 0x57, 0x77, 0xa9, 0xf9, 0x23, 0xf6,
+ 0xf8, 0x33, 0x3c, 0x6e, 0x08, 0x6f, 0xd6, 0x04, 0xdd, 0xc8, 0x13, 0x69,
+ 0xdd, 0x73, 0x90, 0x9c, 0x96, 0xf3, 0xb4, 0x22, 0x27, 0x35, 0x13, 0xdf,
+ 0x9a, 0x19, 0x3f, 0x7e, 0x1c, 0x99, 0xf1, 0xa0, 0x67, 0x42, 0xa3, 0x7f,
+ 0x7e, 0x46, 0x27, 0xe4, 0xf6, 0xc3, 0xdf, 0x26, 0xe9, 0xf4, 0x23, 0x51,
+ 0x22, 0xe5, 0xb1, 0x5b, 0x88, 0xe1, 0x4f, 0xc9, 0xcd, 0x19, 0x79, 0xe0,
+ 0x21, 0x9d, 0x8c, 0x2a, 0x82, 0x5e, 0x6b, 0xa8, 0xa4, 0xfd, 0xd9, 0xfe,
+ 0xa3, 0xbd, 0x9d, 0xa7, 0xa3, 0xc7, 0xa3, 0x7d, 0x9b, 0x57, 0x66, 0x08,
+ 0xeb, 0x1a, 0x7d, 0x33, 0x10, 0xc8, 0x8f, 0xf8, 0xbe, 0x29, 0xa3, 0x22,
+ 0x2f, 0xcc, 0x38, 0x88, 0xf9, 0xdb, 0x9f, 0x90, 0xd3, 0xc8, 0x65, 0x94,
+ 0xa4, 0x80, 0x99, 0xf0, 0x0b, 0x94, 0x46, 0x91, 0x16, 0x81, 0xc0, 0x6b,
+ 0xc0, 0x24, 0xd4, 0xd1, 0x81, 0x66, 0xc6, 0x94, 0xea, 0x39, 0xc9, 0x8d,
+ 0xc1, 0xdc, 0x94, 0x2b, 0xf2, 0xa8, 0xc3, 0x7d, 0xa3, 0x40, 0xeb, 0xa4,
+ 0x20, 0xd1, 0x3a, 0x70, 0xc5, 0x22, 0x7e, 0x31, 0x9e, 0x3c, 0x65, 0xef,
+ 0x4e, 0x5a, 0xcd, 0xdc, 0xe1, 0x88, 0x6d, 0xc8, 0x19, 0x4b, 0x0d, 0x4e,
+ 0x8c, 0x21, 0x53, 0x4c, 0xa1, 0x85, 0x7c, 0x6b, 0xec, 0x8c, 0x6b, 0xf2,
+ 0x19, 0xc7, 0x3a, 0x84, 0xc3, 0xcc, 0x80, 0x7a, 0x6c, 0xbd, 0xfe, 0x9a,
+ 0xe0, 0xe0, 0xd0, 0xd0, 0xe5, 0x07, 0x5c, 0x33, 0xc1, 0xee, 0x0f, 0x5a,
+ 0x77, 0xc0, 0xee, 0x5a, 0x3d, 0xd5, 0xdd, 0x89, 0x0b, 0x8e, 0x38, 0x2a,
+ 0x96, 0xd8, 0xbb, 0xed, 0xb2, 0x83, 0xfd, 0xc2, 0xb3, 0x98, 0xf7, 0xe5,
+ 0x1e, 0x57, 0x84, 0x00, 0x50, 0xb4, 0x11, 0x28, 0xf8, 0x5f, 0x9d, 0xc6,
+ 0x9e, 0x2a, 0x05, 0x83, 0xca, 0xa5, 0x6e, 0xe7, 0x43, 0x19, 0xf3, 0x57,
+ 0x53, 0xd9, 0xa3, 0xdf, 0x9e, 0xca, 0xf6, 0x1f, 0x4a, 0x65, 0x8e, 0xc8,
+ 0x70, 0xcf, 0xd6, 0x90, 0x18, 0x68, 0x4c, 0x3b, 0x9e, 0xc7, 0xa9, 0xcc,
+ 0x27, 0x33, 0x32, 0x51, 0x63, 0x84, 0xd6, 0xa2, 0x33, 0x4b, 0x66, 0x3d,
+ 0x54, 0xc6, 0x20, 0x55, 0x4c, 0x63, 0xeb, 0x49, 0x8c, 0x69, 0x8c, 0xbb,
+ 0x52, 0xaf, 0xa1, 0xb2, 0xb6, 0x07, 0x7e, 0x3d, 0x9d, 0x39, 0x72, 0x78,
+ 0x30, 0x95, 0x69, 0x1f, 0x1b, 0xe6, 0x3a, 0x3d, 0x24, 0xd6, 0xa2, 0xb1,
+ 0x35, 0x0d, 0xff, 0xf6, 0x9e, 0xc7, 0xa8, 0xec, 0xd1, 0x43, 0xa8, 0xcc,
+ 0x1c, 0xe8, 0x1c, 0xb2, 0xb7, 0x45, 0x65, 0x8f, 0x7f, 0x5b, 0x2a, 0x03,
+ 0x48, 0x4e, 0xb7, 0xd8, 0x32, 0x79, 0xf9, 0xcf, 0x9e, 0x63, 0x4a, 0xc3,
+ 0xea, 0xa8, 0x41, 0x0d, 0xe2, 0x2f, 0xe3, 0x14, 0x9d, 0x0b, 0x7d, 0xef,
+ 0x89, 0xb5, 0x61, 0x69, 0xf6, 0x7e, 0xf1, 0x89, 0xed, 0x77, 0xe2, 0x83,
+ 0x46, 0xf5, 0x63, 0xa7, 0xed, 0x9f, 0xd5, 0x79, 0x7e, 0xb0, 0xb3, 0xf3,
+ 0x33, 0x39, 0x21, 0x0e, 0x20, 0xfb, 0x7e, 0x0e, 0xba, 0xde, 0x46, 0xf4,
+ 0xe3, 0xf1, 0xc9, 0xab, 0xef, 0xc6, 0xe2, 0xfc, 0x15, 0x25, 0x46, 0x95,
+ 0x1c, 0xc2, 0xb3, 0x43, 0xc8, 0x87, 0xca, 0x87, 0x03, 0xbd, 0x99, 0xbb,
+ 0x25, 0x0e, 0x6f, 0x07, 0xea, 0x81, 0xa5, 0xbc, 0x1d, 0x61, 0xc6, 0x84,
+ 0x92, 0xc6, 0xd7, 0x59, 0x9c, 0xbb, 0x32, 0x6a, 0x2f, 0x20, 0x16, 0x4f,
+ 0x44, 0x66, 0x62, 0x6d, 0xff, 0xc2, 0x7b, 0x71, 0xab, 0xb9, 0xaa, 0xa8,
+ 0x38, 0x82, 0x1e, 0xdd, 0xd6, 0xf8, 0xcb, 0xba, 0xd9, 0xc9, 0xbc, 0xbe,
+ 0x25, 0x34, 0xd9, 0x65, 0x95, 0xf5, 0x74, 0x9a, 0x3e, 0xbf, 0xf2, 0x7e,
+ 0xab, 0xae, 0x28, 0x87, 0x2a, 0xee, 0xb6, 0x4b, 0xd0, 0xd1, 0xbc, 0xfd,
+ 0xc6, 0x7b, 0x41, 0x0e, 0x1a, 0xe0, 0x7f, 0xa9, 0x8c, 0xc5, 0x82, 0x93,
+ 0xcc, 0xa9, 0xcf, 0x68, 0xa3, 0x8d, 0x39, 0x6e, 0xef, 0x5c, 0x63, 0xc8,
+ 0x5a, 0x0a, 0x61, 0xd0, 0xfa, 0xa2, 0x7e, 0x6c, 0x86, 0xec, 0x3a, 0x36,
+ 0xf8, 0x17, 0x29, 0x7e, 0xc3, 0x7f, 0x7f, 0x82, 0xef, 0x52, 0x84, 0x82,
+ 0xfe, 0x75, 0x85, 0x7f, 0x4a, 0x70, 0x5e, 0x20, 0x98, 0xfc, 0x53, 0x9e,
+ 0xc6, 0x37, 0xda, 0xaf, 0xb7, 0xb1, 0xf0, 0x00, 0xef, 0xca, 0x00, 0x62,
+ 0x88, 0x56, 0xed, 0xc3, 0xb8, 0x05, 0x79, 0x13, 0x96, 0x0b, 0xd3, 0xc8,
+ 0x8f, 0xe3, 0x0a, 0x57, 0xe6, 0xa3, 0x34, 0x6a, 0xd1, 0xbd, 0xdf, 0x2c,
+ 0xcb, 0x45, 0x1c, 0xe5, 0x00, 0x06, 0xd4, 0x1c, 0x2a, 0x02, 0xa3, 0xcc,
+ 0xad, 0x20, 0x64, 0xde, 0x7b, 0xbb, 0x9f, 0x87, 0x5e, 0xdb, 0xf7, 0x5a,
+ 0x10, 0xe6, 0xa0, 0x0a, 0x29, 0xaf, 0x80, 0x92, 0xb3, 0x27, 0xae, 0x0e,
+ 0x22, 0xf6, 0xd9, 0x48, 0xd5, 0x18, 0x8c, 0xe9, 0x59, 0xc6, 0xd6, 0xd7,
+ 0x84, 0x0d, 0x69, 0xe1, 0x13, 0x69, 0xbb, 0xf5, 0x03, 0x7c, 0x0f, 0xb9,
+ 0x24, 0xd6, 0xc2, 0x31, 0xc3, 0xd1, 0xf1, 0x80, 0xbf, 0x53, 0x83, 0x6d,
+ 0x89, 0xd9, 0x7c, 0xe5, 0x70, 0xaf, 0x7e, 0xff, 0x78, 0x17, 0xa7, 0xaa,
+ 0xa3, 0xa0, 0x1d, 0xcc, 0x5c, 0x7d, 0xed, 0xbf, 0x7f, 0x94, 0x8e, 0xfe,
+ 0x85, 0x40, 0x46, 0x4f, 0xda, 0x66, 0xf9, 0xef, 0xe4, 0x8e, 0x5f, 0x02,
+ 0x6e, 0x65, 0x38, 0x49, 0xab, 0x48, 0x01, 0x82, 0x68, 0x88, 0x0a, 0xd2,
+ 0xa1, 0x08, 0x17, 0xfa, 0x16, 0x77, 0x56, 0x90, 0xac, 0x72, 0xfb, 0x43,
+ 0x33, 0x54, 0x12, 0xb6, 0x6b, 0xb0, 0x0e, 0x6f, 0xbf, 0xbd, 0xea, 0x20,
+ 0x40, 0x96, 0x4a, 0xe7, 0x03, 0x84, 0xc2, 0x22, 0xf8, 0x43, 0x74, 0x36,
+ 0xad, 0x8f, 0xcc, 0xaa, 0xf4, 0xc6, 0x33, 0xc9, 0x19, 0xda, 0xfd, 0x82,
+ 0x1d, 0xdf, 0x36, 0x87, 0x01, 0x29, 0xd6, 0x08, 0x69, 0xc6, 0xb4, 0x8f,
+ 0x7a, 0x5a, 0x65, 0x12, 0x62, 0x00, 0x4e, 0x20, 0x85, 0x2f, 0x01, 0xb0,
+ 0x67, 0xd4, 0x8e, 0xcb, 0x4c, 0x0b, 0x0f, 0xed, 0xaa, 0x15, 0x59, 0x82,
+ 0xe0, 0x24, 0x46, 0x91, 0xac, 0x5e, 0x97, 0xb8, 0xa3, 0xed, 0x6e, 0x53,
+ 0xc1, 0x9e, 0xc0, 0xab, 0x5a, 0x02, 0x2a, 0xe9, 0xd1, 0x0c, 0xdb, 0x82,
+ 0xb6, 0x6d, 0xe6, 0xdb, 0x79, 0xb7, 0x99, 0xf9, 0xd6, 0xf0, 0xcb, 0xf2,
+ 0xcb, 0xe1, 0xb6, 0xba, 0x3e, 0x81, 0xfb, 0x58, 0x93, 0x2d, 0x44, 0x93,
+ 0x45, 0xc0, 0xf3, 0x8a, 0xbc, 0x36, 0x22, 0xbe, 0xa8, 0x88, 0x81, 0x32,
+ 0x18, 0x05, 0xd7, 0x29, 0x68, 0x28, 0xc2, 0x33, 0xab, 0x10, 0xe9, 0x14,
+ 0x7e, 0x07, 0xff, 0x8e, 0xd9, 0xad, 0x0b, 0x4e, 0x90, 0xa2, 0x9a, 0x48,
+ 0x84, 0x81, 0x05, 0x88, 0x98, 0x9d, 0xca, 0xe5, 0xb2, 0x2d, 0x9b, 0x50,
+ 0x5e, 0xab, 0xbc, 0xe1, 0x85, 0x32, 0x95, 0x3f, 0xde, 0x9b, 0x3c, 0x6f,
+ 0xd9, 0xcf, 0x85, 0x78, 0x45, 0x70, 0xf9, 0xa8, 0x98, 0x82, 0x01, 0x8c,
+ 0xa7, 0x57, 0xd9, 0x42, 0x1a, 0xaf, 0xf4, 0x94, 0x22, 0xf7, 0xd6, 0xed,
+ 0xb6, 0xe7, 0xc4, 0xd9, 0x65, 0x17, 0xcd, 0x72, 0xb4, 0x28, 0xff, 0x66,
+ 0xb6, 0x39, 0x45, 0x27, 0xb7, 0xe0, 0x4a, 0x18, 0x59, 0x5f, 0xf0, 0xb9,
+ 0x20, 0x46, 0x50, 0x58, 0xab, 0xd2, 0xb1, 0xef, 0x44, 0x81, 0xa6, 0xb9,
+ 0x62, 0x3c, 0x49, 0x5e, 0x99, 0x19, 0x1f, 0x7e, 0x78, 0xff, 0x6e, 0xfc,
+ 0xfe, 0xb4, 0x4b, 0xd8, 0xa7, 0x27, 0x67, 0xe7, 0x87, 0xaf, 0x3f, 0x9c,
+ 0x9e, 0x9d, 0x9c, 0x9f, 0xbc, 0x3a, 0x39, 0x4e, 0xb6, 0xf6, 0xb6, 0xd7,
+ 0x96, 0x48, 0x59, 0x97, 0x86, 0x87, 0xb7, 0xa7, 0xf3, 0x67, 0x9e, 0x65,
+ 0x67, 0xb1, 0x85, 0xf5, 0x84, 0xa3, 0xfd, 0x20, 0xd4, 0xd5, 0xae, 0xed,
+ 0x63, 0xdf, 0x06, 0x89, 0x37, 0x62, 0xeb, 0x69, 0x72, 0xb9, 0xe2, 0x9b,
+ 0xe2, 0xc2, 0xe5, 0x8c, 0x34, 0x19, 0x28, 0x5c, 0x1a, 0xb0, 0xf3, 0xaa,
+ 0x6b, 0xd6, 0xfa, 0xf7, 0x9e, 0x74, 0x75, 0x16, 0x9c, 0x01, 0x29, 0x60,
+ 0x8e, 0x2a, 0xea, 0xf5, 0x64, 0xc1, 0x90, 0x1c, 0x84, 0xe3, 0x6c, 0xdf,
+ 0x20, 0x94, 0x7b, 0x09, 0xa1, 0x50, 0x49, 0x2a, 0x6b, 0x74, 0x46, 0x94,
+ 0x9e, 0x86, 0xdd, 0x89, 0xe4, 0x15, 0xb4, 0x30, 0x97, 0x1e, 0x99, 0x32,
+ 0x11, 0x0a, 0xa1, 0x61, 0x7f, 0x25, 0xa2, 0x6b, 0x1e, 0xc0, 0x6f, 0x3d,
+ 0xae, 0x4a, 0xa5, 0x45, 0x41, 0x58, 0x92, 0x5f, 0xbe, 0xa0, 0xfe, 0x8c,
+ 0x37, 0xde, 0xa4, 0x30, 0x1c, 0x94, 0x32, 0x42, 0xd3, 0x8b, 0x70, 0xd8,
+ 0x43, 0x8d, 0xce, 0x30, 0xce, 0x06, 0xdd, 0x48, 0x52, 0x5f, 0x14, 0xa4,
+ 0x65, 0xec, 0x2f, 0xe6, 0x1e, 0x42, 0xe6, 0x4d, 0x84, 0xbb, 0x7c, 0x80,
+ 0xb3, 0x1f, 0x30, 0x41, 0x4b, 0x58, 0x6a, 0x4d, 0x86, 0xbe, 0x43, 0x3c,
+ 0xf1, 0x7d, 0x5c, 0x34, 0x21, 0xb8, 0xde, 0xdd, 0x6a, 0xbc, 0xa9, 0x68,
+ 0x91, 0xa4, 0x91, 0x2d, 0xdd, 0xcd, 0x25, 0x59, 0x63, 0x8b, 0xd7, 0x05,
+ 0xc3, 0xc3, 0xe2, 0xf7, 0x02, 0xfe, 0xc2, 0xe8, 0xee, 0x07, 0x92, 0xab,
+ 0xc4, 0xc9, 0x3b, 0x5c, 0xfb, 0x4e, 0x60, 0x82, 0xaf, 0x4e, 0x23, 0xd8,
+ 0x0b, 0xae, 0x12, 0x9e, 0xd8, 0xad, 0x36, 0xf3, 0xdd, 0x1d, 0xed, 0x26,
+ 0xe3, 0xb7, 0x5f, 0x0b, 0x0a, 0xe1, 0xd7, 0x63, 0xc6, 0x69, 0x60, 0xcb,
+ 0x5b, 0x5f, 0x19, 0xc5, 0xb1, 0x9e, 0xd8, 0x99, 0x09, 0x5e, 0x8a, 0xd9,
+ 0xfd, 0x21, 0xb5, 0xc5, 0x65, 0x75, 0xff, 0x9a, 0x07, 0x11, 0xc9, 0xa4,
+ 0x05, 0xeb, 0xe6, 0x52, 0xd5, 0x6e, 0x9e, 0xd2, 0xdf, 0x95, 0x97, 0x3c,
+ 0x5a, 0x8f, 0x79, 0xb5, 0x1f, 0xdc, 0x86, 0xdf, 0xec, 0x1e, 0x68, 0x68,
+ 0xd6, 0xb2, 0xf0, 0xee, 0x66, 0x9c, 0xda, 0xb7, 0x68, 0xeb, 0x32, 0x94,
+ 0xca, 0x90, 0x3f, 0x78, 0x9e, 0x5d, 0x90, 0x02, 0x47, 0xd5, 0x6b, 0x03,
+ 0xfa, 0x25, 0x05, 0xbe, 0x6c, 0x6e, 0x53, 0x14, 0x00, 0x89, 0xc6, 0x48,
+ 0xa7, 0xbe, 0x42, 0xac, 0x58, 0x69, 0xdd, 0x3d, 0xf8, 0x03, 0xb5, 0x4d,
+ 0x65, 0x98, 0x58, 0x16, 0xcd, 0x02, 0x7b, 0x40, 0x20, 0x6e, 0xb9, 0xc6,
+ 0xb6, 0xbc, 0x9b, 0x34, 0x47, 0x39, 0xdc, 0x1d, 0x57, 0xd2, 0x05, 0x86,
+ 0x1a, 0x29, 0x51, 0x33, 0x18, 0x04, 0x2e, 0x89, 0x53, 0x69, 0x9a, 0x3a,
+ 0x1e, 0x39, 0xf4, 0x2b, 0xd1, 0x8a, 0x42, 0xce, 0x38, 0x4c, 0x92, 0xd7,
+ 0x59, 0x71, 0xa7, 0x9c, 0xd1, 0xe5, 0x1f, 0x11, 0x82, 0xc5, 0x35, 0xbb,
+ 0xaa, 0xd9, 0xeb, 0xcc, 0xb8, 0x40, 0x35, 0xc9, 0x40, 0x3b, 0xc5, 0x70,
+ 0x4a, 0xed, 0x39, 0xc7, 0xee, 0xff, 0x97, 0x76, 0x1b, 0xa4, 0x86, 0xda,
+ 0xdf, 0x8b, 0x2d, 0x02, 0x4a, 0xd0, 0xc8, 0x1c, 0x7d, 0x4f, 0x47, 0x5c,
+ 0xbb, 0x0d, 0xdb, 0x03, 0xac, 0x81, 0x0c, 0xa3, 0x7a, 0x35, 0xf9, 0x0b,
+ 0x03, 0x6e, 0x27, 0x30, 0xd0, 0x2b, 0xd9, 0x06, 0xc9, 0x57, 0x33, 0x9c,
+ 0xcd, 0x3c, 0xc0, 0xd1, 0x24, 0x73, 0xa3, 0x8b, 0xd8, 0x70, 0x14, 0x33,
+ 0x54, 0xa4, 0xeb, 0x36, 0x09, 0xd0, 0x94, 0xd6, 0x95, 0x28, 0x1d, 0x7c,
+ 0xd6, 0xc3, 0x28, 0x87, 0x17, 0xe0, 0x4c, 0x9c, 0x06, 0xd5, 0x11, 0x61,
+ 0xbc, 0x97, 0x9c, 0x7a, 0x67, 0x13, 0x41, 0xf1, 0x78, 0xef, 0x58, 0xca,
+ 0xef, 0xea, 0xc1, 0x1f, 0xf0, 0x47, 0xb8, 0x86, 0x56, 0xf4, 0x04, 0xdb,
+ 0xac, 0x37, 0x1d, 0x8f, 0x13, 0xf3, 0xa0, 0xd7, 0xfb, 0x3e, 0xf0, 0xa5,
+ 0x63, 0xa6, 0xeb, 0xc7, 0x26, 0xc6, 0xf3, 0x90, 0x0f, 0xbc, 0x2f, 0x14,
+ 0x55, 0x4c, 0xa9, 0x7b, 0x69, 0x81, 0xce, 0x6f, 0xd2, 0xaa, 0xa0, 0x4c,
+ 0x6f, 0xdf, 0x9c, 0x00, 0x1c, 0xc5, 0x52, 0x7a, 0x20, 0xa4, 0x17, 0xc8,
+ 0x91, 0xad, 0x32, 0x87, 0xcb, 0x8a, 0x93, 0x64, 0xd0, 0x19, 0x81, 0x7a,
+ 0xd6, 0x94, 0xcd, 0x65, 0xd9, 0x30, 0xe8, 0x34, 0x92, 0x6a, 0xa1, 0x2f,
+ 0x54, 0xf0, 0xb4, 0x79, 0x9b, 0xac, 0xaa, 0x26, 0x46, 0xb3, 0x87, 0x8f,
+ 0x91, 0x56, 0x4b, 0x04, 0xf1, 0x24, 0xdd, 0x89, 0x03, 0xa2, 0x1e, 0x93,
+ 0x91, 0xcf, 0x71, 0x5e, 0x14, 0x39, 0x6e, 0x5c, 0xcc, 0x2d, 0xbd, 0x2e,
+ 0x73, 0x24, 0xd7, 0x58, 0x6f, 0x05, 0x29, 0x41, 0x8e, 0x4a, 0xce, 0xc3,
+ 0xae, 0x09, 0x64, 0xa4, 0xd8, 0x8c, 0x14, 0xb1, 0x52, 0xe0, 0x0f, 0xa4,
+ 0x84, 0x21, 0x72, 0x1c, 0x78, 0x45, 0x38, 0x7c, 0xbb, 0x75, 0x38, 0x4a,
+ 0x5b, 0x48, 0x19, 0xf4, 0xcc, 0xd0, 0x64, 0x91, 0x36, 0x7a, 0x5f, 0x3c,
+ 0x8e, 0x88, 0x19, 0x12, 0x28, 0x41, 0x01, 0xdb, 0x61, 0x6a, 0x11, 0x81,
+ 0xba, 0xb8, 0xd2, 0xed, 0xd6, 0xd0, 0x56, 0xa2, 0xda, 0xec, 0x4a, 0xa7,
+ 0x2c, 0x8e, 0xee, 0x61, 0xe2, 0xb7, 0x77, 0x9a, 0xcf, 0xb5, 0x96, 0x81,
+ 0x2f, 0xa9, 0xc2, 0xd6, 0x6c, 0x74, 0xde, 0xd0, 0x81, 0x75, 0xf2, 0x49,
+ 0x35, 0xcd, 0x52, 0xbc, 0x1e, 0x8b, 0xc5, 0x2a, 0xec, 0x63, 0x27, 0x41,
+ 0x34, 0x01, 0x42, 0x27, 0x6e, 0xcf, 0x40, 0x4b, 0xa4, 0x46, 0x88, 0xbb,
+ 0x83, 0xb1, 0xf6, 0xbd, 0xfe, 0x03, 0x48, 0xdb, 0x45, 0x58, 0x2d, 0xee,
+ 0x8d, 0xdb, 0xb1, 0xf8, 0x2a, 0x86, 0x60, 0x8a, 0xd9, 0xd0, 0x30, 0x81,
+ 0xe5, 0x1a, 0x6f, 0x96, 0x73, 0xf8, 0xb4, 0x12, 0x51, 0x7d, 0x44, 0x07,
+ 0xfe, 0x09, 0xe7, 0xbb, 0xc9, 0xde, 0x85, 0x89, 0xdc, 0x46, 0x17, 0x78,
+ 0x14, 0xdb, 0xc9, 0x58, 0x42, 0x5d, 0x37, 0xd6, 0x8b, 0x45, 0xf5, 0x02,
+ 0xf0, 0xf3, 0x0e, 0xd2, 0x06, 0xea, 0x86, 0xf5, 0x65, 0x1f, 0xf1, 0xde,
+ 0xc9, 0xb6, 0xbd, 0xe7, 0x32, 0x27, 0x1a, 0x91, 0xaa, 0x57, 0x0b, 0x49,
+ 0x61, 0xf6, 0xbe, 0xc4, 0x06, 0x51, 0xb0, 0x8f, 0x04, 0x79, 0xa4, 0x50,
+ 0xee, 0xfc, 0x24, 0x05, 0x55, 0x7c, 0x6e, 0x17, 0x3f, 0xed, 0x88, 0x47,
+ 0x85, 0xf8, 0x24, 0x7d, 0x08, 0x13, 0xcb, 0xd7, 0x82, 0x09, 0xf4, 0x1c,
+ 0x46, 0x0c, 0x47, 0x63, 0xd6, 0xc9, 0x0e, 0xd5, 0x9f, 0x73, 0x07, 0xf4,
+ 0x78, 0x4e, 0xda, 0x58, 0xee, 0x9b, 0xf6, 0x49, 0x27, 0x3e, 0xad, 0x09,
+ 0x81, 0x9e, 0x8b, 0x8d, 0x9b, 0x01, 0xdd, 0xae, 0xc9, 0xfc, 0xf0, 0x3e,
+ 0xc7, 0x18, 0x1a, 0xd2, 0x2e, 0x59, 0xc6, 0x75, 0xff, 0xf4, 0x7f, 0x7b,
+ 0x3b, 0x88, 0x31, 0x69, 0x9c, 0x55, 0xbf, 0xaf, 0xa2, 0xfd, 0x99, 0x17,
+ 0xe6, 0x46, 0xaf, 0x5b, 0x14, 0x3d, 0xf4, 0x6b, 0x16, 0x15, 0xac, 0x8a,
+ 0x96, 0x41, 0xfb, 0x1d, 0x9c, 0x09, 0x7f, 0x66, 0x4d, 0xc4, 0xa7, 0x67,
+ 0x09, 0x66, 0xc4, 0x35, 0x2d, 0x5c, 0xbd, 0x65, 0xd8, 0x07, 0x7f, 0xe9,
+ 0x4a, 0xee, 0xdf, 0x46, 0x22, 0x0d, 0xfc, 0xf7, 0xcf, 0x07, 0xe4, 0x4c,
+ 0x9b, 0xfd, 0xdc, 0x3b, 0x8f, 0xc3, 0x81, 0xcc, 0xe5, 0x13, 0x4c, 0x23,
+ 0x5f, 0x5e, 0xc1, 0x59, 0xf2, 0x22, 0x56, 0x01, 0xe3, 0x6d, 0x84, 0x3c,
+ 0xf6, 0xdb, 0x7f, 0xbf, 0x9a, 0x3b, 0xac, 0x99, 0x35, 0xdf, 0x97, 0xc7,
+ 0x7e, 0xf3, 0xef, 0xf3, 0xdd, 0xbd, 0xd7, 0x79, 0x42, 0x8c, 0xea, 0xb5,
+ 0xa4, 0x19, 0x47, 0x78, 0xe2, 0xaf, 0x66, 0x8a, 0x92, 0xba, 0x1c, 0x72,
+ 0x45, 0xf9, 0x58, 0xb4, 0x21, 0x82, 0xb0, 0x45, 0xe2, 0x8a, 0xbf, 0x09,
+ 0x07, 0x23, 0xd6, 0x1c, 0x6e, 0x8e, 0x74, 0x28, 0x79, 0xc1, 0x7f, 0xee,
+ 0x7c, 0x15, 0x3b, 0x23, 0xad, 0x06, 0x81, 0x14, 0xd4, 0x96, 0x26, 0xd4,
+ 0x25, 0x83, 0xeb, 0xf7, 0x45, 0xe3, 0xb5, 0xfd, 0x1d, 0xb0, 0x59, 0xb6,
+ 0xa7, 0x36, 0x5e, 0x8d, 0x35, 0x52, 0x91, 0x1d, 0xd2, 0x6c, 0x4e, 0x0b,
+ 0x78, 0x6d, 0x53, 0x79, 0xa0, 0x78, 0x64, 0xde, 0x17, 0x6b, 0x0b, 0x94,
+ 0x12, 0x71, 0x30, 0xfa, 0xdd, 0x28, 0x1d, 0x96, 0xe8, 0xb7, 0x03, 0xe9,
+ 0x63, 0x62, 0x46, 0x03, 0x55, 0x49, 0x2a, 0xa3, 0x84, 0x10, 0xe4, 0x38,
+ 0x43, 0xc4, 0x15, 0x69, 0x3a, 0x4f, 0x19, 0xf6, 0x94, 0xba, 0x89, 0x15,
+ 0xbe, 0x3a, 0x79, 0xf7, 0xee, 0xf0, 0x55, 0x37, 0xe4, 0x66, 0x7b, 0x3e,
+ 0x3a, 0x55, 0x3f, 0x68, 0xa3, 0x47, 0x9f, 0x27, 0x88, 0x74, 0x89, 0xb9,
+ 0xf0, 0xf7, 0xa9, 0xc7, 0x4e, 0x2a, 0x68, 0xa9, 0xfc, 0x4b, 0x56, 0x49,
+ 0x04, 0x49, 0x53, 0x28, 0x20, 0x52, 0x74, 0x15, 0xd0, 0xc3, 0xd4, 0x43,
+ 0x5f, 0xe1, 0x0e, 0x56, 0x35, 0x35, 0x6d, 0x22, 0x45, 0x94, 0x8c, 0x4c,
+ 0x99, 0x05, 0x25, 0x3e, 0xcf, 0x66, 0x3b, 0x92, 0x57, 0xac, 0xdf, 0xee,
+ 0xa3, 0x65, 0x86, 0xde, 0x42, 0xed, 0xc6, 0xb0, 0xbc, 0xe0, 0x8e, 0x9e,
+ 0x8b, 0xb4, 0xfa, 0x88, 0xa0, 0xb0, 0x57, 0xc5, 0x41, 0x75, 0x7c, 0x84,
+ 0x02, 0x3c, 0x9b, 0xc5, 0xca, 0xc3, 0xc9, 0x77, 0xed, 0x27, 0xad, 0xcb,
+ 0x64, 0xa4, 0x05, 0xde, 0x81, 0x96, 0xd7, 0xe1, 0xf5, 0x22, 0xbb, 0xc1,
+ 0x67, 0x18, 0x13, 0x03, 0x65, 0xde, 0x21, 0xac, 0x3e, 0x43, 0x39, 0xb3,
+ 0x6f, 0xfe, 0x4e, 0xca, 0xcb, 0x71, 0x54, 0x0b, 0x86, 0xad, 0x27, 0x70,
+ 0x5c, 0x74, 0x82, 0xe2, 0xd2, 0x8c, 0x60, 0xaf, 0xbe, 0x15, 0x78, 0xbb,
+ 0x4e, 0x58, 0x2a, 0x68, 0xbc, 0x23, 0x75, 0x2b, 0x16, 0xf3, 0x8e, 0x1c,
+ 0x04, 0x7d, 0x10, 0x21, 0x0e, 0xa7, 0x8a, 0xfc, 0xd0, 0x75, 0x6b, 0x08,
+ 0x3d, 0xdd, 0xb4, 0x27, 0x7e, 0x36, 0x06, 0x5e, 0x35, 0xdd, 0x15, 0x7c,
+ 0xc2, 0x30, 0xb1, 0x27, 0x5d, 0xec, 0x55, 0xc2, 0x0c, 0x25, 0x57, 0x23,
+ 0xf0, 0xc8, 0x2e, 0x29, 0x09, 0x1d, 0x0f, 0xd3, 0x65, 0x0d, 0xd4, 0x5c,
+ 0x30, 0x54, 0xaa, 0xcf, 0x1a, 0x68, 0x0f, 0x72, 0xea, 0xc9, 0x33, 0x43,
+ 0x96, 0x99, 0xee, 0xbd, 0xe2, 0x8b, 0xb0, 0x2f, 0x5f, 0x2e, 0xb0, 0xf9,
+ 0x73, 0xb9, 0x6a, 0x82, 0x70, 0x1c, 0x90, 0x96, 0xb8, 0xcc, 0xfe, 0xab,
+ 0x61, 0xd8, 0x94, 0x28, 0x9d, 0xf9, 0x67, 0x4a, 0x0c, 0x9c, 0xcc, 0xfe,
+ 0xba, 0x31, 0xf7, 0x3f, 0xee, 0x9f, 0xb5, 0x38, 0x52, 0x5a, 0xde, 0x10,
+ 0xb3, 0x6a, 0x68, 0xc7, 0x1c, 0xa9, 0xee, 0x90, 0x5f, 0xa1, 0x4b, 0x0b,
+ 0xf6, 0x15, 0x65, 0x11, 0xeb, 0x00, 0x35, 0x08, 0xed, 0xaf, 0xc3, 0xfd,
+ 0x8c, 0x95, 0x03, 0xcf, 0x53, 0xd6, 0x27, 0x94, 0x3e, 0x32, 0x7c, 0x23,
+ 0x3f, 0xf4, 0xdb, 0x4b, 0xa6, 0xf5, 0x6d, 0xe6, 0x9d, 0x68, 0xb4, 0xcf,
+ 0x7d, 0x8a, 0x19, 0x44, 0xfb, 0xb6, 0xb7, 0xbe, 0xfd, 0xf0, 0xcf, 0x06,
+ 0xb0, 0x73, 0x0f, 0x93, 0xba, 0x0e, 0x52, 0xd1, 0x61, 0x2a, 0x76, 0x65,
+ 0x30, 0x31, 0xdc, 0x20, 0x5d, 0xd4, 0x93, 0xc8, 0x6b, 0x65, 0xb0, 0x2b,
+ 0x27, 0xf2, 0xc5, 0x70, 0x24, 0xec, 0x1d, 0x83, 0x77, 0x94, 0x40, 0xce,
+ 0xc3, 0x44, 0xf2, 0xbd, 0x22, 0xb8, 0x55, 0x8d, 0xd9, 0xcd, 0x56, 0xb2,
+ 0xc5, 0x58, 0x0f, 0xdc, 0xb8, 0x48, 0x69, 0x62, 0xf2, 0x4f, 0xaa, 0x2b,
+ 0x54, 0x01, 0xd6, 0x52, 0x56, 0xe8, 0x2b, 0xad, 0x4d, 0x78, 0x88, 0x54,
+ 0x0a, 0xb6, 0xa4, 0x5b, 0xd2, 0xd5, 0xda, 0xa8, 0x70, 0x17, 0xd6, 0x25,
+ 0xa3, 0x3b, 0xf2, 0xa4, 0xa7, 0x7e, 0xf3, 0x6b, 0xf1, 0xf0, 0x4c, 0xea,
+ 0xf6, 0xc1, 0xac, 0x4d, 0xa3, 0xe6, 0x34, 0x5d, 0xc1, 0x6c, 0xee, 0xcd,
+ 0xa4, 0xee, 0xa6, 0x52, 0x7b, 0x5e, 0x89, 0x48, 0x2e, 0x35, 0x8d, 0xf6,
+ 0xff, 0xc1, 0x4c, 0x6a, 0x3f, 0x91, 0x3a, 0xa5, 0x34, 0xea, 0x48, 0x16,
+ 0xb5, 0x6c, 0xb4, 0x64, 0x3d, 0x4a, 0x0f, 0xb9, 0x75, 0x99, 0xd4, 0x7e,
+ 0x2a, 0xf5, 0xba, 0x5c, 0x6a, 0xaa, 0x2d, 0x5e, 0x93, 0x49, 0xfd, 0xeb,
+ 0x12, 0xa9, 0xfb, 0x32, 0xa9, 0x7f, 0x79, 0x2a, 0xf5, 0x6f, 0x9b, 0x49,
+ 0xfd, 0x5b, 0xe6, 0xf4, 0xd2, 0xed, 0xc1, 0x89, 0xe4, 0x53, 0xa9, 0x51,
+ 0x79, 0x71, 0x1f, 0xba, 0x68, 0x3b, 0x0d, 0xc4, 0x0b, 0xd6, 0xca, 0x30,
+ 0xac, 0xd1, 0x78, 0x8a, 0x7b, 0x11, 0xe8, 0x3c, 0x42, 0x2b, 0x91, 0x3c,
+ 0x32, 0x3f, 0x9a, 0xfa, 0x28, 0x76, 0xd3, 0xeb, 0x7a, 0x3e, 0xa4, 0x19,
+ 0xa0, 0x74, 0x34, 0xb0, 0x12, 0x1d, 0x9f, 0xe9, 0x3c, 0xf7, 0xdb, 0xb3,
+ 0x9c, 0x66, 0x5e, 0xef, 0x3d, 0x72, 0xb6, 0xba, 0xfc, 0x65, 0x85, 0xb2,
+ 0xc6, 0x98, 0xdd, 0x2e, 0x75, 0x1c, 0x63, 0xe1, 0x32, 0x0a, 0x55, 0xc1,
+ 0xaf, 0x91, 0x97, 0x34, 0xb3, 0xfd, 0xd5, 0x6c, 0x48, 0xc2, 0x76, 0x4b,
+ 0x0d, 0x6a, 0x54, 0xa8, 0x8a, 0xd9, 0x5f, 0x07, 0xc9, 0x10, 0x54, 0xa3,
+ 0x28, 0xd3, 0xae, 0xe9, 0x16, 0xee, 0x8d, 0x1e, 0x71, 0xa1, 0xab, 0x86,
+ 0x74, 0x64, 0x9e, 0x01, 0x38, 0x0d, 0x7d, 0x9f, 0xc1, 0x81, 0x5d, 0x26,
+ 0x17, 0xb7, 0x2f, 0xd2, 0x77, 0x46, 0xc9, 0x19, 0xd4, 0x47, 0xa3, 0xac,
+ 0x9b, 0x19, 0xc9, 0xe0, 0xf2, 0xbb, 0xd8, 0x70, 0x6d, 0x3c, 0x4a, 0x43,
+ 0x3f, 0xef, 0xcf, 0x8e, 0xc3, 0x28, 0x2f, 0x45, 0x0f, 0x0e, 0x76, 0x76,
+ 0x28, 0xcf, 0xe8, 0x2a, 0xbd, 0xbd, 0x1d, 0xd5, 0xd9, 0xce, 0xac, 0x9c,
+ 0xd6, 0x3b, 0x38, 0x41, 0xfd, 0xf2, 0x55, 0xb3, 0x98, 0x7f, 0xf2, 0x6b,
+ 0x60, 0x4e, 0x14, 0x92, 0xed, 0x21, 0x0a, 0x9e, 0xff, 0xe8, 0xa7, 0xa0,
+ 0x2c, 0x9b, 0xca, 0xf5, 0x82, 0xf3, 0xb4, 0xd6, 0xce, 0xc4, 0x3e, 0xfc,
+ 0x29, 0x66, 0x42, 0x25, 0xc6, 0x51, 0x9e, 0xd0, 0x9a, 0x03, 0x3d, 0xf6,
+ 0x29, 0xbe, 0x7f, 0xbd, 0xd7, 0xf7, 0x59, 0xea, 0x81, 0x48, 0x4f, 0xfc,
+ 0x86, 0x1f, 0x7e, 0x6f, 0x1d, 0x34, 0x5c, 0x8e, 0xfd, 0x02, 0xff, 0x3d,
+ 0xd0, 0x1d, 0x5e, 0xd7, 0x5c, 0xa9, 0xd5, 0x30, 0xab, 0xd5, 0x36, 0x58,
+ 0xfb, 0x3a, 0x6b, 0xb6, 0xe7, 0x5a, 0xbc, 0x83, 0x5e, 0x40, 0x03, 0x46,
+ 0xb3, 0x11, 0x44, 0x5b, 0x02, 0x1b, 0x1f, 0x2a, 0x22, 0x16, 0xa3, 0x3f,
+ 0x30, 0x20, 0x07, 0x3e, 0x6e, 0x0c, 0x74, 0x01, 0x88, 0x79, 0xd7, 0xc3,
+ 0x7a, 0xa9, 0xb1, 0x43, 0x04, 0x0b, 0x83, 0x6d, 0xcf, 0xbb, 0x58, 0x27,
+ 0x4c, 0x73, 0xb1, 0xe6, 0x86, 0x1b, 0x45, 0x9c, 0x39, 0x3d, 0x2b, 0x27,
+ 0xc9, 0x4b, 0x7c, 0xca, 0x47, 0x51, 0x99, 0x58, 0xdf, 0x51, 0x0c, 0x1a,
+ 0x5c, 0x54, 0x1f, 0x2f, 0x17, 0xd0, 0xbb, 0xe2, 0x07, 0xc9, 0xc6, 0xf0,
+ 0x7d, 0x72, 0xb0, 0x11, 0x6c, 0xd1, 0x49, 0x21, 0x2d, 0x0f, 0xc8, 0xcb,
+ 0x53, 0x51, 0x0d, 0x2f, 0xf5, 0x50, 0xf1, 0xa5, 0xf1, 0x15, 0xb0, 0x56,
+ 0x9c, 0x0a, 0x6d, 0xe1, 0xc2, 0x2f, 0x83, 0xc0, 0x13, 0xcd, 0x53, 0x4a,
+ 0xb0, 0xb4, 0xc7, 0x07, 0xd8, 0x27, 0x5c, 0x15, 0x0e, 0xfd, 0x97, 0x74,
+ 0x06, 0xc6, 0x2f, 0x97, 0x60, 0x3e, 0x22, 0x78, 0xd3, 0xd0, 0xe5, 0x60,
+ 0x9b, 0xe3, 0xd2, 0x88, 0xcb, 0xb2, 0xae, 0xf3, 0x09, 0x40, 0x3e, 0xb3,
+ 0x86, 0xf4, 0x9a, 0x3a, 0xe3, 0x3c, 0x1c, 0xee, 0x31, 0x88, 0xbd, 0xf4,
+ 0x00, 0xe1, 0xea, 0x10, 0x15, 0x88, 0x57, 0xca, 0x0d, 0xa9, 0x9c, 0x4b,
+ 0xc5, 0xcc, 0x8e, 0x59, 0xdb, 0x75, 0x8e, 0xe1, 0x99, 0xe0, 0xd2, 0x64,
+ 0x52, 0xe5, 0xd9, 0x45, 0xb2, 0x28, 0x79, 0xeb, 0x49, 0xd9, 0x08, 0x92,
+ 0x3c, 0x00, 0x2a, 0x80, 0x36, 0xb9, 0xc8, 0xd1, 0xac, 0x81, 0xb9, 0x46,
+ 0x89, 0xbb, 0x94, 0x35, 0xe7, 0xb2, 0x82, 0xab, 0x0c, 0xd1, 0xf2, 0xeb,
+ 0x4c, 0x8e, 0x35, 0x55, 0x44, 0xe5, 0x9e, 0x6c, 0xc6, 0xca, 0x42, 0xd3,
+ 0x52, 0x9e, 0x3c, 0xa1, 0x99, 0x58, 0x68, 0x05, 0x7c, 0x31, 0xd1, 0x2e,
+ 0xd3, 0x69, 0xab, 0xea, 0x78, 0xf4, 0xc9, 0x78, 0xbc, 0xe7, 0x79, 0xfd,
+ 0x05, 0x19, 0xe4, 0xed, 0x4e, 0x37, 0xfd, 0xf9, 0xd4, 0xed, 0xa4, 0x5a,
+ 0xd1, 0xfb, 0xef, 0xcb, 0xa4, 0xbe, 0x00, 0x26, 0xf4, 0xbb, 0xae, 0x64,
+ 0x8f, 0xa4, 0x24, 0x23, 0xf5, 0x8a, 0x33, 0x9d, 0xec, 0xea, 0x1a, 0x2a,
+ 0x8c, 0x26, 0x7c, 0x09, 0x3f, 0x18, 0xfa, 0x3e, 0xe8, 0xad, 0xeb, 0x12,
+ 0xad, 0xfb, 0x53, 0xab, 0xbd, 0xcc, 0x6a, 0x2a, 0x25, 0x60, 0xbf, 0x70,
+ 0x8a, 0x19, 0x84, 0x9d, 0x04, 0x81, 0xa1, 0xcb, 0x59, 0xd5, 0x9a, 0x54,
+ 0xed, 0xe7, 0x54, 0x1b, 0x3d, 0xc7, 0x8b, 0x4f, 0x3b, 0xd0, 0x3b, 0x38,
+ 0x15, 0xe3, 0x91, 0x51, 0xba, 0xa1, 0x04, 0x7f, 0xfe, 0x2c, 0x68, 0x62,
+ 0xc6, 0xbc, 0x5c, 0x19, 0xa7, 0x0e, 0x66, 0x68, 0x3c, 0xb5, 0x7a, 0x83,
+ 0xfb, 0x16, 0xef, 0xa8, 0xfb, 0x54, 0x5f, 0xec, 0x89, 0xa1, 0x42, 0x22,
+ 0x45, 0x86, 0xef, 0xc6, 0xe3, 0x30, 0xb9, 0xba, 0x30, 0x0a, 0x79, 0x79,
+ 0x59, 0xe4, 0x7f, 0x93, 0xe6, 0x32, 0xdd, 0xb4, 0xc8, 0x56, 0x72, 0xbb,
+ 0xa4, 0x47, 0x26, 0x04, 0xbc, 0x4a, 0xc9, 0x01, 0x21, 0x7f, 0x13, 0x10,
+ 0x2b, 0x88, 0x1d, 0xca, 0x52, 0x22, 0xf4, 0x1d, 0xd9, 0x4a, 0x6e, 0x1a,
+ 0xcf, 0x3d, 0x44, 0x5a, 0x81, 0x7e, 0x45, 0xfb, 0xf8, 0x2c, 0x54, 0x9e,
+ 0xb0, 0x07, 0x02, 0x9b, 0xf1, 0xdf, 0x20, 0x19, 0xbd, 0xed, 0x30, 0xf4,
+ 0xb0, 0x63, 0xb2, 0x5b, 0xe6, 0xa0, 0x71, 0x70, 0x2e, 0xc1, 0x55, 0xcc,
+ 0x62, 0xe2, 0xc5, 0xba, 0xdf, 0xa9, 0x7b, 0xc0, 0x43, 0xf0, 0xb9, 0x6a,
+ 0x61, 0xad, 0x81, 0x78, 0x89, 0x80, 0x73, 0xd9, 0xd1, 0x1f, 0x80, 0xca,
+ 0x05, 0xd7, 0xb5, 0x82, 0x2a, 0xcb, 0x94, 0xa9, 0xd1, 0x00, 0x37, 0xb0,
+ 0xcc, 0x18, 0x4a, 0xcb, 0xd6, 0x90, 0x88, 0x5e, 0x8e, 0x0b, 0x1b, 0xed,
+ 0x81, 0xb7, 0x44, 0xab, 0x0a, 0x58, 0x9c, 0x13, 0x2d, 0x2a, 0x6c, 0x78,
+ 0x6f, 0xf1, 0x36, 0x3a, 0x2b, 0x51, 0x39, 0x8e, 0x85, 0xf4, 0x81, 0xf9,
+ 0x4a, 0xd5, 0x85, 0x4a, 0x13, 0x5d, 0xd2, 0x72, 0x00, 0xd7, 0x76, 0x8a,
+ 0x9c, 0x16, 0x21, 0x7e, 0x6d, 0xdb, 0xb6, 0xa9, 0x2d, 0xc3, 0x18, 0x3c,
+ 0x31, 0x20, 0x2d, 0x81, 0xd4, 0x20, 0x35, 0x60, 0x65, 0xec, 0x10, 0x40,
+ 0x5f, 0x72, 0x41, 0x8a, 0x3d, 0x93, 0x01, 0xb8, 0x0f, 0xb3, 0x5c, 0xf1,
+ 0x4e, 0x0d, 0x97, 0xca, 0x65, 0xbb, 0x8b, 0xbd, 0x93, 0x41, 0x7a, 0xda,
+ 0x9d, 0xff, 0xcf, 0xa8, 0x61, 0xf0, 0x24, 0x05, 0xc4, 0x4e, 0x28, 0x27,
+ 0x28, 0x34, 0x06, 0x3f, 0x04, 0xe7, 0xfe, 0xdc, 0xa4, 0xb6, 0xf3, 0x02,
+ 0xbd, 0xd5, 0x4d, 0x46, 0x8d, 0xdd, 0xa4, 0x81, 0xd7, 0x69, 0xa8, 0xc5,
+ 0x41, 0x94, 0x3f, 0x72, 0xf2, 0x34, 0x7a, 0x3e, 0xf5, 0x20, 0x94, 0x64,
+ 0xa8, 0x46, 0x9e, 0x65, 0x82, 0x2e, 0xf4, 0x07, 0xd7, 0xf8, 0xe0, 0x53,
+ 0x1b, 0x60, 0x7b, 0x86, 0x37, 0xbf, 0xf0, 0xe4, 0xf1, 0x1f, 0x1f, 0x52,
+ 0xd2, 0x45, 0x57, 0x2d, 0xc1, 0xab, 0x6d, 0x04, 0xbf, 0x08, 0xd3, 0x8b,
+ 0x5f, 0x18, 0xea, 0xb2, 0x48, 0x61, 0x3d, 0x65, 0x6f, 0xc8, 0x06, 0xc3,
+ 0xcb, 0x3d, 0x0c, 0x4e, 0x30, 0x22, 0x15, 0x1a, 0xde, 0xf0, 0xf3, 0x49,
+ 0xd6, 0xdc, 0x64, 0x99, 0x58, 0xb9, 0xba, 0x8d, 0x1e, 0x0f, 0xb0, 0xfc,
+ 0xb0, 0x37, 0xc7, 0x63, 0x20, 0x98, 0xbc, 0xe0, 0x28, 0x8c, 0x41, 0x6a,
+ 0x9d, 0x01, 0x1a, 0xc8, 0x0c, 0xae, 0x5f, 0xac, 0x93, 0x89, 0x0b, 0xcb,
+ 0xf2, 0xf7, 0xb1, 0x2f, 0x5e, 0xfe, 0x69, 0xab, 0xd6, 0x44, 0x53, 0x75,
+ 0xe4, 0x41, 0xdf, 0xaf, 0x6d, 0xaf, 0xb1, 0x5c, 0xdb, 0x98, 0xc7, 0xaf,
+ 0xcd, 0xe6, 0xf4, 0xf0, 0x3d, 0x3d, 0x6b, 0xd0, 0x69, 0xb1, 0xe3, 0xe2,
+ 0x9d, 0xd1, 0x70, 0x68, 0x1f, 0x97, 0x61, 0xf7, 0x85, 0xfc, 0x36, 0x5d,
+ 0x9a, 0x9f, 0x21, 0x0e, 0x46, 0x70, 0x98, 0xb3, 0x2c, 0x16, 0x8b, 0xef,
+ 0x6c, 0x7e, 0x27, 0x10, 0x4c, 0xe7, 0x13, 0x42, 0xe4, 0x5a, 0xe3, 0x2c,
+ 0xd6, 0xdd, 0xa1, 0x16, 0xd0, 0x19, 0xf5, 0xc8, 0x68, 0x60, 0x58, 0x02,
+ 0x0c, 0x3e, 0xa5, 0x09, 0xb0, 0x5a, 0xc1, 0xe7, 0xd7, 0x84, 0xc8, 0xbb,
+ 0xad, 0x35, 0x86, 0x8d, 0x9f, 0xcf, 0x19, 0x89, 0x8d, 0x4a, 0x79, 0xba,
+ 0xf3, 0x97, 0xbc, 0x35, 0x6d, 0xf8, 0xc5, 0x89, 0x5f, 0xf8, 0x1e, 0x76,
+ 0x99, 0x7a, 0x0a, 0x04, 0x6e, 0x22, 0xc1, 0xad, 0xd1, 0x57, 0x04, 0xbd,
+ 0x55, 0x3e, 0x60, 0x3b, 0x23, 0xf6, 0x45, 0xe3, 0x62, 0x79, 0x0b, 0xad,
+ 0x5b, 0x2b, 0xfe, 0xf6, 0x48, 0x3c, 0x6a, 0x6b, 0x8c, 0x36, 0x18, 0xe3,
+ 0x57, 0xa7, 0xdb, 0xc9, 0x69, 0x07, 0x94, 0x84, 0xca, 0x59, 0x20, 0x4c,
+ 0x7d, 0x46, 0x2c, 0xad, 0xa8, 0x18, 0x9c, 0xaf, 0x1f, 0xc0, 0x42, 0x21,
+ 0x51, 0x2d, 0x0c, 0x25, 0x85, 0x3b, 0x7f, 0x73, 0xc6, 0xd4, 0x59, 0xcb,
+ 0x4b, 0x02, 0xa3, 0x61, 0x7c, 0x0a, 0x31, 0x29, 0xfd, 0x5b, 0x6a, 0x4c,
+ 0xe8, 0x12, 0x45, 0x5a, 0xdc, 0xfb, 0x45, 0x1c, 0xd1, 0x0a, 0xc5, 0x31,
+ 0x0f, 0xd2, 0xfb, 0x38, 0xaa, 0xa0, 0xa9, 0xd6, 0x1e, 0x12, 0x8f, 0x74,
+ 0x61, 0xab, 0x59, 0x2e, 0x75, 0x9a, 0x77, 0x61, 0x15, 0x97, 0x59, 0x11,
+ 0x36, 0x5d, 0xa0, 0x8f, 0x42, 0x90, 0x0b, 0x51, 0xcf, 0x46, 0x5d, 0xe0,
+ 0x5f, 0xcf, 0x51, 0x2e, 0x93, 0xf3, 0x1b, 0x9b, 0xf5, 0x80, 0x03, 0x92,
+ 0xc9, 0x3f, 0xa1, 0xe2, 0xb1, 0x8f, 0xe0, 0x89, 0x97, 0x08, 0x4e, 0x34,
+ 0x24, 0xe3, 0x96, 0x77, 0xd8, 0x0e, 0xf3, 0x60, 0x5d, 0x5f, 0xed, 0x1b,
+ 0xce, 0xb1, 0x3f, 0xfa, 0x9c, 0x4c, 0x14, 0x23, 0xac, 0x23, 0x48, 0xa2,
+ 0x9c, 0x32, 0x21, 0xcd, 0x1a, 0x3b, 0xa3, 0x89, 0x16, 0x3e, 0x72, 0x8a,
+ 0xff, 0xf0, 0x7f, 0x83, 0xd2, 0xfe, 0xba, 0x0a, 0x63, 0x56, 0x5b, 0x44,
+ 0x50, 0x6f, 0xb8, 0xf7, 0x2e, 0xfa, 0x40, 0xc0, 0x78, 0x9f, 0xe4, 0x0d,
+ 0x01, 0x7a, 0xab, 0x0d, 0xd9, 0xbe, 0x98, 0x78, 0x83, 0x5b, 0xb3, 0xbd,
+ 0x09, 0x92, 0x5a, 0x38, 0x0a, 0x61, 0x54, 0xf0, 0xff, 0x8d, 0x6f, 0xe9,
+ 0x00, 0x5c, 0xd5, 0x42, 0x19, 0x00, 0x5f, 0x1f, 0xbe, 0x39, 0x39, 0x3b,
+ 0x6c, 0x57, 0xba, 0x35, 0xd4, 0x7b, 0x88, 0x02, 0xdc, 0xdd, 0xd9, 0x11,
+ 0x20, 0x17, 0xd7, 0x5d, 0xe3, 0x95, 0xbc, 0xc8, 0x61, 0xf4, 0x27, 0xa7,
+ 0x3f, 0xbc, 0xb6, 0x93, 0xcb, 0x89, 0x69, 0xd2, 0xa4, 0x5c, 0x3b, 0x79,
+ 0xd9, 0xe7, 0xae, 0x68, 0x87, 0x12, 0xb0, 0x3d, 0x02, 0x3b, 0xe0, 0xe0,
+ 0xbd, 0x4e, 0x8f, 0xd2, 0x0a, 0x38, 0x19, 0x44, 0x8b, 0xbc, 0x09, 0xfe,
+ 0xb9, 0xae, 0x51, 0xb4, 0x6d, 0x87, 0x0d, 0xf4, 0x5e, 0x12, 0xfd, 0x04,
+ 0x7d, 0x24, 0xb6, 0x28, 0x40, 0xaf, 0x80, 0x83, 0x35, 0x4a, 0xec, 0x47,
+ 0xdc, 0x57, 0xb8, 0x08, 0x8f, 0xdc, 0x20, 0xf4, 0x95, 0x18, 0xc3, 0x46,
+ 0xdb, 0x67, 0x76, 0xfe, 0xb3, 0xbc, 0x83, 0xc3, 0x85, 0xfa, 0xd4, 0x6a,
+ 0xdb, 0x9d, 0x01, 0x83, 0x94, 0x49, 0x88, 0xc3, 0xdf, 0xc7, 0x48, 0x54,
+ 0xd8, 0x7c, 0x76, 0xab, 0xde, 0x1e, 0x78, 0x33, 0xb5, 0xdb, 0x26, 0x13,
+ 0xde, 0xfc, 0xc3, 0x66, 0x22, 0x45, 0x10, 0xc4, 0xf0, 0x38, 0xdf, 0xa7,
+ 0xa7, 0xdd, 0x9e, 0xeb, 0xbe, 0xb4, 0x7d, 0x5f, 0xce, 0x92, 0x2e, 0xba,
+ 0xa7, 0x49, 0x9c, 0x0b, 0x58, 0x49, 0x22, 0x0b, 0xf5, 0x41, 0x5c, 0x31,
+ 0xdc, 0x22, 0xb1, 0x0e, 0x11, 0xa7, 0x3a, 0xce, 0x40, 0x20, 0x88, 0x43,
+ 0xe7, 0x5e, 0xe5, 0xb7, 0xc8, 0x51, 0x86, 0x43, 0x41, 0x22, 0x05, 0xdb,
+ 0x27, 0xf7, 0x3b, 0x37, 0xba, 0xb9, 0x2b, 0x1a, 0x5c, 0x54, 0xe6, 0x29,
+ 0xd3, 0xb2, 0x8a, 0xc1, 0x30, 0x70, 0xaf, 0x21, 0x8f, 0x76, 0x6b, 0x42,
+ 0x29, 0x78, 0xfe, 0xe4, 0x39, 0x84, 0x3b, 0xe5, 0xe5, 0x18, 0xea, 0xc2,
+ 0x33, 0x02, 0x4e, 0x4b, 0x31, 0x43, 0x9e, 0x73, 0x14, 0xd9, 0x44, 0xc6,
+ 0x91, 0x2e, 0xb2, 0x93, 0x6c, 0xce, 0x5d, 0x90, 0xc6, 0xde, 0x10, 0x6b,
+ 0x4b, 0xf8, 0xfa, 0x93, 0xde, 0x47, 0xac, 0x34, 0x98, 0x23, 0x48, 0x3f,
+ 0xba, 0x5a, 0xfb, 0xa4, 0xef, 0x5e, 0x0e, 0x9c, 0xba, 0x2a, 0x68, 0x18,
+ 0x4c, 0x0b, 0x16, 0xcd, 0xdf, 0xf0, 0xed, 0xac, 0xca, 0xeb, 0x8f, 0xc9,
+ 0xd6, 0xbf, 0x6f, 0xdb, 0x0e, 0xd4, 0x91, 0xf4, 0x62, 0x78, 0x80, 0xf3,
+ 0x62, 0x95, 0xb5, 0xfa, 0x92, 0xeb, 0x68, 0x17, 0x14, 0x9e, 0x00, 0x0a,
+ 0x6a, 0xac, 0x4a, 0x0c, 0xdd, 0x61, 0x97, 0x41, 0x4b, 0x13, 0xa9, 0xf0,
+ 0x17, 0x22, 0x08, 0x45, 0x26, 0x9d, 0x08, 0x01, 0xfe, 0x8a, 0x43, 0x56,
+ 0xd5, 0xaf, 0x51, 0xf2, 0xbe, 0xa0, 0xec, 0x34, 0x21, 0x4c, 0x11, 0x24,
+ 0x79, 0x61, 0x16, 0x62, 0xd6, 0x6a, 0x44, 0x49, 0x84, 0x4b, 0xfd, 0xb5,
+ 0xcd, 0x9c, 0x84, 0x8b, 0x76, 0xa2, 0x86, 0x74, 0xad, 0xb5, 0xeb, 0x8f,
+ 0xe5, 0x6b, 0xc9, 0x9b, 0xb0, 0xff, 0x17, 0xf7, 0x2f, 0xc2, 0x5d, 0x30,
+ 0xa7, 0x44, 0x63, 0x23, 0x2e, 0x9c, 0xcd, 0xe7, 0x43, 0x06, 0x88, 0x06,
+ 0x5c, 0x2e, 0xb4, 0x7f, 0x2e, 0xc0, 0xa5, 0xac, 0x2e, 0x35, 0x8d, 0x60,
+ 0x19, 0x05, 0xa2, 0x87, 0xea, 0x88, 0x09, 0x8d, 0x51, 0x91, 0x2c, 0xa4,
+ 0x3e, 0x49, 0xa3, 0x4d, 0xa8, 0x37, 0x73, 0xfe, 0x12, 0xda, 0x1c, 0x5e,
+ 0x52, 0x5f, 0xc7, 0x9e, 0x10, 0x72, 0x71, 0x7a, 0x75, 0x59, 0x2d, 0xb9,
+ 0x6b, 0x58, 0xac, 0xa5, 0x99, 0x6f, 0x5a, 0xf1, 0xa3, 0x7a, 0xba, 0x75,
+ 0xd6, 0xf0, 0x64, 0xf8, 0xdd, 0xa3, 0xd7, 0xad, 0x0e, 0xc4, 0xd8, 0x0a,
+ 0x18, 0x87, 0xf1, 0xe1, 0x5c, 0xff, 0x63, 0x5c, 0x58, 0x27, 0x58, 0xec,
+ 0x50, 0xce, 0x02, 0x99, 0x28, 0xae, 0x2f, 0xfd, 0x2e, 0x3e, 0x9c, 0x8c,
+ 0xc2, 0xaa, 0x2c, 0x8f, 0xa1, 0x03, 0x13, 0xa9, 0x68, 0x7f, 0x6c, 0x10,
+ 0xc3, 0x65, 0x56, 0xd9, 0xcf, 0x84, 0x99, 0x83, 0x57, 0x8b, 0x72, 0x86,
+ 0x42, 0xa7, 0xec, 0xfe, 0xbd, 0xc0, 0x93, 0xee, 0xe2, 0x48, 0x8d, 0x58,
+ 0x6d, 0xe1, 0x22, 0xcd, 0xe2, 0x68, 0x9c, 0x09, 0xe2, 0xea, 0xbc, 0x33,
+ 0xf1, 0xe1, 0xdc, 0x52, 0xb5, 0x8b, 0x9f, 0xbc, 0xe9, 0x2f, 0xa1, 0x48,
+ 0xca, 0x69, 0xe3, 0xad, 0x00, 0x0f, 0xc4, 0x87, 0x63, 0xce, 0x1b, 0x59,
+ 0x19, 0xaa, 0x86, 0xc8, 0xe4, 0x5c, 0xbf, 0x32, 0x7e, 0x30, 0x38, 0x64,
+ 0xf3, 0x43, 0x87, 0xab, 0xd9, 0x3a, 0xe1, 0xfe, 0x95, 0xc5, 0x4e, 0x98,
+ 0x66, 0xd0, 0x3d, 0x60, 0x6e, 0x24, 0x44, 0x78, 0xbf, 0x78, 0x7c, 0x18,
+ 0x1f, 0xce, 0x9e, 0xb0, 0x00, 0xf9, 0xae, 0x39, 0x60, 0xf9, 0x4a, 0xb0,
+ 0x0b, 0x73, 0xc3, 0x22, 0x8d, 0x0a, 0x3c, 0xcd, 0x3e, 0x70, 0x3b, 0xcd,
+ 0xb4, 0xba, 0xcc, 0x9a, 0x0f, 0xeb, 0x37, 0x64, 0x2e, 0x85, 0xfa, 0x77,
+ 0x0b, 0x6a, 0xc3, 0x6b, 0x99, 0x85, 0x60, 0x67, 0xa6, 0x52, 0xb8, 0x6e,
+ 0x34, 0x40, 0xfa, 0x3d, 0x1b, 0x3c, 0x3d, 0x64, 0xef, 0xbe, 0x97, 0x28,
+ 0x4a, 0x8b, 0x91, 0xa7, 0x79, 0xa1, 0xf8, 0x28, 0xc2, 0x63, 0xbc, 0x29,
+ 0x26, 0x31, 0x50, 0x9f, 0x75, 0xf1, 0xac, 0xc5, 0x47, 0xd4, 0x1d, 0x59,
+ 0x2d, 0xe1, 0x43, 0xa4, 0xf1, 0x81, 0x4f, 0xc7, 0xfc, 0xb8, 0x1e, 0x37,
+ 0xaf, 0x49, 0x0a, 0xeb, 0x6c, 0xb7, 0x46, 0xff, 0xa4, 0x93, 0x10, 0xb1,
+ 0xc8, 0x93, 0x98, 0xfa, 0x41, 0x7b, 0x23, 0xbb, 0xb3, 0x5b, 0xde, 0xcc,
+ 0x2c, 0x46, 0x8a, 0xf9, 0xab, 0x7e, 0x57, 0x65, 0x3f, 0x01, 0xe3, 0x6b,
+ 0x3b, 0x54, 0x64, 0xf5, 0xf0, 0x60, 0x17, 0x8a, 0xee, 0xdb, 0xfb, 0xe9,
+ 0xa2, 0x09, 0x15, 0xa4, 0xe0, 0xe3, 0x55, 0xc6, 0xc9, 0xa0, 0xb4, 0xbd,
+ 0x72, 0x18, 0xfd, 0x5b, 0x23, 0x4f, 0xbb, 0x29, 0x32, 0x77, 0xf7, 0x5b,
+ 0xb7, 0x87, 0x5b, 0xd4, 0xcf, 0xee, 0xe4, 0xab, 0x9d, 0xeb, 0x30, 0xcb,
+ 0xe0, 0xb5, 0x15, 0x42, 0x40, 0x16, 0x13, 0x0f, 0xa4, 0x5c, 0x6f, 0x1d,
+ 0x19, 0xf5, 0xee, 0x71, 0xb5, 0xb8, 0xe7, 0x8a, 0x9b, 0x07, 0xdc, 0xaa,
+ 0x18, 0xe2, 0xc1, 0xae, 0x2a, 0xb8, 0x97, 0x72, 0x89, 0x7b, 0x76, 0xbe,
+ 0x6f, 0x06, 0x2d, 0x1a, 0x5c, 0x37, 0x13, 0x9f, 0xfa, 0xfc, 0xc9, 0xb8,
+ 0xad, 0x35, 0xba, 0x5e, 0x83, 0x3f, 0xec, 0xcc, 0xe2, 0xc3, 0x59, 0xf2,
+ 0xd4, 0xf7, 0x64, 0x7b, 0x06, 0x9e, 0x73, 0x93, 0xbb, 0x24, 0x18, 0xbb,
+ 0x32, 0xa4, 0x0d, 0xbd, 0xde, 0xbf, 0x88, 0x3d, 0xc0, 0x80, 0x9f, 0x17,
+ 0xbe, 0xc9, 0x8e, 0x2f, 0x1a, 0xc9, 0xbb, 0xa6, 0xbe, 0xc3, 0x0b, 0x69,
+ 0xdb, 0x03, 0xe7, 0x56, 0x9b, 0x14, 0x98, 0xa5, 0x2c, 0x35, 0xca, 0xde,
+ 0xa4, 0x26, 0x3b, 0xa2, 0xc5, 0x12, 0x12, 0xd9, 0x0c, 0xed, 0x0b, 0xc2,
+ 0x64, 0x72, 0xfe, 0x24, 0xa7, 0x32, 0xd1, 0xa6, 0x52, 0x68, 0x51, 0x94,
+ 0x10, 0x6d, 0xe4, 0x59, 0x67, 0x62, 0x46, 0xe8, 0xe3, 0x09, 0x77, 0x44,
+ 0x08, 0x1b, 0x98, 0x76, 0xb2, 0xca, 0xa0, 0x7e, 0x74, 0xa0, 0x84, 0xb3,
+ 0xcb, 0x99, 0xdf, 0x0d, 0xd8, 0x5b, 0x7e, 0x35, 0xe0, 0x2d, 0xb8, 0x34,
+ 0x8b, 0xa7, 0x3f, 0xa2, 0x95, 0x13, 0x89, 0x5a, 0x9a, 0x54, 0xba, 0xbf,
+ 0x9d, 0x9c, 0x49, 0xec, 0x13, 0x3a, 0xdd, 0x9d, 0xb9, 0xf7, 0x3c, 0xc0,
+ 0x56, 0x3e, 0x32, 0xc2, 0x90, 0x33, 0xe5, 0xa1, 0x20, 0x01, 0x6d, 0x3c,
+ 0x16, 0x49, 0xde, 0x96, 0x88, 0x29, 0xbb, 0xcb, 0x76, 0xf6, 0x46, 0x7b,
+ 0x03, 0xee, 0x0a, 0x5b, 0x89, 0xb2, 0xa8, 0xf9, 0x70, 0x30, 0x54, 0x53,
+ 0x0b, 0x73, 0x8c, 0x4f, 0x77, 0x1d, 0x11, 0x67, 0xf8, 0x70, 0x1d, 0xba,
+ 0x8d, 0xc9, 0xf7, 0xec, 0x2c, 0x9a, 0x9b, 0xf4, 0x2e, 0x54, 0xd3, 0x77,
+ 0x87, 0x8f, 0x9f, 0x3f, 0x6f, 0xc9, 0xf3, 0xda, 0xc3, 0x88, 0x7e, 0xb2,
+ 0xbb, 0x4b, 0x6b, 0x0b, 0x0a, 0x85, 0xcd, 0x2f, 0x86, 0xcf, 0xe9, 0xc5,
+ 0xf6, 0x6b, 0x75, 0x66, 0x8e, 0x60, 0xd6, 0xff, 0xde, 0x10, 0xbf, 0x89,
+ 0x7c, 0x8e, 0x1c, 0x2e, 0xbd, 0x6f, 0x3d, 0xc7, 0xe7, 0x22, 0x6f, 0xd1,
+ 0xc3, 0xbc, 0x8f, 0xe5, 0xc5, 0x05, 0x5c, 0x5d, 0x78, 0x52, 0x21, 0x5f,
+ 0x6e, 0xd2, 0x6a, 0x16, 0x2e, 0x77, 0x77, 0x30, 0xdc, 0xeb, 0x5b, 0x2e,
+ 0x85, 0x9b, 0x29, 0x2b, 0x0c, 0xe7, 0x09, 0x4b, 0xd2, 0x98, 0x11, 0x5c,
+ 0x35, 0xd3, 0x1d, 0x68, 0xcf, 0xcc, 0x68, 0xef, 0xf9, 0xf3, 0x01, 0x66,
+ 0xf6, 0xe4, 0xf9, 0xf3, 0xde, 0x2a, 0x69, 0xef, 0x33, 0x37, 0xa5, 0xf3,
+ 0x4f, 0xe1, 0x75, 0x47, 0x34, 0x35, 0xac, 0x95, 0xf8, 0x77, 0xf0, 0x9b,
+ 0xe4, 0xcb, 0xe4, 0xdd, 0xc9, 0xf9, 0xa1, 0xe7, 0xba, 0xa1, 0xfb, 0xc5,
+ 0x31, 0x45, 0x0f, 0x82, 0x96, 0x82, 0xb4, 0x4b, 0xea, 0x53, 0x44, 0xa6,
+ 0xb1, 0x31, 0xb5, 0x42, 0x6b, 0x93, 0x2a, 0x38, 0xd4, 0x69, 0xf8, 0x6f,
+ 0x61, 0xca, 0x04, 0xb9, 0xb0, 0x2f, 0xf3, 0xc6, 0x47, 0x04, 0xda, 0x32,
+ 0x87, 0xbd, 0x4d, 0x2e, 0x10, 0xce, 0xfc, 0x92, 0x68, 0xcb, 0x66, 0x8d,
+ 0x92, 0x07, 0xce, 0x0e, 0xc5, 0x3f, 0xca, 0xe5, 0x66, 0x50, 0x75, 0x90,
+ 0xcd, 0xe1, 0x37, 0x10, 0x49, 0xc8, 0x2f, 0x0c, 0xe9, 0x49, 0xb9, 0x2e,
+ 0x64, 0xd0, 0x72, 0x0f, 0xe4, 0x94, 0x00, 0x13, 0xfd, 0x8f, 0x47, 0x02,
+ 0x2e, 0xe4, 0xef, 0xa2, 0x4c, 0x0d, 0x2d, 0x57, 0xc2, 0x30, 0x3e, 0x12,
+ 0xef, 0x66, 0xed, 0x7c, 0xa2, 0xd6, 0x7d, 0x57, 0xe0, 0x1c, 0x02, 0xa8,
+ 0x3b, 0xf6, 0xf2, 0xcf, 0xb2, 0xa5, 0xe6, 0x59, 0x16, 0xed, 0x71, 0x0c,
+ 0x2d, 0x5f, 0xe4, 0x97, 0xab, 0x2a, 0x9e, 0x93, 0x48, 0xfd, 0xb0, 0x24,
+ 0x15, 0x42, 0x11, 0xd1, 0xd3, 0x9b, 0xb4, 0xca, 0xb4, 0x81, 0x57, 0x71,
+ 0x67, 0xef, 0xb6, 0x9a, 0xc9, 0x5a, 0x24, 0x03, 0xb8, 0xfa, 0xc0, 0xd4,
+ 0x46, 0x5d, 0x93, 0xd1, 0x63, 0xe0, 0x44, 0x90, 0x14, 0x1e, 0x81, 0x65,
+ 0x4f, 0x1b, 0x57, 0xa6, 0x24, 0x1e, 0x46, 0x1c, 0xf6, 0x25, 0xf5, 0x8b,
+ 0x4d, 0x64, 0x0b, 0xc2, 0x4c, 0xc0, 0xcd, 0xb9, 0x73, 0xee, 0xe3, 0x59,
+ 0x72, 0xc7, 0x5c, 0x95, 0x5e, 0x0b, 0x84, 0x10, 0xc9, 0x00, 0x9c, 0x87,
+ 0xce, 0x93, 0x99, 0x10, 0x1f, 0x92, 0x79, 0xfe, 0xa6, 0x98, 0x97, 0xe9,
+ 0xac, 0x96, 0xe6, 0xec, 0x12, 0x71, 0xa7, 0xcd, 0x62, 0x34, 0x2b, 0x39,
+ 0xda, 0x20, 0xed, 0x03, 0x27, 0xcd, 0x67, 0x9c, 0x6c, 0x69, 0x23, 0x71,
+ 0xa5, 0x50, 0xcf, 0x4b, 0xc2, 0x5c, 0x0a, 0x94, 0xc2, 0xa8, 0x11, 0xe8,
+ 0xf7, 0x1c, 0x9a, 0xbd, 0xa0, 0x77, 0x3e, 0x2d, 0x8b, 0xe1, 0x4f, 0xfd,
+ 0x00, 0x21, 0x24, 0x31, 0x5d, 0x15, 0xc8, 0xe3, 0xa3, 0xff, 0xeb, 0xf0,
+ 0x53, 0x86, 0xa5, 0xaa, 0xf4, 0xc6, 0x56, 0xd3, 0xfd, 0xc0, 0x58, 0x88,
+ 0x12, 0x2e, 0xb2, 0xf0, 0x0d, 0xe9, 0x5c, 0x6c, 0x78, 0x34, 0x4e, 0x27,
+ 0xe9, 0x41, 0x81, 0x47, 0x69, 0xf7, 0x69, 0x08, 0x2b, 0xa4, 0x6d, 0x14,
+ 0xbd, 0x39, 0x50, 0x2c, 0x4e, 0xd0, 0xa6, 0x32, 0x28, 0x76, 0x12, 0xf2,
+ 0x39, 0x72, 0xcf, 0x76, 0x32, 0xed, 0xe1, 0x0d, 0x66, 0xa4, 0xa2, 0x48,
+ 0x27, 0x3f, 0x02, 0xdb, 0xc3, 0xa4, 0xcc, 0x5c, 0xef, 0xe9, 0xb7, 0xe6,
+ 0x97, 0x9f, 0x67, 0x0c, 0x4d, 0x8f, 0x08, 0x56, 0x95, 0xbc, 0x78, 0x7f,
+ 0x76, 0xdc, 0x53, 0x43, 0x38, 0xa6, 0x33, 0xc0, 0x66, 0x6d, 0x9c, 0x65,
+ 0x04, 0x94, 0x55, 0x25, 0xa7, 0xe9, 0x65, 0xb6, 0xe1, 0x63, 0x93, 0xb5,
+ 0xc0, 0x09, 0xc5, 0x01, 0x11, 0xf3, 0x12, 0xf9, 0x2d, 0x05, 0xc0, 0xc4,
+ 0x5d, 0xdc, 0xd8, 0xaf, 0xfc, 0xbb, 0x98, 0xa7, 0xb2, 0x77, 0xab, 0x0a,
+ 0x11, 0x7f, 0xda, 0xf9, 0x48, 0x9b, 0x1c, 0xc5, 0x05, 0xe8, 0xa0, 0x4a,
+ 0x4a, 0xfb, 0x1f, 0xaa, 0x55, 0x4a, 0x97, 0xa0, 0xa1, 0x64, 0xe3, 0x0b,
+ 0xb8, 0xe8, 0x37, 0x74, 0x9a, 0xc3, 0x2c, 0x8c, 0xc2, 0xe9, 0x56, 0x20,
+ 0x72, 0xec, 0xbb, 0x93, 0x3a, 0xce, 0x7d, 0x8e, 0xb2, 0x70, 0xbc, 0x28,
+ 0x03, 0xd4, 0x6b, 0x4d, 0xc1, 0xe6, 0xa0, 0x0d, 0x12, 0xea, 0x39, 0x90,
+ 0x42, 0xc1, 0x10, 0x9f, 0xc8, 0x72, 0x4f, 0x8e, 0x65, 0x7e, 0x07, 0x12,
+ 0x8d, 0x61, 0x5d, 0x48, 0xa7, 0xd6, 0xca, 0x1c, 0x8a, 0x2d, 0x36, 0x9d,
+ 0xa3, 0xd9, 0x87, 0x75, 0x63, 0x61, 0x8d, 0xb3, 0x12, 0x0d, 0x22, 0x30,
+ 0xa5, 0xb4, 0xb0, 0x0e, 0xe7, 0xd6, 0xc9, 0x7e, 0x72, 0x14, 0x3d, 0x17,
+ 0x21, 0x7a, 0x39, 0x90, 0x0e, 0x36, 0x43, 0x43, 0x1d, 0x85, 0x14, 0x87,
+ 0x7b, 0xc7, 0xea, 0xd1, 0xde, 0x7f, 0x7a, 0x6d, 0x11, 0xbc, 0xc6, 0x06,
+ 0x3d, 0x60, 0xac, 0xde, 0x74, 0x1b, 0xaa, 0xdd, 0xa0, 0x23, 0x0c, 0x5a,
+ 0x2b, 0xb8, 0x32, 0x52, 0x11, 0x96, 0x51, 0xbf, 0xe2, 0xd0, 0x8b, 0x1c,
+ 0xbf, 0xe2, 0x7a, 0xc6, 0xe1, 0xeb, 0xdc, 0x08, 0x91, 0x3a, 0x97, 0x4e,
+ 0xd9, 0x46, 0x6f, 0xe4, 0x96, 0x3e, 0x7a, 0x11, 0xb9, 0xae, 0x75, 0x18,
+ 0x02, 0xc7, 0x4d, 0xa5, 0xd8, 0xc1, 0xbe, 0x62, 0x63, 0x3a, 0x86, 0x22,
+ 0xfa, 0x52, 0x71, 0x14, 0x44, 0xde, 0x6a, 0x0b, 0xa9, 0x73, 0x56, 0x48,
+ 0x7b, 0x6b, 0x41, 0xdb, 0x17, 0xcc, 0x0b, 0xa4, 0x7e, 0x44, 0x76, 0xc7,
+ 0x82, 0xe5, 0x50, 0x5e, 0x4d, 0x9d, 0xd8, 0x9c, 0x71, 0xe9, 0x30, 0x13,
+ 0x18, 0x9b, 0xb6, 0xb7, 0x2f, 0x67, 0x83, 0x74, 0xe3, 0x84, 0x66, 0x52,
+ 0xb6, 0xc9, 0x07, 0x07, 0x57, 0x18, 0xe0, 0x8d, 0xeb, 0x35, 0xa7, 0x66,
+ 0xd8, 0x51, 0x67, 0x09, 0xda, 0xa0, 0x24, 0x2e, 0x70, 0xef, 0x5a, 0x0b,
+ 0x6b, 0xae, 0x34, 0x3a, 0x2e, 0xc7, 0x84, 0xe0, 0x41, 0x51, 0x0a, 0xec,
+ 0x49, 0x2c, 0xc6, 0x4e, 0x09, 0x3e, 0x78, 0xc4, 0x97, 0x83, 0x9c, 0xd2,
+ 0x91, 0xfc, 0x7e, 0xe8, 0x9a, 0x44, 0x6c, 0xdd, 0x65, 0x46, 0xc3, 0x76,
+ 0x59, 0x21, 0x64, 0x48, 0x45, 0x4a, 0x22, 0x13, 0xee, 0x7c, 0x58, 0xb7,
+ 0x8a, 0x35, 0xc8, 0x08, 0xf1, 0x42, 0x8f, 0xbc, 0xe9, 0x46, 0x0b, 0xa0,
+ 0x4c, 0xcc, 0x22, 0xbb, 0x05, 0xbc, 0x74, 0xff, 0x70, 0xa1, 0x92, 0xfd,
+ 0xc3, 0xcb, 0xb3, 0x77, 0x47, 0xef, 0xbe, 0x39, 0x00, 0xf8, 0x59, 0x56,
+ 0x4d, 0xd1, 0xa4, 0x37, 0xf9, 0xcb, 0x6a, 0x96, 0x4f, 0x99, 0x53, 0x48,
+ 0xff, 0xd3, 0x56, 0xb9, 0x48, 0x26, 0x0e, 0x56, 0xc3, 0x5c, 0x82, 0xea,
+ 0x10, 0x49, 0xf6, 0x45, 0xb1, 0x4b, 0x55, 0x5e, 0xae, 0xec, 0xd6, 0x4f,
+ 0x49, 0x15, 0xa1, 0x38, 0x01, 0xc5, 0x4f, 0xc1, 0x8f, 0x98, 0x68, 0xcd,
+ 0xe8, 0x50, 0x14, 0x5e, 0x1f, 0x1f, 0x27, 0x21, 0x4a, 0x2c, 0x67, 0x98,
+ 0x0a, 0x7d, 0x71, 0x05, 0x2c, 0x0d, 0x64, 0x53, 0x52, 0x11, 0xee, 0x33,
+ 0xc2, 0x1f, 0xdc, 0xa6, 0xc5, 0xf5, 0x8c, 0xe9, 0xfa, 0x43, 0x98, 0xea,
+ 0x49, 0x79, 0xc8, 0x94, 0x3d, 0x48, 0x27, 0x9c, 0x57, 0x33, 0xb2, 0x85,
+ 0x0c, 0x93, 0x2c, 0x2f, 0x1a, 0xa8, 0x47, 0x2d, 0x49, 0xda, 0xee, 0x79,
+ 0xb2, 0x2e, 0x86, 0x70, 0xc5, 0x56, 0x4e, 0x0b, 0x4d, 0x84, 0x43, 0x96,
+ 0x94, 0xd3, 0x6a, 0xe8, 0x91, 0xf5, 0x42, 0xea, 0x93, 0x13, 0x8d, 0x9e,
+ 0xcd, 0xb2, 0xd4, 0x36, 0xfe, 0xad, 0xc1, 0x2d, 0x43, 0x76, 0x71, 0x93,
+ 0x55, 0x62, 0x7c, 0xda, 0xd2, 0x5a, 0xc3, 0xec, 0x46, 0xc9, 0xb8, 0x34,
+ 0xcf, 0x87, 0x1a, 0x96, 0xed, 0x26, 0xd7, 0x6a, 0x4c, 0xcd, 0x39, 0xb6,
+ 0x36, 0xf1, 0x8a, 0x1a, 0xed, 0x50, 0x50, 0xae, 0xbd, 0xde, 0x48, 0x2f,
+ 0x5b, 0xd0, 0xff, 0x24, 0xb3, 0x0a, 0xc5, 0x9d, 0xc6, 0x7e, 0x40, 0x21,
+ 0x1b, 0x43, 0xc3, 0x4e, 0x37, 0xa8, 0x49, 0x18, 0x3a, 0xec, 0x7a, 0x23,
+ 0xdd, 0xd3, 0x27, 0xd2, 0xcf, 0x63, 0xef, 0x2e, 0x38, 0xda, 0x7e, 0xcb,
+ 0x6b, 0x6b, 0x93, 0x8a, 0xdd, 0xe9, 0x79, 0x4e, 0xa5, 0x0b, 0x92, 0x8d,
+ 0xa6, 0x72, 0xe9, 0x5a, 0x06, 0x0d, 0x33, 0x88, 0x90, 0x9f, 0x30, 0xc2,
+ 0x97, 0x3c, 0xe4, 0x17, 0x8f, 0xfb, 0x2f, 0x8b, 0xb8, 0x19, 0x38, 0xe7,
+ 0x42, 0x4e, 0x38, 0x37, 0x4d, 0x50, 0xbc, 0x76, 0x31, 0xda, 0x8e, 0x26,
+ 0x4f, 0xf1, 0x1c, 0x44, 0x22, 0xd5, 0xe9, 0xb5, 0xcb, 0x08, 0xeb, 0x65,
+ 0x7c, 0xda, 0x41, 0xac, 0x2b, 0xa3, 0xe9, 0x40, 0xad, 0x57, 0x49, 0x87,
+ 0x4a, 0x13, 0x9b, 0xd8, 0xd3, 0x24, 0x7e, 0x2c, 0xb3, 0x55, 0xa8, 0x1f,
+ 0x0e, 0x27, 0x65, 0x50, 0x12, 0xad, 0xea, 0x65, 0xc2, 0x12, 0xb9, 0xc9,
+ 0x8b, 0xeb, 0x92, 0x7e, 0x23, 0xd1, 0xa6, 0x48, 0x0e, 0x8b, 0x03, 0x65,
+ 0x8c, 0x6d, 0x84, 0xbf, 0xab, 0xea, 0xa0, 0xd1, 0x32, 0x03, 0xb3, 0x16,
+ 0xae, 0x97, 0xf3, 0xfb, 0x8b, 0xb8, 0x96, 0x22, 0x5d, 0x52, 0xe0, 0xcb,
+ 0x04, 0xe2, 0x1d, 0x24, 0xda, 0x2e, 0xd9, 0xbc, 0x38, 0xaf, 0x33, 0x69,
+ 0xe1, 0xca, 0x75, 0x72, 0x2a, 0x70, 0x44, 0xde, 0xe4, 0xd6, 0xf7, 0xd3,
+ 0x2f, 0x49, 0x6c, 0xef, 0x36, 0xbb, 0xd7, 0xce, 0x7e, 0x45, 0x80, 0x99,
+ 0x93, 0x35, 0x71, 0x83, 0xa7, 0x57, 0x65, 0x29, 0xc9, 0x5d, 0x7d, 0xcc,
+ 0x36, 0x21, 0x95, 0x86, 0x60, 0x22, 0x7a, 0xf4, 0x07, 0x8b, 0xa9, 0xe5,
+ 0x62, 0x90, 0x41, 0x06, 0xb0, 0x8f, 0xbf, 0xd7, 0x02, 0xbe, 0x6c, 0xcb,
+ 0x36, 0x9e, 0x8f, 0x15, 0xce, 0xc2, 0x5c, 0x43, 0x50, 0x40, 0xe2, 0x02,
+ 0x2c, 0xba, 0xe3, 0xdb, 0x23, 0xa9, 0x97, 0xfe, 0xa6, 0x44, 0x85, 0x1d,
+ 0x67, 0xa8, 0xb9, 0xbc, 0x45, 0xa2, 0x1a, 0x32, 0x9b, 0x8a, 0x76, 0x40,
+ 0x83, 0x66, 0x9a, 0x37, 0xc4, 0x40, 0x7e, 0xbf, 0xbf, 0xdb, 0xc7, 0xe4,
+ 0x31, 0x90, 0x16, 0x7e, 0xe2, 0x36, 0xd6, 0xd6, 0xfe, 0x22, 0x31, 0xe8,
+ 0xea, 0x06, 0x20, 0x43, 0x56, 0x4b, 0xf8, 0xe9, 0x86, 0xa0, 0x97, 0xb4,
+ 0xee, 0xdb, 0xff, 0xb8, 0x55, 0xfc, 0x6b, 0x1b, 0xbb, 0xf5, 0xf4, 0x75,
+ 0x73, 0xfc, 0xeb, 0xcc, 0x3b, 0x63, 0x0c, 0x14, 0xcb, 0x40, 0x53, 0x5e,
+ 0xa2, 0x7e, 0x12, 0x4f, 0x69, 0x77, 0x3a, 0x03, 0xd9, 0xf5, 0xd4, 0xc0,
+ 0x4b, 0xf1, 0x22, 0xf3, 0x90, 0x25, 0x1b, 0x9b, 0x76, 0xb1, 0x4c, 0x22,
+ 0x2c, 0x6b, 0xa0, 0x37, 0x40, 0xf3, 0x58, 0x6c, 0x12, 0x2d, 0x7f, 0x8d,
+ 0x34, 0xe5, 0x32, 0x84, 0x24, 0x11, 0x46, 0xca, 0xc6, 0x78, 0x2a, 0xe9,
+ 0x9c, 0xb4, 0x21, 0xf8, 0x52, 0x5b, 0x30, 0x52, 0x5a, 0xda, 0x30, 0xea,
+ 0xed, 0x8f, 0x36, 0x24, 0x10, 0x8c, 0x33, 0x1f, 0x65, 0x7d, 0x83, 0xdf,
+ 0xde, 0x48, 0xb6, 0xc0, 0x55, 0xb7, 0xad, 0xf2, 0x1a, 0x16, 0x05, 0x6b,
+ 0xdf, 0x0f, 0xb6, 0x61, 0x52, 0x96, 0x90, 0xdd, 0xec, 0x5a, 0xe8, 0xaf,
+ 0xc6, 0xca, 0xab, 0x8c, 0xfc, 0x5f, 0xcd, 0xd3, 0x6a, 0x4e, 0x67, 0x7c,
+ 0xb1, 0x9a, 0xc7, 0xcc, 0x1c, 0xdc, 0x6d, 0x09, 0x0e, 0xe5, 0x75, 0xbd,
+ 0x12, 0x23, 0xd0, 0xa2, 0xae, 0x58, 0x18, 0xbe, 0x64, 0x6e, 0xe6, 0x43,
+ 0x9f, 0xae, 0xe7, 0x48, 0x3d, 0xe9, 0x55, 0x4f, 0xc8, 0x3b, 0x2c, 0x8a,
+ 0xaf, 0x6d, 0x82, 0xc7, 0x76, 0x94, 0x9c, 0xce, 0x25, 0x26, 0xa5, 0x4d,
+ 0xbf, 0xb0, 0x09, 0x03, 0x92, 0x55, 0x9d, 0xe1, 0x36, 0x4e, 0x4e, 0xcf,
+ 0x8f, 0x4e, 0xde, 0x8d, 0x93, 0x7f, 0xdf, 0x58, 0x5b, 0xff, 0xd5, 0xc6,
+ 0xec, 0xfd, 0x71, 0xe0, 0xce, 0x24, 0x79, 0x21, 0x7e, 0x86, 0x3e, 0xdb,
+ 0xd8, 0x53, 0xe2, 0xa7, 0x46, 0x7a, 0x1b, 0xfe, 0xaa, 0x6f, 0x0a, 0xde,
+ 0x99, 0x9c, 0x56, 0x07, 0xa2, 0x2d, 0xd0, 0x96, 0x2d, 0xc6, 0x5d, 0xd7,
+ 0x88, 0x66, 0x66, 0xef, 0x6c, 0x96, 0xce, 0xf0, 0x71, 0x0e, 0x2c, 0x9c,
+ 0xaf, 0x95, 0xeb, 0x29, 0x2f, 0xd0, 0x16, 0xdf, 0x90, 0x5a, 0xca, 0x16,
+ 0xf4, 0x96, 0x34, 0x2e, 0x15, 0x45, 0xab, 0x8e, 0xa4, 0x10, 0x7e, 0x73,
+ 0x78, 0x0e, 0x27, 0x0d, 0x95, 0x7e, 0xba, 0x09, 0x92, 0xab, 0x4b, 0x14,
+ 0x9f, 0xd4, 0x2a, 0x67, 0x5a, 0xf1, 0x49, 0x5d, 0xcf, 0x6f, 0x97, 0xf3,
+ 0xb4, 0x88, 0xd6, 0xb8, 0x19, 0x8d, 0x16, 0x8d, 0xdc, 0x4b, 0x87, 0x87,
+ 0xaa, 0xbe, 0x13, 0xaf, 0x65, 0x06, 0x63, 0x15, 0x9d, 0xbe, 0x3f, 0x17,
+ 0x3f, 0xd5, 0xeb, 0xc3, 0xe3, 0xc3, 0xf3, 0xc3, 0xae, 0xe5, 0x3e, 0x61,
+ 0x84, 0x47, 0xaa, 0x85, 0x69, 0xb2, 0xe9, 0x55, 0x51, 0xce, 0xcb, 0xcb,
+ 0x5c, 0x9a, 0x59, 0x26, 0x3f, 0x64, 0x93, 0xd7, 0x2f, 0xbf, 0x87, 0x3e,
+ 0x01, 0x9f, 0xd3, 0xe9, 0xd9, 0xc9, 0xe9, 0x9b, 0xa3, 0x77, 0xaf, 0x07,
+ 0xc9, 0xab, 0x93, 0xd3, 0x3f, 0x0d, 0x92, 0xb7, 0x27, 0xdf, 0x1f, 0x46,
+ 0x72, 0xa0, 0x81, 0xbc, 0x1e, 0x50, 0x8c, 0x6d, 0x2c, 0xe7, 0x0c, 0xef,
+ 0x82, 0x43, 0x16, 0x9e, 0x10, 0x79, 0x49, 0x59, 0x23, 0x68, 0xba, 0xcc,
+ 0x77, 0xcd, 0x6c, 0x9d, 0x91, 0xa1, 0xdf, 0x1e, 0xbe, 0x7c, 0x3d, 0x08,
+ 0xb0, 0xb1, 0xd1, 0xa5, 0xc3, 0x7c, 0x0c, 0xeb, 0xb3, 0x8b, 0x26, 0x44,
+ 0x65, 0xb6, 0x3e, 0x48, 0x43, 0xe0, 0x20, 0x17, 0xdf, 0x58, 0x43, 0xb0,
+ 0x54, 0xba, 0x3e, 0xeb, 0xcb, 0x9c, 0x10, 0x98, 0xf7, 0xde, 0xf6, 0xb1,
+ 0x5e, 0x47, 0x5f, 0x28, 0x6b, 0xbe, 0x9a, 0x2d, 0x08, 0x46, 0x94, 0x77,
+ 0xaf, 0x55, 0x5a, 0xcc, 0x21, 0x38, 0xbb, 0xba, 0x07, 0x46, 0x67, 0xd0,
+ 0xaa, 0x9f, 0x27, 0x7e, 0xc4, 0xae, 0xc7, 0x54, 0xfa, 0xef, 0x51, 0x3f,
+ 0x1c, 0xe4, 0xfe, 0x8c, 0x19, 0x3f, 0x5a, 0xa0, 0x53, 0xd7, 0x6b, 0xd8,
+ 0x82, 0xd1, 0x2d, 0x58, 0x46, 0xd8, 0x3c, 0xdd, 0xa0, 0x81, 0xb6, 0x22,
+ 0xf9, 0x91, 0x7f, 0x2c, 0x69, 0x3a, 0x91, 0xcc, 0xee, 0xd5, 0x85, 0x21,
+ 0xcb, 0x8c, 0x73, 0xaa, 0xf8, 0x98, 0xac, 0x5b, 0x20, 0x19, 0x1e, 0xa9,
+ 0x53, 0x62, 0x9d, 0x82, 0xa5, 0x37, 0x46, 0x1d, 0x33, 0x0c, 0xa0, 0xa4,
+ 0x3e, 0xab, 0x36, 0x9b, 0xf0, 0x3d, 0x24, 0x58, 0x67, 0x44, 0xdf, 0xd7,
+ 0x23, 0x56, 0x88, 0x1f, 0xf1, 0xe0, 0xf8, 0x9b, 0x42, 0x75, 0x43, 0x81,
+ 0x2f, 0xcb, 0x08, 0xd8, 0x40, 0xb8, 0xd0, 0x93, 0x86, 0x95, 0x14, 0xe2,
+ 0x11, 0x4d, 0x10, 0x7a, 0x1b, 0xb2, 0x2d, 0xed, 0xa7, 0x05, 0x2b, 0xf7,
+ 0x14, 0xdd, 0x54, 0xe6, 0x10, 0x6f, 0x77, 0xee, 0xfa, 0x21, 0xfa, 0xbe,
+ 0xbc, 0x47, 0xbb, 0xb7, 0xce, 0xc7, 0x0e, 0x6d, 0xa2, 0x4e, 0x86, 0x02,
+ 0x53, 0x4d, 0xd5, 0x7d, 0xc1, 0xd6, 0x6d, 0xbd, 0xe9, 0x61, 0x8c, 0xbe,
+ 0xd7, 0xd6, 0x56, 0xb9, 0x5b, 0x16, 0x75, 0x7c, 0x64, 0xae, 0x43, 0x04,
+ 0x2f, 0x66, 0x56, 0x52, 0x53, 0x5c, 0x4a, 0x47, 0x20, 0xbd, 0x8a, 0x76,
+ 0xdf, 0x8c, 0x15, 0x7e, 0x18, 0x4d, 0xa2, 0xa3, 0x5f, 0xa6, 0xee, 0xd1,
+ 0xf7, 0x7c, 0x3a, 0x38, 0xb3, 0xb3, 0xc3, 0xf3, 0xb3, 0x51, 0xb2, 0xe5,
+ 0x03, 0xa1, 0x3e, 0x1d, 0xed, 0x86, 0x41, 0x1b, 0x34, 0xa8, 0x8e, 0x7e,
+ 0x95, 0x3a, 0x57, 0xf7, 0x7c, 0x95, 0x78, 0x03, 0xbe, 0x1b, 0x26, 0x1a,
+ 0x7b, 0xf0, 0x47, 0xbb, 0xb1, 0xef, 0xf9, 0x4d, 0xb0, 0x5b, 0xdf, 0xc3,
+ 0x2f, 0xd6, 0xac, 0xf2, 0xdb, 0xc3, 0xe3, 0x48, 0xdb, 0x98, 0xef, 0xcf,
+ 0xde, 0xfc, 0xa9, 0xbd, 0xca, 0x47, 0x8f, 0x23, 0x5f, 0xfd, 0x2d, 0x1d,
+ 0xea, 0x59, 0x5d, 0xce, 0x8d, 0xc2, 0x42, 0x65, 0x1e, 0x54, 0xe5, 0x71,
+ 0x60, 0x44, 0x00, 0x92, 0xd1, 0xff, 0x3c, 0x90, 0xbf, 0xfc, 0x3c, 0x1a,
+ 0x8d, 0xfe, 0x18, 0x62, 0x79, 0x93, 0x8f, 0xc6, 0x2e, 0x57, 0x9e, 0xed,
+ 0x5a, 0xe0, 0x54, 0x55, 0x43, 0x65, 0x44, 0x88, 0x5a, 0x2c, 0xd3, 0xbc,
+ 0xa2, 0x76, 0x33, 0x51, 0x81, 0x8b, 0x25, 0xb9, 0x52, 0x30, 0xab, 0xcd,
+ 0x09, 0x4c, 0x16, 0x5f, 0xd7, 0xad, 0x7a, 0x5b, 0xea, 0xae, 0xbd, 0x8e,
+ 0xde, 0xb3, 0xc0, 0x11, 0xc2, 0x2d, 0x3f, 0xf0, 0xd9, 0x0a, 0xfe, 0x59,
+ 0xb6, 0x75, 0x9c, 0xac, 0x2d, 0x54, 0x76, 0xc8, 0xea, 0x67, 0x76, 0xfa,
+ 0x51, 0xef, 0x85, 0x14, 0x52, 0xbe, 0x92, 0x90, 0x3a, 0x39, 0x92, 0x53,
+ 0x12, 0x2b, 0xd4, 0x12, 0x35, 0x6b, 0xa6, 0x3b, 0x58, 0x67, 0xdd, 0xd2,
+ 0x00, 0xad, 0x0a, 0x17, 0x38, 0x91, 0xfc, 0x84, 0x47, 0x2a, 0xb1, 0xe5,
+ 0xe4, 0x16, 0xaf, 0x66, 0xc1, 0x55, 0xf9, 0x7a, 0x9a, 0x3a, 0xeb, 0x07,
+ 0x21, 0x37, 0x6b, 0x35, 0xdb, 0xf1, 0x1b, 0x43, 0x68, 0x17, 0x85, 0x80,
+ 0x1d, 0x7a, 0xa5, 0x6c, 0xa1, 0xda, 0x4f, 0xdc, 0x59, 0x29, 0x09, 0x89,
+ 0x14, 0x04, 0xc9, 0x7d, 0xd1, 0x92, 0x08, 0xea, 0xa1, 0xf3, 0x0f, 0x5d,
+ 0xdb, 0x3a, 0x47, 0x80, 0x8d, 0x04, 0x5e, 0x5b, 0x8d, 0x78, 0xac, 0x34,
+ 0x94, 0x87, 0x5f, 0xdb, 0x84, 0x0d, 0xaa, 0x43, 0xdf, 0xfc, 0xf7, 0x4d,
+ 0x28, 0xc2, 0xf4, 0x7a, 0xb4, 0xfa, 0x5d, 0x09, 0x17, 0x86, 0x0d, 0x9e,
+ 0x8a, 0xe8, 0x0d, 0x76, 0x53, 0x2c, 0xf1, 0x29, 0x2f, 0xf5, 0x89, 0x87,
+ 0x96, 0x30, 0x4a, 0x7e, 0xc8, 0xe7, 0xb3, 0x69, 0x5a, 0x51, 0x7a, 0x58,
+ 0x28, 0x5e, 0x85, 0x4c, 0xf8, 0x3e, 0xd5, 0x25, 0x7d, 0xd5, 0x5d, 0x1e,
+ 0xed, 0x53, 0x12, 0xa7, 0xfa, 0x48, 0x55, 0x90, 0x3d, 0x0c, 0x04, 0xbf,
+ 0x7b, 0xfa, 0x41, 0x09, 0xf9, 0xe8, 0x1e, 0x43, 0xd4, 0xb5, 0x9b, 0x43,
+ 0xb4, 0xcf, 0x55, 0xe3, 0x10, 0xc3, 0xc7, 0x61, 0x2c, 0x25, 0x5f, 0x5e,
+ 0x3f, 0x26, 0xf7, 0xd5, 0xd3, 0x01, 0xff, 0xeb, 0x29, 0x03, 0x17, 0x36,
+ 0xed, 0xc8, 0x0a, 0xdb, 0x31, 0xac, 0xf5, 0x1f, 0x9d, 0x6a, 0x09, 0x6c,
+ 0xd0, 0xd3, 0xc0, 0x03, 0xea, 0xe6, 0x59, 0x6a, 0x65, 0x9b, 0x79, 0x47,
+ 0x67, 0x8b, 0x1d, 0x31, 0xfc, 0xeb, 0xcf, 0x93, 0x0a, 0x5d, 0x31, 0x9b,
+ 0xfa, 0xe7, 0x75, 0x05, 0xc7, 0x46, 0xe7, 0x7f, 0x36, 0x0a, 0x0b, 0xbb,
+ 0xe2, 0x1f, 0xb2, 0x59, 0xcc, 0xee, 0x6b, 0xa8, 0x00, 0xa0, 0xb0, 0x1d,
+ 0xb2, 0x7e, 0xf0, 0x9d, 0x35, 0x1f, 0x7a, 0x7e, 0xcf, 0x87, 0xf8, 0x48,
+ 0x2d, 0x18, 0xda, 0x8d, 0x52, 0x85, 0x5f, 0xc4, 0x6c, 0xc6, 0x79, 0xfa,
+ 0x78, 0xb4, 0xfb, 0xf0, 0xc4, 0x6b, 0x67, 0x7c, 0x33, 0x26, 0x1f, 0xff,
+ 0x84, 0xa8, 0x44, 0x52, 0xc4, 0xca, 0x3e, 0x9a, 0x5b, 0xdb, 0xcf, 0x01,
+ 0x58, 0x32, 0x2d, 0x5e, 0x6e, 0x36, 0x80, 0x6a, 0x88, 0x2a, 0x63, 0x1c,
+ 0xd6, 0xc1, 0x0e, 0x1c, 0x15, 0x1d, 0x77, 0x8b, 0xf0, 0x44, 0x04, 0x45,
+ 0xf9, 0xc7, 0xc0, 0x67, 0x50, 0x2e, 0x77, 0x88, 0x3a, 0xa7, 0xb3, 0xc3,
+ 0x37, 0xef, 0xc7, 0x87, 0xaf, 0x09, 0xdb, 0x20, 0x8d, 0xb5, 0xea, 0xc9,
+ 0xc9, 0x2d, 0x27, 0xbd, 0x67, 0x9a, 0xb2, 0xe4, 0x8c, 0x20, 0x99, 0x4b,
+ 0xd0, 0xce, 0x4e, 0x92, 0x8b, 0x8c, 0x65, 0x1c, 0x16, 0xa6, 0xb0, 0x1e,
+ 0x27, 0x2f, 0xfe, 0x02, 0x60, 0x12, 0x5e, 0xf5, 0x2c, 0x43, 0xdf, 0xa7,
+ 0x17, 0x9c, 0x05, 0x13, 0x20, 0x8d, 0xb9, 0x0e, 0x51, 0xf5, 0x3c, 0xcb,
+ 0x96, 0x52, 0x17, 0xb8, 0x28, 0x57, 0x05, 0xbb, 0x45, 0xcd, 0xd9, 0xa8,
+ 0x27, 0x90, 0x5d, 0xcf, 0x04, 0xaf, 0x70, 0xa7, 0x81, 0xc3, 0xb4, 0xa7,
+ 0x49, 0x11, 0x61, 0x8e, 0x25, 0x94, 0x7a, 0xee, 0x30, 0x05, 0xdc, 0xb6,
+ 0xf0, 0xae, 0x6c, 0xe5, 0x4d, 0xc7, 0x85, 0x1e, 0x34, 0x6c, 0x23, 0x97,
+ 0x3a, 0x7a, 0x26, 0x19, 0xbb, 0x88, 0x27, 0x93, 0xce, 0x2f, 0xcb, 0xca,
+ 0x8c, 0xb7, 0xb0, 0xa5, 0x8c, 0x8c, 0xf7, 0x50, 0x6f, 0x77, 0xdb, 0x3c,
+ 0x86, 0x45, 0xe1, 0x5c, 0x87, 0x41, 0x21, 0xf0, 0x8c, 0x2b, 0xbc, 0xc1,
+ 0x16, 0x78, 0x9f, 0xc8, 0x63, 0x82, 0xf0, 0x20, 0xcb, 0xb4, 0xb1, 0xd4,
+ 0x65, 0xd3, 0x7e, 0xf0, 0x16, 0x06, 0xe6, 0xe6, 0xdf, 0xb2, 0xaa, 0xec,
+ 0xba, 0x73, 0x54, 0x75, 0xd7, 0x70, 0x80, 0x3f, 0xf7, 0x7f, 0x65, 0xa3,
+ 0xb0, 0xbd, 0xfd, 0xd8, 0x0d, 0x58, 0xa4, 0xb7, 0xe4, 0xa2, 0xea, 0x25,
+ 0x07, 0x76, 0xd8, 0x62, 0x3b, 0xf0, 0x58, 0xc5, 0x2c, 0x9f, 0x18, 0xac,
+ 0x2b, 0x8d, 0xe1, 0xbc, 0x24, 0x7b, 0xd2, 0xe2, 0xc0, 0x22, 0xbb, 0x3b,
+ 0x0c, 0x3d, 0x52, 0x1a, 0xb7, 0xed, 0x96, 0x45, 0x7e, 0xc2, 0x14, 0xcb,
+ 0x84, 0x11, 0xb7, 0xc5, 0x5d, 0x8b, 0xe8, 0x7b, 0xdb, 0xf8, 0xf1, 0xbc,
+ 0x44, 0x94, 0x92, 0x89, 0x81, 0xbe, 0x1f, 0xe2, 0xd8, 0xc1, 0x48, 0xa8,
+ 0x40, 0x88, 0x6a, 0xd0, 0xb2, 0x4f, 0x98, 0x5a, 0xb0, 0x50, 0x35, 0x19,
+ 0x50, 0xbd, 0xd8, 0x03, 0x76, 0xe1, 0xc6, 0x91, 0x37, 0x83, 0x1c, 0x56,
+ 0x1e, 0x87, 0x15, 0x05, 0x1a, 0x62, 0xd0, 0x86, 0x1b, 0x96, 0xcd, 0xa6,
+ 0xf2, 0x4d, 0xaa, 0xef, 0xa1, 0x2e, 0x5d, 0x52, 0x44, 0x1f, 0x51, 0xd5,
+ 0x06, 0xda, 0xf6, 0x85, 0x6a, 0x9f, 0xb0, 0x1c, 0xb2, 0x33, 0xd3, 0xc2,
+ 0x9f, 0x2b, 0x1d, 0x80, 0x19, 0x23, 0x2f, 0x67, 0x54, 0x35, 0xc5, 0xed,
+ 0x63, 0xfa, 0xf0, 0x65, 0x64, 0x2e, 0x9b, 0xf0, 0x54, 0xde, 0xe6, 0x8b,
+ 0xd5, 0x82, 0xde, 0x1f, 0x70, 0x7d, 0xe4, 0x02, 0x52, 0x4b, 0x0f, 0x95,
+ 0xb2, 0x0b, 0x1b, 0xa5, 0xa8, 0x98, 0x33, 0x03, 0xbc, 0x8d, 0x88, 0xb6,
+ 0xe1, 0x8c, 0x1f, 0xbc, 0xc5, 0x7d, 0x27, 0xe8, 0xa0, 0xfe, 0xcb, 0xe9,
+ 0x33, 0x79, 0x61, 0x34, 0xba, 0x3f, 0x86, 0x93, 0x08, 0x59, 0x07, 0xd1,
+ 0x25, 0xf2, 0x9c, 0xb3, 0x99, 0x67, 0x45, 0x0a, 0xb9, 0x41, 0x55, 0x95,
+ 0x33, 0xea, 0xe7, 0x50, 0x02, 0x1c, 0x41, 0xf3, 0x15, 0x8a, 0xc7, 0x52,
+ 0x9d, 0xf3, 0x97, 0xc5, 0x92, 0xd0, 0xfd, 0x25, 0xe3, 0xdc, 0xad, 0x96,
+ 0x81, 0xcc, 0xb7, 0x7c, 0xc2, 0xaa, 0xa3, 0xe6, 0xf3, 0xbb, 0x92, 0x13,
+ 0x23, 0xb6, 0x2d, 0xfc, 0xe5, 0xb2, 0xc7, 0xd6, 0x8d, 0x25, 0x5d, 0x08,
+ 0xe2, 0x4d, 0x1b, 0x89, 0x97, 0x05, 0x42, 0x84, 0x15, 0x53, 0x86, 0x4b,
+ 0x3a, 0xc0, 0xa6, 0xf0, 0xf1, 0x0d, 0xb4, 0x54, 0xef, 0xf1, 0xed, 0x6d,
+ 0x40, 0xe1, 0x9e, 0x41, 0xcc, 0x20, 0x8c, 0x6c, 0x2d, 0x3f, 0xde, 0xa5,
+ 0x3a, 0xc8, 0x27, 0xb7, 0x1d, 0xa3, 0x79, 0x14, 0x45, 0x4c, 0xd4, 0xca,
+ 0xdd, 0x74, 0x52, 0x72, 0x08, 0x8e, 0x37, 0x2c, 0xf5, 0x36, 0x53, 0xa3,
+ 0x08, 0xd2, 0x54, 0xf4, 0x26, 0xc5, 0xe6, 0x96, 0x45, 0x98, 0xda, 0x40,
+ 0xb9, 0x98, 0x5e, 0x1b, 0x51, 0x0d, 0x94, 0x52, 0x3f, 0x3c, 0xa3, 0xfc,
+ 0x63, 0x33, 0x75, 0xaf, 0x74, 0xd0, 0x59, 0xb9, 0xe2, 0x40, 0x66, 0x16,
+ 0x44, 0xc6, 0x72, 0xde, 0x7d, 0x5c, 0x29, 0x23, 0xb2, 0xf2, 0x39, 0xde,
+ 0xe1, 0x7b, 0x5d, 0x27, 0x7b, 0xe6, 0x18, 0xf2, 0x62, 0xd5, 0x58, 0x04,
+ 0x3b, 0xfa, 0xa0, 0x52, 0x68, 0x74, 0xf7, 0xc1, 0xe7, 0xad, 0x60, 0x11,
+ 0x5e, 0x50, 0x7b, 0x01, 0x42, 0xbe, 0x27, 0xa4, 0x93, 0x8b, 0x83, 0xc7,
+ 0x97, 0xb2, 0x11, 0x57, 0x91, 0x8d, 0xc2, 0x4a, 0x85, 0x79, 0x76, 0x6b,
+ 0x36, 0x9b, 0x51, 0x96, 0x12, 0x2b, 0x1c, 0x9c, 0x50, 0x93, 0x0c, 0x61,
+ 0xee, 0x62, 0x10, 0xc9, 0xfc, 0x69, 0x31, 0x71, 0xdb, 0x7a, 0x8a, 0xf8,
+ 0x5c, 0xd9, 0xc8, 0x95, 0x64, 0xe0, 0x08, 0x09, 0x17, 0xff, 0x37, 0xb8,
+ 0xda, 0x75, 0x5a, 0xcf, 0x87, 0x79, 0x97, 0x97, 0x1f, 0x52, 0x36, 0xa1,
+ 0xcd, 0x05, 0xb2, 0x54, 0x68, 0x86, 0x18, 0xbf, 0x1c, 0x1f, 0x77, 0xc0,
+ 0xbe, 0xd6, 0xa2, 0x2f, 0xef, 0xb5, 0xd5, 0x9e, 0x4f, 0x05, 0x11, 0xc9,
+ 0x90, 0xbd, 0x7d, 0xbd, 0xe3, 0xea, 0x03, 0xfe, 0xba, 0x43, 0xa2, 0x0d,
+ 0x27, 0xc3, 0x10, 0x47, 0xa8, 0xda, 0xe0, 0x1e, 0x7f, 0x49, 0x04, 0x27,
+ 0x87, 0x9e, 0xd8, 0x91, 0x14, 0xa0, 0xfb, 0x22, 0xe9, 0x8c, 0x3b, 0xa9,
+ 0x2b, 0x1f, 0x43, 0x1a, 0xa0, 0x09, 0xe6, 0x30, 0x86, 0xe7, 0x63, 0xe3,
+ 0x50, 0xa2, 0x4f, 0xd6, 0xf4, 0x34, 0x12, 0x82, 0x1a, 0x11, 0x5b, 0x96,
+ 0x63, 0x61, 0x0c, 0x97, 0x57, 0x03, 0xf4, 0xf3, 0x10, 0x2b, 0x9d, 0x43,
+ 0xad, 0x17, 0xdc, 0x67, 0x50, 0x67, 0xe0, 0x8d, 0xd9, 0xe5, 0x93, 0xf4,
+ 0x43, 0xce, 0x1c, 0xff, 0xeb, 0x2a, 0xcf, 0xa8, 0x21, 0xa6, 0xe1, 0x37,
+ 0xc9, 0x6b, 0xce, 0x0c, 0x93, 0x7e, 0x7d, 0xdc, 0x18, 0x94, 0x9a, 0x87,
+ 0xe2, 0x51, 0x3b, 0x81, 0xc0, 0x02, 0x30, 0x13, 0xc2, 0x3d, 0x7c, 0x4b,
+ 0x93, 0x7e, 0x85, 0x49, 0x2f, 0xcc, 0x45, 0x27, 0xfb, 0xdd, 0x03, 0x19,
+ 0xd3, 0xa4, 0x01, 0xcd, 0xe4, 0xe7, 0x2b, 0x99, 0xd6, 0x1f, 0xc3, 0x5c,
+ 0xfd, 0x41, 0xab, 0x4d, 0x13, 0xd9, 0x8c, 0x62, 0x09, 0x34, 0xe8, 0xf1,
+ 0x55, 0xa4, 0xf3, 0x9d, 0xba, 0x99, 0x81, 0xff, 0xad, 0x8a, 0x39, 0x26,
+ 0x89, 0xa1, 0xb4, 0x25, 0x5d, 0x77, 0x6f, 0x9a, 0x18, 0x6a, 0x4c, 0x70,
+ 0x40, 0xe4, 0xbb, 0xb6, 0x76, 0x87, 0xd4, 0x2c, 0xf9, 0x0a, 0x6c, 0xe3,
+ 0x1a, 0xe8, 0x85, 0xe8, 0x40, 0xfe, 0x56, 0xc1, 0x8d, 0xc0, 0x2b, 0xa6,
+ 0x8d, 0x6c, 0x9d, 0xdb, 0x3a, 0xac, 0x84, 0x6b, 0x4c, 0xc8, 0x10, 0xda,
+ 0xa4, 0xac, 0x15, 0x39, 0xd9, 0x2c, 0xd2, 0xbc, 0xde, 0xba, 0x4f, 0x84,
+ 0xc5, 0x75, 0x2f, 0xdc, 0x49, 0xdb, 0x7b, 0xc0, 0x2d, 0x87, 0xef, 0xc5,
+ 0x39, 0xe1, 0x37, 0xc2, 0x3e, 0xcd, 0xbf, 0x18, 0xe9, 0xc4, 0x0b, 0x19,
+ 0x58, 0x20, 0x27, 0x98, 0x92, 0x36, 0xf7, 0x51, 0x12, 0x9a, 0x5a, 0xa0,
+ 0x1f, 0x16, 0x98, 0x2e, 0xd2, 0x40, 0xcf, 0x90, 0xd3, 0x4a, 0x40, 0x12,
+ 0xa6, 0x73, 0xc3, 0xeb, 0x23, 0x06, 0xa7, 0xb6, 0x4e, 0x04, 0x1e, 0xd8,
+ 0xa0, 0xcb, 0x4e, 0xeb, 0x15, 0x54, 0x90, 0xf9, 0x0a, 0xdf, 0x66, 0x28,
+ 0x2d, 0x0b, 0xe5, 0xa4, 0xb5, 0xdd, 0x51, 0xf8, 0x33, 0x0b, 0x98, 0x82,
+ 0x3b, 0xea, 0x21, 0xc1, 0xad, 0xb4, 0xd1, 0xaa, 0x82, 0xa4, 0x75, 0xd1,
+ 0xc4, 0x46, 0x3d, 0xb3, 0x83, 0x55, 0x38, 0xf0, 0xbb, 0x92, 0xfb, 0x06,
+ 0x38, 0xca, 0x59, 0x74, 0x3a, 0xad, 0x96, 0xe3, 0x69, 0x13, 0x75, 0xa6,
+ 0x11, 0x17, 0x23, 0x21, 0xe3, 0xcf, 0x4d, 0xa5, 0x87, 0x56, 0x3c, 0x53,
+ 0x86, 0x79, 0xab, 0xd1, 0xf7, 0x51, 0x11, 0xc4, 0x3d, 0x3a, 0xed, 0xc8,
+ 0x59, 0x71, 0xb0, 0x3d, 0xc5, 0xe5, 0xee, 0xb5, 0xa6, 0xc4, 0x68, 0x35,
+ 0x45, 0x2c, 0x53, 0xf9, 0x21, 0x8d, 0xc8, 0x5b, 0xad, 0xc7, 0xff, 0x95,
+ 0xf2, 0xf0, 0x49, 0xbb, 0x9b, 0x96, 0x60, 0xdb, 0xfd, 0xaa, 0x0b, 0x95,
+ 0x3e, 0xec, 0x46, 0xf5, 0x54, 0x15, 0xfc, 0xcf, 0xbc, 0x51, 0xe9, 0xc3,
+ 0xae, 0x54, 0xda, 0xba, 0x53, 0x3d, 0xed, 0xe3, 0x7b, 0x67, 0xfc, 0x1b,
+ 0xde, 0x32, 0x9b, 0x80, 0xf1, 0xd0, 0x3b, 0xa6, 0x34, 0xf1, 0x3f, 0xfb,
+ 0x96, 0x7d, 0xde, 0xd1, 0x02, 0x09, 0x28, 0x72, 0x4d, 0xd3, 0x3a, 0x3f,
+ 0x47, 0x05, 0xc9, 0xe0, 0xd0, 0xb5, 0x76, 0x2c, 0xa6, 0x5b, 0xbc, 0x73,
+ 0x1d, 0x63, 0x10, 0x45, 0x43, 0x34, 0xa5, 0x1e, 0xed, 0x13, 0x7b, 0x1c,
+ 0x5a, 0x5f, 0xbd, 0x76, 0xe4, 0xc0, 0x49, 0xa5, 0x48, 0xb9, 0x0e, 0xe8,
+ 0x61, 0x24, 0xea, 0x83, 0xae, 0xe9, 0xd2, 0xc8, 0xf5, 0x65, 0x4e, 0xda,
+ 0x81, 0x51, 0x5c, 0x00, 0xd2, 0xf8, 0xcd, 0x78, 0x3c, 0x7c, 0x79, 0x7a,
+ 0x04, 0xc0, 0xde, 0x61, 0x48, 0x51, 0x1e, 0x64, 0x6e, 0xe9, 0xcf, 0x31,
+ 0x66, 0x17, 0xf4, 0xa7, 0x9b, 0xb4, 0xbf, 0x6e, 0xf4, 0xdc, 0xee, 0xb6,
+ 0xbe, 0xac, 0x93, 0x56, 0x3a, 0xa5, 0x4e, 0xca, 0xe2, 0xed, 0x43, 0xdb,
+ 0x56, 0xf4, 0x59, 0x4a, 0x69, 0x86, 0x51, 0x0a, 0xae, 0x45, 0x0f, 0x04,
+ 0xb9, 0xa7, 0x04, 0x35, 0x02, 0x90, 0x90, 0xbd, 0xe7, 0x4f, 0xf7, 0xcc,
+ 0xad, 0xb8, 0x63, 0xfc, 0x3b, 0x79, 0xf9, 0xf1, 0xe8, 0xd1, 0xce, 0xe3,
+ 0xd1, 0x63, 0xf0, 0x34, 0x09, 0x0a, 0x91, 0x51, 0x27, 0xc3, 0x1b, 0x6e,
+ 0x17, 0xc9, 0xbe, 0x60, 0x21, 0xf6, 0xee, 0xf0, 0x55, 0xc2, 0x29, 0x7a,
+ 0x84, 0x88, 0x96, 0x50, 0xb1, 0x10, 0x2a, 0x8f, 0x24, 0x8e, 0x4d, 0x69,
+ 0x02, 0x60, 0xa5, 0x72, 0x84, 0x4c, 0xac, 0x81, 0x31, 0x16, 0x6c, 0x87,
+ 0x9a, 0x12, 0x54, 0x9a, 0x5f, 0xd8, 0x89, 0x80, 0xdd, 0xb1, 0x55, 0x21,
+ 0xfb, 0x82, 0x39, 0x86, 0x95, 0x36, 0xde, 0x96, 0x78, 0x1b, 0x76, 0x4f,
+ 0x1a, 0xed, 0xe3, 0xfe, 0xf3, 0x51, 0xf3, 0xa5, 0xc7, 0x00, 0x72, 0x1e,
+ 0xca, 0xc0, 0xce, 0x11, 0x86, 0xa8, 0x09, 0x86, 0x70, 0xb5, 0x4c, 0x17,
+ 0xd6, 0x24, 0xb9, 0xf8, 0xeb, 0xac, 0x18, 0xfd, 0x52, 0x7b, 0x2a, 0xa2,
+ 0x10, 0x7b, 0x66, 0x93, 0x4e, 0x5d, 0x18, 0x99, 0xd8, 0x4a, 0x7d, 0x0b,
+ 0x12, 0x13, 0xa9, 0xeb, 0x09, 0x60, 0x12, 0xc0, 0x65, 0x66, 0x0b, 0xca,
+ 0x1b, 0xca, 0x8e, 0x1f, 0xf9, 0x99, 0x8e, 0x1e, 0x29, 0xc1, 0xc0, 0xc7,
+ 0x78, 0xac, 0x2a, 0x4b, 0xe7, 0x32, 0x2b, 0xef, 0x3b, 0xe1, 0x2f, 0xa9,
+ 0xc5, 0x36, 0x98, 0x6d, 0x1d, 0xa6, 0x9f, 0x39, 0x94, 0x54, 0x9d, 0x82,
+ 0x4d, 0x47, 0x71, 0x6d, 0x1c, 0x96, 0x95, 0x11, 0x27, 0xf9, 0x32, 0x9d,
+ 0x27, 0x0f, 0xc8, 0xa1, 0xee, 0x3f, 0xfc, 0x7b, 0x9a, 0x74, 0xd2, 0xec,
+ 0xf5, 0x76, 0xae, 0x61, 0x74, 0x0a, 0x7e, 0xd3, 0x15, 0x79, 0x21, 0x97,
+ 0xeb, 0x19, 0x0c, 0x15, 0xe2, 0x8e, 0x9b, 0x29, 0xc5, 0x75, 0x13, 0x05,
+ 0x8c, 0x25, 0x69, 0x3d, 0x4c, 0xd3, 0x72, 0xb1, 0x74, 0x21, 0x03, 0x1d,
+ 0x56, 0x6a, 0xfb, 0xb6, 0xbb, 0x8c, 0x30, 0xc6, 0xdc, 0xb9, 0xff, 0xfb,
+ 0xf4, 0x01, 0x9c, 0xf7, 0xb7, 0x60, 0x86, 0x50, 0xe1, 0xd8, 0xcf, 0xf0,
+ 0xcb, 0x95, 0x39, 0xd9, 0xc2, 0x64, 0x8b, 0xc2, 0xdd, 0x59, 0x1b, 0xdc,
+ 0x4f, 0x03, 0xa8, 0x11, 0x2f, 0x15, 0x45, 0xc7, 0x88, 0x40, 0xb0, 0x21,
+ 0x0f, 0xc0, 0xcd, 0xed, 0x28, 0x7e, 0x21, 0x4e, 0xd0, 0xff, 0x04, 0x35,
+ 0xf0, 0x49, 0x62, 0xcf, 0xea, 0x21, 0xea, 0x20, 0x43, 0x4c, 0x73, 0xb3,
+ 0xe1, 0x00, 0xa7, 0xc9, 0x99, 0x5c, 0xff, 0xbf, 0x36, 0xf8, 0xff, 0x26,
+ 0x6d, 0xf0, 0x9f, 0xb9, 0xa5, 0x43, 0xc9, 0xdf, 0xe4, 0x6b, 0x69, 0x33,
+ 0x48, 0x24, 0xdf, 0x3e, 0x9a, 0x58, 0x3d, 0xbf, 0x1b, 0x79, 0xd0, 0x6c,
+ 0x8c, 0x07, 0xfe, 0xb0, 0x2b, 0x1a, 0x92, 0xc2, 0xff, 0x8c, 0x2b, 0xfa,
+ 0xa0, 0x9b, 0xf9, 0xff, 0xfb, 0x3e, 0xfe, 0xbb, 0xdd, 0xc3, 0x08, 0x41,
+ 0xea, 0x60, 0x5b, 0x86, 0xcc, 0x6e, 0x90, 0x9d, 0xc4, 0x9d, 0x8e, 0xc8,
+ 0xd2, 0xde, 0x76, 0xaa, 0x0f, 0xca, 0x8e, 0x78, 0xeb, 0x8e, 0x4e, 0xbf,
+ 0x7f, 0x4a, 0x68, 0x23, 0xe3, 0x6e, 0xd0, 0xbe, 0x4a, 0x8e, 0x5f, 0xbf,
+ 0x3c, 0xfd, 0x05, 0xb7, 0xfd, 0x4f, 0xe4, 0x66, 0x5d, 0x66, 0xd9, 0x6c,
+ 0xc8, 0xf1, 0x91, 0x17, 0xf4, 0x8f, 0x68, 0x60, 0x51, 0x51, 0x04, 0x88,
+ 0x6c, 0x11, 0x36, 0x09, 0xe3, 0xb5, 0xf4, 0xb2, 0x51, 0x53, 0x0a, 0xc1,
+ 0xf6, 0x58, 0x52, 0xcf, 0xd5, 0xc0, 0xc7, 0x52, 0x16, 0xb3, 0x6d, 0x51,
+ 0x01, 0xf9, 0xdb, 0x44, 0x2a, 0x12, 0x67, 0xc7, 0xf5, 0xbe, 0x04, 0xfe,
+ 0x97, 0xc5, 0x50, 0xf4, 0x9e, 0xe1, 0x8c, 0xa3, 0x68, 0xd2, 0xc7, 0x9d,
+ 0x5b, 0x0a, 0x87, 0x76, 0x18, 0xa5, 0xeb, 0xd1, 0x2e, 0xfc, 0xef, 0xc4,
+ 0x41, 0xb2, 0xe6, 0x13, 0xa2, 0x0a, 0x74, 0x3f, 0xdf, 0x97, 0x36, 0xb0,
+ 0x76, 0x2b, 0xfd, 0x93, 0x68, 0xed, 0x20, 0x22, 0x81, 0xb3, 0x55, 0x15,
+ 0xb6, 0x10, 0x4c, 0xfd, 0xdd, 0xe1, 0x48, 0x39, 0xcf, 0xd7, 0x7e, 0xa2,
+ 0xbd, 0x97, 0xe6, 0xf3, 0xad, 0xed, 0x8c, 0x64, 0x29, 0x0e, 0x5a, 0x59,
+ 0x19, 0xfe, 0x94, 0x6c, 0x3c, 0x70, 0x2f, 0x51, 0xd7, 0x3e, 0xd7, 0xce,
+ 0x4b, 0xc9, 0xfe, 0x9f, 0xc2, 0xac, 0x31, 0xef, 0xf5, 0xfb, 0xda, 0x90,
+ 0x96, 0x45, 0x53, 0x51, 0xb7, 0x05, 0x0d, 0x95, 0xd6, 0x8a, 0x5e, 0xbe,
+ 0xf2, 0x5a, 0xb9, 0xa6, 0x94, 0x10, 0x4d, 0xbb, 0x16, 0x82, 0x42, 0xf2,
+ 0xfd, 0xce, 0x9a, 0xe9, 0xc8, 0x9e, 0x2c, 0x01, 0xb5, 0x99, 0x5f, 0x4d,
+ 0x8d, 0x8a, 0xab, 0xed, 0x68, 0xcd, 0x0a, 0x2b, 0xc5, 0xf7, 0x1b, 0x0e,
+ 0x7b, 0x7c, 0x15, 0x1a, 0xf1, 0xef, 0x49, 0x27, 0xff, 0x0d, 0xd3, 0x67,
+ 0xd7, 0x37, 0x3f, 0x0b, 0x4b, 0xe5, 0xd5, 0x1d, 0x63, 0xb9, 0x42, 0x6a,
+ 0xd8, 0x19, 0x15, 0x99, 0x53, 0x87, 0xd4, 0xbc, 0xb9, 0x03, 0xda, 0xc2,
+ 0x8d, 0xd4, 0xfd, 0x74, 0xf9, 0xfd, 0xf8, 0xf8, 0x11, 0x6d, 0xeb, 0xf9,
+ 0xf1, 0xd8, 0xc7, 0x11, 0xaf, 0xa9, 0x67, 0x2e, 0xd5, 0x79, 0x7d, 0x7d,
+ 0xf8, 0x72, 0x7c, 0x3e, 0x0a, 0x96, 0x68, 0xd6, 0x18, 0x26, 0x86, 0x30,
+ 0xc1, 0x30, 0x13, 0x1e, 0x1f, 0x9b, 0xb5, 0xde, 0x01, 0x26, 0x50, 0xea,
+ 0xc7, 0x30, 0x39, 0x9e, 0x9b, 0x8e, 0x0e, 0x3b, 0x37, 0xe5, 0x2c, 0xe6,
+ 0x26, 0xab, 0xc2, 0xd4, 0x0b, 0xb3, 0x77, 0x93, 0x7c, 0x8e, 0x15, 0x98,
+ 0x79, 0x19, 0x6b, 0x68, 0x21, 0xc9, 0xe1, 0x54, 0x8d, 0x5c, 0xce, 0x91,
+ 0x52, 0x86, 0xcf, 0xb4, 0xfd, 0x10, 0x48, 0xbc, 0x94, 0x12, 0xed, 0xfe,
+ 0x82, 0x4b, 0xa3, 0x77, 0x94, 0xe8, 0x83, 0x63, 0xa7, 0xaa, 0x7b, 0xc5,
+ 0xc5, 0x60, 0xb6, 0x22, 0x83, 0x71, 0x5c, 0x00, 0x56, 0x11, 0xa6, 0xb5,
+ 0xa6, 0xf5, 0x47, 0x4d, 0xee, 0xa7, 0xa6, 0x82, 0x48, 0x9e, 0x59, 0x9b,
+ 0x5b, 0xd7, 0xb5, 0x84, 0xcc, 0x41, 0x53, 0xed, 0x2f, 0xaa, 0x40, 0x82,
+ 0x24, 0x70, 0x38, 0x00, 0x8a, 0x6c, 0xbe, 0xbd, 0xe6, 0xc4, 0x35, 0x42,
+ 0xee, 0x37, 0x3d, 0xc4, 0x68, 0xf1, 0xa6, 0x53, 0xc9, 0xf4, 0x2a, 0x33,
+ 0x42, 0x64, 0xe4, 0x55, 0xb0, 0x3f, 0x78, 0x43, 0x3e, 0x0b, 0x60, 0xce,
+ 0x22, 0xdb, 0xf3, 0x8b, 0x37, 0xe4, 0xf1, 0xe3, 0x70, 0x43, 0xaa, 0xec,
+ 0xaf, 0xb3, 0x18, 0x28, 0x34, 0xe5, 0xda, 0x53, 0x9a, 0x3f, 0xa7, 0xc7,
+ 0x9f, 0x31, 0xb2, 0x35, 0xa6, 0xba, 0x83, 0xde, 0x2e, 0x9a, 0x2f, 0xec,
+ 0x40, 0xc3, 0x60, 0x61, 0x23, 0x00, 0x19, 0xf6, 0x62, 0x56, 0x70, 0x41,
+ 0xaf, 0xf7, 0x5e, 0x1e, 0x87, 0x3d, 0x90, 0x2c, 0x4e, 0xf9, 0xc8, 0x5a,
+ 0x0d, 0x12, 0xd9, 0x9c, 0xd4, 0x21, 0x04, 0xa5, 0x74, 0xf6, 0xf2, 0x0c,
+ 0x87, 0x17, 0xcd, 0xd2, 0x2e, 0x6c, 0x2d, 0x75, 0xec, 0x06, 0x9b, 0xd1,
+ 0xb3, 0xf4, 0xf3, 0x4a, 0x3b, 0xa5, 0xac, 0x5f, 0x7d, 0x98, 0x55, 0x86,
+ 0xf6, 0x23, 0x9c, 0x30, 0x4a, 0xe8, 0x4c, 0xd2, 0x41, 0xb9, 0x77, 0x1b,
+ 0x5c, 0x69, 0x9e, 0x6c, 0x44, 0xc8, 0x3c, 0x68, 0x5b, 0x5a, 0x91, 0x51,
+ 0xbb, 0x60, 0xe1, 0xe0, 0x1a, 0x1d, 0x95, 0x2d, 0xe0, 0x12, 0x32, 0x4a,
+ 0xdc, 0x0e, 0x6e, 0x7b, 0xd1, 0x18, 0x6b, 0xfe, 0x3a, 0x9b, 0x53, 0x21,
+ 0x6b, 0x56, 0x4c, 0xab, 0xbb, 0xa5, 0x8f, 0x62, 0x3e, 0xfb, 0x67, 0xf6,
+ 0x5f, 0x2b, 0x20, 0xa4, 0x9f, 0xf7, 0x9e, 0x61, 0x76, 0xdb, 0xa1, 0xfe,
+ 0x85, 0x7a, 0x44, 0x19, 0x8f, 0x71, 0x17, 0x21, 0x85, 0x1b, 0x3f, 0x27,
+ 0x1a, 0xb6, 0x8c, 0x72, 0x6e, 0x86, 0x0a, 0x94, 0x92, 0xf2, 0x8b, 0xd0,
+ 0x81, 0x8c, 0xcd, 0xb5, 0x19, 0xcf, 0x0f, 0x3e, 0xf9, 0xfd, 0x01, 0x6f,
+ 0xd7, 0xf5, 0x7e, 0xc0, 0x13, 0xc6, 0xc7, 0xdb, 0xc9, 0x1b, 0xf8, 0x68,
+ 0xda, 0x4e, 0x78, 0x5c, 0x57, 0xed, 0xd3, 0xb4, 0xcf, 0x8e, 0x28, 0xbf,
+ 0x55, 0xab, 0xc8, 0xe3, 0x34, 0x48, 0x71, 0xa2, 0x0a, 0x58, 0x7a, 0xdb,
+ 0xd5, 0x22, 0x8e, 0x0d, 0x6b, 0xe5, 0x04, 0x2e, 0xf5, 0x2c, 0x4d, 0x56,
+ 0xb9, 0x00, 0x2d, 0x40, 0xfe, 0x99, 0xa7, 0xaf, 0xf7, 0xfb, 0x10, 0xb9,
+ 0x47, 0xf2, 0x6b, 0x2a, 0xd6, 0x9d, 0x65, 0x04, 0x6a, 0xad, 0x98, 0x81,
+ 0x89, 0xed, 0xd8, 0x4d, 0xd9, 0x8b, 0x70, 0x4f, 0x3f, 0xdd, 0x7b, 0xf6,
+ 0x74, 0x7b, 0x5d, 0x8b, 0x62, 0x34, 0x31, 0x41, 0x11, 0x22, 0x93, 0x10,
+ 0xfe, 0xb5, 0x3f, 0xf2, 0x37, 0x28, 0x71, 0x4d, 0x1e, 0xa4, 0x98, 0x34,
+ 0x94, 0x70, 0x46, 0xdc, 0x80, 0x24, 0x68, 0x23, 0x2c, 0xee, 0x3d, 0x88,
+ 0x85, 0xd7, 0xd5, 0x94, 0xf6, 0x96, 0x13, 0x29, 0x77, 0x8d, 0xc2, 0x00,
+ 0x92, 0x9b, 0x8c, 0xc4, 0xe1, 0x23, 0x9d, 0x03, 0x4b, 0x4f, 0xbf, 0x4f,
+ 0x21, 0x4f, 0x96, 0xfe, 0x3e, 0x6a, 0xff, 0xcb, 0x0f, 0x66, 0xba, 0x01,
+ 0x7e, 0xcd, 0x29, 0x3f, 0xfa, 0x17, 0x9c, 0xf2, 0xa3, 0xf5, 0xa7, 0xfc,
+ 0xe8, 0xa1, 0xa7, 0xfc, 0xec, 0xc9, 0xd3, 0xcf, 0x7f, 0xc5, 0x29, 0x7b,
+ 0x3b, 0xfc, 0x5f, 0x76, 0xca, 0x1e, 0xa5, 0xfd, 0xba, 0x53, 0x96, 0xa4,
+ 0x90, 0x6e, 0xe1, 0x99, 0x24, 0xbf, 0x50, 0xfa, 0x1e, 0x20, 0x03, 0x38,
+ 0x5d, 0x9f, 0x9f, 0x0d, 0xeb, 0x49, 0xa4, 0x0b, 0x1f, 0x77, 0xff, 0x82,
+ 0x1e, 0x16, 0x31, 0xb2, 0x1d, 0x84, 0x02, 0x69, 0xb8, 0xcb, 0x39, 0xba,
+ 0x48, 0x6d, 0x0e, 0x37, 0xd5, 0x3d, 0xa2, 0x65, 0x62, 0x8a, 0xff, 0xc3,
+ 0x9f, 0x33, 0x47, 0xfd, 0x2f, 0x44, 0x8f, 0x0a, 0x73, 0x66, 0xbc, 0xac,
+ 0xa7, 0xf6, 0xa6, 0xdd, 0xcd, 0x8d, 0x99, 0xc0, 0x39, 0x48, 0xd1, 0xec,
+ 0x37, 0x41, 0xb8, 0xb6, 0x08, 0x36, 0xea, 0xa8, 0x99, 0x18, 0xa5, 0xd0,
+ 0x48, 0x81, 0x02, 0x49, 0x3d, 0x77, 0xf3, 0x4c, 0x0a, 0x25, 0xb1, 0x68,
+ 0x50, 0x06, 0x4c, 0xf9, 0xae, 0x4b, 0x58, 0x9a, 0xa6, 0x74, 0x32, 0x96,
+ 0x6c, 0xdb, 0xf5, 0xb2, 0x3d, 0x19, 0xee, 0x91, 0x69, 0x6e, 0xc9, 0x94,
+ 0x70, 0x9b, 0xb2, 0x45, 0x04, 0xd4, 0x64, 0x0d, 0xa7, 0x7f, 0xda, 0x4d,
+ 0xb8, 0xeb, 0x69, 0xd2, 0x12, 0x4b, 0x40, 0xa3, 0x86, 0x3d, 0xed, 0x8e,
+ 0x3d, 0x9c, 0x0b, 0xcb, 0xc8, 0x61, 0xa4, 0xf0, 0x77, 0xdb, 0xe0, 0x48,
+ 0x03, 0x9d, 0xa0, 0xe0, 0x12, 0x32, 0x5d, 0x16, 0xd4, 0xee, 0x3f, 0xe3,
+ 0xb2, 0x09, 0x75, 0x67, 0xee, 0xaf, 0x0d, 0x40, 0x72, 0x6d, 0x63, 0x5b,
+ 0x89, 0x78, 0x79, 0x72, 0xaf, 0x71, 0xba, 0xb3, 0xd5, 0x62, 0xa9, 0xa0,
+ 0x6f, 0xa8, 0xe2, 0xc8, 0xa9, 0x5c, 0x48, 0x0a, 0xbf, 0x63, 0x3d, 0xd2,
+ 0xd3, 0xca, 0xf3, 0x32, 0x49, 0x72, 0x1b, 0x7b, 0xac, 0xf4, 0xac, 0x04,
+ 0xc0, 0x80, 0x17, 0x40, 0x89, 0x6b, 0x54, 0x32, 0x01, 0x1c, 0xa9, 0xec,
+ 0x22, 0x48, 0x3d, 0xa0, 0x16, 0x0a, 0x14, 0x9d, 0xcc, 0x26, 0xab, 0x4b,
+ 0xad, 0x9d, 0xb6, 0x9d, 0xbe, 0xda, 0x54, 0x49, 0x75, 0x26, 0x40, 0x53,
+ 0xc9, 0xb4, 0xf3, 0x7a, 0x08, 0x22, 0xd1, 0xa0, 0xc7, 0xdd, 0x74, 0x5d,
+ 0x72, 0x58, 0xb0, 0x70, 0x22, 0xf6, 0xd6, 0xca, 0xe9, 0x27, 0xad, 0x0e,
+ 0x4c, 0x91, 0x1e, 0x42, 0x3e, 0xa9, 0x34, 0xd3, 0xe5, 0xf0, 0x22, 0x05,
+ 0x04, 0x63, 0x50, 0x40, 0x2b, 0x09, 0xa1, 0x72, 0x05, 0xce, 0x5f, 0x9d,
+ 0x26, 0x6f, 0x52, 0xe9, 0xbb, 0x92, 0x6c, 0x19, 0x0e, 0xfc, 0xec, 0xf1,
+ 0xde, 0xa3, 0xed, 0xb5, 0x7a, 0x78, 0x1b, 0x56, 0x88, 0xbe, 0x55, 0x94,
+ 0xb1, 0xc4, 0xdc, 0xf3, 0x55, 0x55, 0x24, 0x8a, 0x57, 0x62, 0xbe, 0xf4,
+ 0xe1, 0xdd, 0xc9, 0xeb, 0xc3, 0xe3, 0x97, 0x7f, 0xb2, 0xd5, 0xf1, 0xd8,
+ 0x04, 0xad, 0xb0, 0xfc, 0x60, 0xcc, 0xd7, 0xbb, 0x0f, 0x75, 0x66, 0xe6,
+ 0xdc, 0x6c, 0x3d, 0xda, 0x46, 0x85, 0x52, 0xd0, 0x1d, 0xef, 0x32, 0x6b,
+ 0x63, 0x0a, 0x70, 0x9e, 0xf4, 0x1a, 0x60, 0x1c, 0xeb, 0xa0, 0xdc, 0x1d,
+ 0xed, 0x4b, 0x77, 0x05, 0x81, 0x87, 0x77, 0x3c, 0xcb, 0xeb, 0xf4, 0x90,
+ 0x0a, 0x7c, 0x16, 0xd7, 0x20, 0x86, 0x95, 0x28, 0x00, 0x30, 0xc8, 0xa7,
+ 0x39, 0xac, 0x15, 0xb9, 0xd6, 0x39, 0xc2, 0xf0, 0x17, 0x6d, 0xf8, 0x3d,
+ 0x2a, 0x52, 0xc4, 0x2f, 0xd6, 0x87, 0x95, 0xdb, 0xbc, 0xbf, 0x21, 0x61,
+ 0x91, 0xcd, 0x8b, 0xac, 0x19, 0xca, 0xc4, 0x5e, 0x98, 0x3f, 0xbf, 0xbc,
+ 0x4e, 0xe7, 0x41, 0xe9, 0x2b, 0x9a, 0xcb, 0x29, 0x65, 0x5a, 0x56, 0x84,
+ 0x37, 0xbd, 0xce, 0x12, 0x63, 0xdb, 0x62, 0x41, 0x9f, 0x34, 0x57, 0x25,
+ 0xe8, 0xa4, 0x70, 0x7e, 0xfe, 0xa7, 0xd3, 0xc3, 0x2f, 0x5f, 0x80, 0x91,
+ 0xfd, 0x11, 0x39, 0xf6, 0x75, 0x8b, 0xaf, 0x25, 0x68, 0x66, 0x1d, 0xac,
+ 0xe1, 0xc7, 0xd7, 0x47, 0xe3, 0xd3, 0xe3, 0x93, 0x57, 0x5f, 0xbe, 0xf8,
+ 0x11, 0x36, 0xa5, 0x11, 0x1e, 0x77, 0xde, 0xbb, 0xf6, 0x67, 0x16, 0x2d,
+ 0x3e, 0x04, 0x4e, 0x38, 0xfc, 0xe1, 0xc3, 0xe1, 0xbb, 0xef, 0xbf, 0x7c,
+ 0x71, 0x9d, 0x56, 0x03, 0xac, 0x8f, 0xdf, 0xee, 0xe9, 0xdd, 0xd8, 0x22,
+ 0x35, 0xa8, 0xe7, 0x93, 0xf9, 0xc7, 0x3a, 0xff, 0x5b, 0x96, 0x98, 0xd7,
+ 0xe7, 0xab, 0x10, 0xae, 0xf9, 0x5c, 0xfa, 0x01, 0x19, 0xd9, 0x0d, 0x73,
+ 0xe8, 0xeb, 0xe3, 0xef, 0x00, 0x09, 0x6a, 0xfd, 0xa4, 0x0b, 0x6e, 0x40,
+ 0x93, 0xfc, 0xf1, 0xc9, 0xde, 0xfe, 0xb6, 0x6b, 0x7b, 0x48, 0x90, 0xc2,
+ 0x66, 0xc6, 0x1f, 0x83, 0xea, 0x90, 0xbf, 0x49, 0x9d, 0x8b, 0xeb, 0x02,
+ 0xd2, 0x38, 0x8b, 0x8a, 0x04, 0x86, 0xba, 0x9c, 0x08, 0x15, 0x80, 0xf2,
+ 0x5f, 0xd1, 0x35, 0xb2, 0x22, 0x78, 0xa5, 0xc0, 0xe3, 0x76, 0xfe, 0xc6,
+ 0xc3, 0xf2, 0xf8, 0xda, 0x91, 0x9e, 0x99, 0x8e, 0x78, 0xed, 0xd6, 0xca,
+ 0xc7, 0x4f, 0x18, 0xcb, 0xe9, 0x9a, 0x94, 0xb4, 0xd9, 0x46, 0xa4, 0x09,
+ 0xfd, 0xc4, 0xf7, 0xd9, 0xcb, 0xf1, 0xa1, 0x4a, 0x97, 0x92, 0x31, 0xe8,
+ 0x68, 0x95, 0x4a, 0x78, 0x5a, 0x3a, 0x7d, 0x8f, 0x0f, 0x2f, 0x5f, 0xa0,
+ 0xc6, 0x32, 0xab, 0x13, 0xf5, 0xef, 0x78, 0xde, 0x9b, 0x79, 0x76, 0x99,
+ 0x4e, 0xef, 0x2c, 0x92, 0x2e, 0x1d, 0xc8, 0xac, 0x7b, 0x3b, 0xc9, 0xc3,
+ 0x37, 0x85, 0x31, 0x67, 0x44, 0xf0, 0x25, 0xb1, 0x67, 0x86, 0x8c, 0x30,
+ 0xd7, 0xd5, 0x3a, 0x7d, 0x78, 0x6a, 0x16, 0x14, 0x43, 0xc5, 0x25, 0x36,
+ 0xb5, 0x2b, 0x9d, 0xdb, 0x5b, 0xdc, 0xa1, 0x3e, 0x90, 0x0d, 0x35, 0x65,
+ 0x5d, 0xbb, 0xa7, 0x8f, 0xdb, 0x1e, 0xf3, 0xbf, 0xd1, 0x25, 0x07, 0xda,
+ 0x10, 0x39, 0x65, 0x5f, 0xe0, 0xaf, 0x71, 0xbc, 0x71, 0xea, 0x53, 0x44,
+ 0x6e, 0x0b, 0xee, 0xbb, 0xcb, 0xe0, 0xee, 0x58, 0xb6, 0xc5, 0x89, 0x93,
+ 0xf6, 0x1d, 0x80, 0xad, 0x6e, 0x9c, 0x3b, 0x3d, 0x8e, 0xe5, 0x65, 0x9d,
+ 0xda, 0x86, 0x3c, 0x33, 0xdb, 0xf2, 0xa7, 0x67, 0x3c, 0x5b, 0x88, 0x88,
+ 0xdf, 0x47, 0x1c, 0x9b, 0x92, 0x8c, 0xf0, 0x02, 0x63, 0x81, 0x25, 0x42,
+ 0x27, 0x31, 0x3b, 0xf5, 0x47, 0x8d, 0xfa, 0x50, 0x87, 0x97, 0x52, 0x10,
+ 0xa6, 0xe8, 0x21, 0x46, 0xcc, 0xa8, 0x43, 0xb8, 0x01, 0xce, 0x6e, 0x57,
+ 0xc7, 0x01, 0x27, 0x68, 0x20, 0xa4, 0x66, 0xe1, 0x73, 0xcd, 0x34, 0x6b,
+ 0xd5, 0x4a, 0x51, 0xec, 0x45, 0x66, 0xba, 0x03, 0xd8, 0x8c, 0xd4, 0x5c,
+ 0x7b, 0xd5, 0x49, 0x0a, 0x7c, 0xcc, 0x2b, 0x93, 0x74, 0x04, 0x9a, 0xd0,
+ 0xd6, 0x02, 0x0b, 0x11, 0x1c, 0x76, 0x06, 0xbd, 0xef, 0xeb, 0x5c, 0xdd,
+ 0x91, 0x52, 0x66, 0x4c, 0x8c, 0x20, 0x12, 0x8a, 0x64, 0x12, 0x97, 0x9f,
+ 0x77, 0x76, 0x23, 0x52, 0x65, 0xd9, 0x70, 0x12, 0x7f, 0x57, 0x44, 0x01,
+ 0x3c, 0x59, 0x53, 0xe7, 0x5b, 0x23, 0xf8, 0x6d, 0xb9, 0xb6, 0x86, 0xae,
+ 0xa7, 0x51, 0xde, 0x58, 0x95, 0x2d, 0x02, 0x2d, 0x62, 0x01, 0x9e, 0x2d,
+ 0x40, 0x15, 0xbb, 0x3e, 0x95, 0x3e, 0x84, 0x22, 0xf0, 0xb1, 0x1d, 0x2e,
+ 0x71, 0x53, 0x16, 0x94, 0x47, 0x4a, 0x6c, 0x83, 0xc1, 0x8a, 0xec, 0xc6,
+ 0x1f, 0xcc, 0xd9, 0x1d, 0x76, 0xc0, 0x4f, 0xe9, 0xed, 0x36, 0x36, 0x13,
+ 0xea, 0x72, 0x92, 0x17, 0xdf, 0x1f, 0x9e, 0x8d, 0x8f, 0x4e, 0xde, 0xfd,
+ 0x31, 0x6a, 0x0e, 0xcb, 0x2f, 0x6d, 0xc7, 0x2b, 0xad, 0xe8, 0x73, 0x6d,
+ 0x87, 0xe0, 0x05, 0x53, 0x5f, 0x0b, 0x77, 0xaf, 0xc9, 0x0b, 0x3c, 0x12,
+ 0x74, 0x33, 0x9a, 0x66, 0xcb, 0x86, 0xf4, 0x25, 0xb5, 0xa5, 0x5d, 0x67,
+ 0x45, 0xea, 0x77, 0x41, 0x36, 0xdc, 0xee, 0x40, 0xff, 0xb6, 0x67, 0xff,
+ 0xb6, 0x1f, 0x81, 0xb3, 0xe2, 0xdf, 0x3c, 0x0a, 0x36, 0x28, 0x9e, 0xb0,
+ 0xe3, 0xc5, 0xcb, 0x57, 0x4b, 0xae, 0x06, 0x03, 0x68, 0x03, 0x03, 0xbc,
+ 0xf8, 0x0b, 0x08, 0xf0, 0xe9, 0xd1, 0xf9, 0xd4, 0x7f, 0xd1, 0x3c, 0x7c,
+ 0xbd, 0xe7, 0x55, 0xb0, 0xd8, 0xe7, 0xf6, 0x62, 0xcf, 0xed, 0x85, 0xcf,
+ 0xed, 0xc7, 0x9e, 0xdb, 0x0f, 0x9f, 0x7b, 0x14, 0x7b, 0xce, 0x5b, 0xaf,
+ 0x67, 0xc6, 0xcb, 0xce, 0xad, 0xb3, 0x8c, 0x5b, 0xff, 0x7a, 0x34, 0x72,
+ 0xc7, 0xff, 0x99, 0xf5, 0x56, 0x74, 0x7b, 0x76, 0x7a, 0x86, 0xbd, 0xda,
+ 0xf5, 0xfd, 0x66, 0xfd, 0xcb, 0x4e, 0x4b, 0x70, 0xa3, 0x26, 0x76, 0x5c,
+ 0xcc, 0xe6, 0x7b, 0x7b, 0x8f, 0x86, 0xd3, 0x7c, 0x79, 0x05, 0xa9, 0xf3,
+ 0x42, 0x5b, 0x58, 0x61, 0xf3, 0xb1, 0x58, 0xf9, 0xc5, 0x0a, 0x26, 0x79,
+ 0xa8, 0x87, 0x1c, 0x8f, 0xb7, 0x13, 0x0f, 0x97, 0x45, 0xa0, 0x08, 0xe9,
+ 0x95, 0x84, 0xdf, 0x71, 0xa8, 0x2c, 0xa1, 0x83, 0x39, 0x28, 0x75, 0xb1,
+ 0xee, 0x1b, 0xf3, 0x9e, 0x4c, 0x80, 0x49, 0x57, 0x67, 0xa5, 0xd3, 0x94,
+ 0xb1, 0x19, 0x3d, 0x54, 0x43, 0xef, 0x5d, 0xd7, 0x2e, 0x61, 0xf9, 0xeb,
+ 0x2b, 0x8a, 0xe5, 0x85, 0x1e, 0x54, 0x45, 0x67, 0x75, 0x3c, 0x9c, 0x55,
+ 0xb9, 0xcb, 0x22, 0x26, 0x2a, 0xdf, 0x9f, 0x1d, 0x07, 0xaa, 0xa5, 0x6d,
+ 0xc7, 0x4e, 0xad, 0x96, 0xaf, 0xd2, 0xdb, 0xdb, 0x51, 0x9d, 0xed, 0x18,
+ 0x7e, 0x52, 0xef, 0x90, 0xbf, 0x57, 0x3e, 0x7d, 0xd5, 0x2c, 0xe6, 0x9f,
+ 0x96, 0x61, 0x20, 0x1d, 0x0d, 0x8a, 0xac, 0x11, 0xb7, 0xe6, 0xbf, 0x7f,
+ 0x0c, 0x0b, 0x4b, 0x69, 0xc5, 0xdd, 0xa4, 0x35, 0x68, 0xbe, 0x28, 0x78,
+ 0xe2, 0x86, 0xdc, 0xfc, 0x35, 0xdb, 0x5f, 0x50, 0x9b, 0xbd, 0xf7, 0x94,
+ 0xff, 0x12, 0x8f, 0xd8, 0x18, 0x9f, 0x9d, 0x6e, 0x0c, 0x24, 0x52, 0x6d,
+ 0xbe, 0x30, 0x34, 0xff, 0x4e, 0xc8, 0xc2, 0x42, 0x0b, 0x8d, 0x27, 0x8f,
+ 0x25, 0xa9, 0x8c, 0xe7, 0xc8, 0x8d, 0xa4, 0xc2, 0xd0, 0x09, 0xfd, 0xd2,
+ 0x25, 0xd6, 0x55, 0xad, 0x66, 0x37, 0xc6, 0xf6, 0x69, 0x2f, 0x90, 0xb3,
+ 0x5d, 0x06, 0x9c, 0xc1, 0xb0, 0x46, 0xa5, 0x71, 0xd8, 0x6e, 0x68, 0x72,
+ 0x8e, 0x79, 0x8e, 0x3a, 0xde, 0xf1, 0xb2, 0xfa, 0x28, 0x78, 0xff, 0xe2,
+ 0xe3, 0xa7, 0x8b, 0x15, 0xb4, 0x60, 0x6d, 0x5d, 0x34, 0xeb, 0x16, 0x14,
+ 0xdf, 0xa2, 0x5d, 0xb3, 0x6c, 0xd8, 0x20, 0x91, 0x3b, 0xd0, 0xd7, 0x67,
+ 0x54, 0x5a, 0x7f, 0x42, 0x3b, 0xf9, 0xa6, 0x58, 0xe1, 0x50, 0x68, 0x20,
+ 0x1d, 0x47, 0x86, 0xb9, 0x07, 0x8f, 0xe2, 0x71, 0xe7, 0xf4, 0x75, 0xf3,
+ 0x22, 0xc7, 0xee, 0x3a, 0x8b, 0xd3, 0x21, 0x91, 0x3e, 0xaf, 0x90, 0x7b,
+ 0x11, 0x92, 0x10, 0x58, 0xac, 0xde, 0x4a, 0x2a, 0xc5, 0x8f, 0xf0, 0x4e,
+ 0x64, 0xa4, 0x81, 0x27, 0x61, 0x51, 0xee, 0xac, 0x3d, 0xcc, 0xfb, 0xfb,
+ 0x17, 0xe4, 0xaf, 0x87, 0xde, 0x8e, 0x26, 0x1b, 0x63, 0x49, 0x9a, 0x8c,
+ 0xf9, 0xa0, 0x05, 0x39, 0x40, 0xb3, 0xde, 0x25, 0x69, 0x70, 0xbe, 0xbd,
+ 0x28, 0xb7, 0x2a, 0x6f, 0x59, 0x8e, 0x4a, 0xb1, 0xb4, 0x80, 0xf4, 0x1e,
+ 0xb4, 0xd0, 0xd6, 0x4a, 0x21, 0x1e, 0xa2, 0x4c, 0x35, 0xe2, 0xed, 0xf6,
+ 0xc4, 0x21, 0x89, 0x3f, 0xb3, 0x7a, 0xd6, 0x8a, 0x19, 0x3e, 0x63, 0x4d,
+ 0x45, 0x01, 0x85, 0xb7, 0xc4, 0xed, 0x8d, 0x51, 0xb4, 0x57, 0xc1, 0x9a,
+ 0x3a, 0xd8, 0x50, 0x48, 0x40, 0x76, 0xc5, 0xf9, 0xff, 0xbd, 0x73, 0xdd,
+ 0xeb, 0xcc, 0xf5, 0x5f, 0x30, 0xd5, 0xfd, 0x5f, 0xb7, 0xab, 0xfb, 0xff,
+ 0x05, 0xbb, 0xfa, 0xe8, 0x57, 0xee, 0xea, 0xa3, 0xdf, 0x7c, 0x57, 0x5d,
+ 0x03, 0x65, 0x95, 0x8f, 0x79, 0xbb, 0x23, 0x0a, 0x27, 0x5f, 0xa3, 0xf7,
+ 0xee, 0x04, 0xea, 0xa1, 0xa8, 0x09, 0x28, 0x3d, 0xcf, 0xa8, 0x95, 0x6c,
+ 0x67, 0xe5, 0x8d, 0x45, 0xcd, 0xb0, 0xf8, 0xef, 0xe2, 0x78, 0x16, 0x2c,
+ 0x5e, 0x30, 0xfb, 0xaf, 0x4b, 0xd8, 0x4d, 0x86, 0x27, 0x0e, 0x92, 0x77,
+ 0xe3, 0x31, 0x27, 0x1b, 0x8c, 0x29, 0x60, 0xd2, 0xb5, 0xa4, 0xe1, 0x82,
+ 0x20, 0xcd, 0x66, 0x0b, 0x02, 0xf3, 0xc4, 0xcc, 0xd0, 0x11, 0x16, 0xbf,
+ 0xb7, 0x48, 0xa7, 0xf8, 0xf1, 0xee, 0x68, 0xcf, 0x6d, 0xce, 0xf6, 0x2f,
+ 0x80, 0xb9, 0x71, 0xd1, 0x8c, 0xa8, 0xce, 0x1d, 0x01, 0xa4, 0x45, 0x7c,
+ 0x16, 0xf2, 0xb9, 0x7d, 0x34, 0xb7, 0x42, 0x3d, 0xaa, 0xce, 0xf4, 0x43,
+ 0x9f, 0x52, 0x7f, 0x1b, 0x09, 0x48, 0x61, 0x0c, 0xeb, 0x36, 0xa1, 0xc8,
+ 0x2b, 0xa3, 0x34, 0x84, 0x17, 0xbf, 0xeb, 0xb2, 0xe7, 0x16, 0xd4, 0xbf,
+ 0x34, 0x9e, 0xe4, 0xc5, 0x6e, 0xfe, 0xcb, 0xe2, 0x49, 0x0f, 0xd2, 0x8a,
+ 0xfd, 0x2b, 0x53, 0x0d, 0xb5, 0x71, 0x4c, 0x1c, 0x9d, 0xd6, 0xb9, 0x13,
+ 0x90, 0xff, 0x4f, 0xc0, 0x55, 0x33, 0x26, 0x1d, 0xc4, 0xd7, 0x0f, 0xe5,
+ 0x5d, 0xe7, 0xd5, 0xe7, 0xac, 0x8d, 0x10, 0x5d, 0xa2, 0xd4, 0x5c, 0x5b,
+ 0x8b, 0xa7, 0xa0, 0x05, 0xed, 0xbc, 0xca, 0x9a, 0x29, 0x6e, 0x55, 0xe8,
+ 0x67, 0x5c, 0x65, 0x38, 0x21, 0xbb, 0x84, 0x7d, 0x8b, 0x33, 0xc6, 0xfd,
+ 0xc8, 0xef, 0x93, 0x11, 0x4f, 0xdb, 0xeb, 0x4d, 0xa7, 0xd9, 0x30, 0xad,
+ 0xa7, 0x79, 0x1e, 0x6f, 0x5c, 0xa7, 0xd1, 0x1f, 0x84, 0xdb, 0xc9, 0x6f,
+ 0x87, 0x1e, 0xd9, 0xf0, 0xb4, 0x6b, 0x1f, 0xda, 0xbc, 0x10, 0x24, 0x0c,
+ 0x4c, 0xb7, 0x5c, 0x35, 0x97, 0xa5, 0xba, 0xf0, 0x06, 0x11, 0x77, 0x00,
+ 0x7c, 0xf1, 0x74, 0xc4, 0xe6, 0x74, 0xa6, 0x55, 0xbe, 0x24, 0x94, 0x3d,
+ 0xbf, 0xe9, 0xcd, 0xc0, 0xf6, 0x84, 0x25, 0x13, 0x5b, 0x62, 0x26, 0xdc,
+ 0x22, 0xf5, 0x7d, 0x80, 0x40, 0xb0, 0x31, 0xdc, 0x80, 0x33, 0xc3, 0xf6,
+ 0x0a, 0x31, 0xef, 0x02, 0x1b, 0xd5, 0x8b, 0x56, 0x70, 0xbf, 0xed, 0xfe,
+ 0xe0, 0x9b, 0x3a, 0x2f, 0x0d, 0x09, 0xdd, 0x29, 0xfe, 0x26, 0xc1, 0xa1,
+ 0x6b, 0x50, 0x02, 0x2a, 0xa2, 0xb9, 0x83, 0x70, 0xaa, 0x95, 0x52, 0x9f,
+ 0x7f, 0x95, 0xdd, 0x72, 0xf5, 0x58, 0xa8, 0x6c, 0x8a, 0x7a, 0x7b, 0x45,
+ 0xdd, 0x69, 0xf0, 0xec, 0xcb, 0xf1, 0xab, 0xa3, 0xa3, 0x56, 0xad, 0x19,
+ 0x36, 0x8f, 0xc1, 0xfb, 0x08, 0x10, 0xa0, 0x06, 0x88, 0x21, 0x42, 0x35,
+ 0xb1, 0xd8, 0x1b, 0x77, 0xc2, 0x32, 0xd7, 0x8f, 0xfc, 0xad, 0x86, 0x13,
+ 0xe4, 0xda, 0xa7, 0x2c, 0xe5, 0xbc, 0x8e, 0x55, 0x61, 0xa6, 0x99, 0x03,
+ 0x5a, 0xe6, 0x6a, 0xb5, 0x48, 0x8b, 0x4f, 0x0f, 0x9e, 0x11, 0x4f, 0xe1,
+ 0x96, 0xdd, 0xe2, 0x7b, 0xe5, 0xc7, 0x77, 0x42, 0x5a, 0x8b, 0xc0, 0x8e,
+ 0x9f, 0x56, 0xd2, 0x94, 0x8a, 0x71, 0x62, 0x04, 0x37, 0x1c, 0x5d, 0x93,
+ 0x81, 0xe2, 0xc5, 0x23, 0x9b, 0xb5, 0x6a, 0xc8, 0x88, 0x21, 0x79, 0x85,
+ 0x91, 0x44, 0x9a, 0x53, 0x8b, 0xf3, 0x7c, 0x6d, 0x8d, 0xcc, 0x5e, 0x57,
+ 0x54, 0xd2, 0x47, 0xfe, 0x95, 0x37, 0xc0, 0xbf, 0x00, 0xf7, 0xd2, 0xbf,
+ 0x5c, 0x80, 0x9e, 0x1b, 0x40, 0xf9, 0xf1, 0xae, 0xc5, 0xce, 0xfd, 0x97,
+ 0x80, 0xfc, 0x0b, 0x1b, 0xbf, 0xdf, 0x88, 0x03, 0xd3, 0x3f, 0xe0, 0x26,
+ 0xb5, 0x60, 0x17, 0xfe, 0xb5, 0x94, 0x16, 0xc1, 0x81, 0xf0, 0x98, 0x98,
+ 0x7f, 0xa6, 0xab, 0x22, 0xbf, 0xa5, 0x34, 0x6e, 0xa3, 0x4a, 0xbc, 0x00,
+ 0x28, 0x7b, 0x0f, 0xe0, 0xf8, 0x2b, 0x56, 0x6c, 0x12, 0xcd, 0x4a, 0xa7,
+ 0x55, 0xbc, 0x37, 0x2f, 0x27, 0xb3, 0x72, 0x81, 0xa8, 0x3e, 0x8f, 0x31,
+ 0xf0, 0x91, 0x5f, 0x89, 0xad, 0x47, 0xb2, 0x02, 0x8a, 0xac, 0x81, 0xe1,
+ 0xb7, 0xd6, 0x9f, 0xdd, 0x8e, 0x11, 0x9c, 0x53, 0x87, 0xa7, 0x25, 0x52,
+ 0x85, 0xd7, 0xf4, 0x0f, 0x65, 0x37, 0xbf, 0x97, 0x98, 0xeb, 0x03, 0x86,
+ 0xc2, 0x7f, 0xed, 0xda, 0x8c, 0x08, 0xfd, 0x88, 0xd4, 0x27, 0xd0, 0xf9,
+ 0x58, 0x02, 0x83, 0xed, 0x8e, 0xe0, 0x7a, 0x8b, 0xe4, 0x5d, 0x7f, 0x24,
+ 0x75, 0xaf, 0x70, 0x41, 0x1b, 0xe9, 0xfb, 0x15, 0xca, 0xee, 0x4e, 0x93,
+ 0x93, 0x91, 0xd7, 0x6f, 0xb1, 0xd5, 0x83, 0x85, 0x50, 0x98, 0xf2, 0x39,
+ 0xc8, 0x7f, 0x47, 0x63, 0x9a, 0xf3, 0x30, 0xe3, 0xd6, 0x35, 0xf6, 0x60,
+ 0x56, 0x87, 0xf2, 0x0e, 0x8a, 0x6b, 0xe0, 0xdf, 0x04, 0xa0, 0xa2, 0xce,
+ 0xaa, 0xf6, 0x22, 0xa4, 0x59, 0x4f, 0x57, 0x7d, 0xf1, 0xa2, 0x4e, 0x57,
+ 0xe8, 0xf5, 0xaa, 0xf3, 0xaa, 0x98, 0x10, 0xdb, 0xdd, 0x7c, 0x35, 0x90,
+ 0xe5, 0x75, 0x2b, 0x88, 0x74, 0x7b, 0x17, 0xfd, 0x4c, 0xd4, 0x28, 0xc6,
+ 0xd5, 0x43, 0x89, 0x0d, 0xe0, 0xd1, 0x91, 0x9d, 0x63, 0x5b, 0x4b, 0xf2,
+ 0xc1, 0x72, 0x53, 0x5a, 0xa9, 0xe4, 0x0b, 0x70, 0x03, 0xf3, 0x79, 0x2b,
+ 0x5b, 0x7a, 0x25, 0x5d, 0xe9, 0xa4, 0x40, 0x63, 0xcb, 0x28, 0xeb, 0xac,
+ 0xb4, 0xf1, 0xe5, 0x01, 0xb4, 0xb9, 0x02, 0xcf, 0xf6, 0x83, 0x92, 0x46,
+ 0x41, 0x5d, 0xda, 0x69, 0x2b, 0xe0, 0x1c, 0x5b, 0xa9, 0x62, 0xb7, 0xc1,
+ 0x43, 0xbe, 0xad, 0x6a, 0xa7, 0xb9, 0xe1, 0x79, 0xe1, 0x93, 0x7b, 0xe0,
+ 0xd3, 0x96, 0xf6, 0x26, 0xc2, 0x96, 0x92, 0x97, 0x82, 0x99, 0x9b, 0xc1,
+ 0xcd, 0xd3, 0xfd, 0xce, 0xc8, 0xff, 0x0e, 0xa7, 0xc8, 0x6f, 0x07, 0x48,
+ 0xeb, 0x77, 0xdd, 0xde, 0xab, 0xf6, 0xdb, 0x98, 0xa7, 0x56, 0x82, 0xca,
+ 0xcc, 0x28, 0xa5, 0x10, 0xf9, 0x94, 0x14, 0x6e, 0x0c, 0x6f, 0x22, 0x95,
+ 0x26, 0xd3, 0x4b, 0x94, 0xd6, 0x4d, 0xf0, 0x79, 0xd2, 0x25, 0x81, 0xf3,
+ 0x2c, 0x85, 0xa3, 0x31, 0x46, 0x9e, 0xac, 0x16, 0x21, 0x1c, 0x06, 0x4e,
+ 0x0b, 0x7c, 0x34, 0xd4, 0xbd, 0x29, 0xda, 0xaa, 0xc3, 0x2f, 0x14, 0x02,
+ 0x47, 0x0b, 0xaf, 0xb3, 0x6d, 0x84, 0x84, 0xce, 0x0a, 0xa5, 0x22, 0xc0,
+ 0xf7, 0xa1, 0xcd, 0x0b, 0x96, 0x70, 0x72, 0x88, 0x37, 0xc2, 0xc1, 0xfe,
+ 0x20, 0xfd, 0x19, 0x72, 0xbf, 0xd7, 0x19, 0xb5, 0x0c, 0x0e, 0xe8, 0x4a,
+ 0x28, 0x4f, 0x80, 0xab, 0xa9, 0xaa, 0x77, 0x24, 0x6d, 0x3c, 0xa0, 0xb4,
+ 0xab, 0x9a, 0x99, 0x6c, 0x5c, 0xce, 0xcb, 0xc9, 0xc4, 0x2c, 0x7c, 0xc3,
+ 0x53, 0x4a, 0xcd, 0x97, 0x03, 0x2f, 0x9a, 0x3f, 0x0f, 0x63, 0x59, 0x5d,
+ 0x52, 0x4c, 0x63, 0xc0, 0xd9, 0x28, 0x02, 0xfd, 0x0c, 0x81, 0xac, 0xe5,
+ 0x53, 0xf2, 0x7d, 0x45, 0x7a, 0x8d, 0xc8, 0x19, 0xc9, 0x8b, 0x15, 0xc2,
+ 0xc0, 0xc2, 0xbc, 0x2c, 0x67, 0xa9, 0x26, 0xc4, 0x4f, 0x75, 0x82, 0x9c,
+ 0x61, 0x94, 0xf4, 0x25, 0xc9, 0xb5, 0x1a, 0x6d, 0x0c, 0xb4, 0xcf, 0x52,
+ 0x5e, 0x87, 0x5e, 0x55, 0xda, 0x85, 0xf6, 0x82, 0x36, 0xfe, 0x8e, 0x3f,
+ 0xf6, 0x06, 0xf8, 0xef, 0xfe, 0x3f, 0x36, 0xc8, 0xf1, 0x7a, 0xb0, 0xb3,
+ 0x73, 0x73, 0x73, 0x33, 0x12, 0x24, 0xf9, 0x91, 0x39, 0xb2, 0xcf, 0xc2,
+ 0x7a, 0x1f, 0xa0, 0x2f, 0xf5, 0x7c, 0xe0, 0x3c, 0xd9, 0xc8, 0x17, 0x97,
+ 0x7f, 0xde, 0x1b, 0xee, 0xed, 0xee, 0xee, 0xfe, 0x3c, 0x5a, 0x62, 0x8b,
+ 0x2f, 0x68, 0x58, 0xf3, 0x5f, 0x7f, 0xd8, 0x1d, 0x9e, 0xc9, 0x4e, 0x14,
+ 0xd0, 0x4e, 0x36, 0xd2, 0x22, 0x37, 0x14, 0x0c, 0x4a, 0xce, 0x84, 0x7c,
+ 0xe0, 0x31, 0x19, 0x8e, 0x1f, 0xa5, 0xfd, 0xd5, 0xb3, 0xdc, 0x1f, 0x08,
+ 0xce, 0xd3, 0x27, 0x8f, 0xf6, 0xf7, 0x13, 0x56, 0x39, 0xb8, 0x28, 0x85,
+ 0x43, 0x98, 0xa8, 0x47, 0x96, 0x06, 0xaa, 0x2c, 0xcb, 0xa6, 0x80, 0x65,
+ 0xaa, 0xb8, 0x3f, 0x63, 0x79, 0xd1, 0x93, 0xc8, 0xc5, 0x11, 0x43, 0x23,
+ 0x28, 0x81, 0x12, 0x57, 0xce, 0xee, 0xdc, 0xc0, 0x86, 0xca, 0x2b, 0xf0,
+ 0x56, 0xee, 0x75, 0xd6, 0x08, 0xc4, 0x04, 0xb4, 0x95, 0x88, 0xd6, 0x66,
+ 0x0b, 0x4c, 0x48, 0xc8, 0x11, 0x08, 0x60, 0x51, 0x4a, 0x1b, 0x4f, 0x8a,
+ 0xd7, 0x5d, 0xac, 0x2a, 0xe9, 0xe1, 0x40, 0xe1, 0xcd, 0x9b, 0xf4, 0xae,
+ 0x25, 0xec, 0xcd, 0x8e, 0xbf, 0x30, 0xff, 0xe9, 0x6b, 0xbc, 0x9d, 0x6a,
+ 0x0f, 0xca, 0x8b, 0xac, 0x99, 0x5e, 0x05, 0x98, 0xb6, 0xc4, 0xbe, 0xa1,
+ 0xba, 0x5f, 0x99, 0xd5, 0x58, 0xc8, 0xd8, 0xbe, 0xfe, 0x56, 0xae, 0x1a,
+ 0xcf, 0x0c, 0x0a, 0x34, 0x73, 0xca, 0x47, 0xe6, 0x76, 0xb7, 0xcc, 0x13,
+ 0x23, 0xca, 0x91, 0xa7, 0xd5, 0x61, 0x2a, 0xc8, 0x14, 0xcb, 0x6b, 0xad,
+ 0x16, 0x9c, 0x5e, 0x65, 0x0b, 0xe1, 0x97, 0x5b, 0x9a, 0x28, 0xb5, 0x21,
+ 0x44, 0xb8, 0x11, 0x8a, 0xb4, 0x8d, 0x0b, 0xf9, 0x8d, 0x59, 0xcc, 0xb6,
+ 0x54, 0xdb, 0x59, 0x29, 0x27, 0xad, 0x1e, 0x2e, 0x57, 0xb0, 0x1a, 0x27,
+ 0xa9, 0x88, 0x13, 0x2d, 0x03, 0xed, 0xcb, 0x67, 0x04, 0x4f, 0xcc, 0x2a,
+ 0x92, 0x62, 0xf0, 0xbf, 0x0c, 0x45, 0xf7, 0x11, 0xa1, 0x4a, 0x61, 0x65,
+ 0x73, 0x63, 0x5f, 0x1f, 0xbd, 0x3a, 0xa7, 0xd2, 0xb7, 0x01, 0x25, 0xc9,
+ 0x0f, 0xa8, 0xde, 0x2d, 0x6c, 0xc3, 0x71, 0x4a, 0xfe, 0x11, 0x22, 0x54,
+ 0x69, 0x52, 0x98, 0xba, 0xc4, 0x1a, 0x87, 0xb1, 0xaa, 0xd5, 0x2b, 0x5e,
+ 0x03, 0x95, 0x48, 0xc6, 0x60, 0x4b, 0x4b, 0xb4, 0xe9, 0x48, 0x8f, 0x9f,
+ 0x8c, 0x76, 0x79, 0x8d, 0xae, 0xc3, 0xa7, 0xd6, 0x67, 0x90, 0x1b, 0xa9,
+ 0x16, 0xb8, 0xcb, 0x34, 0x1e, 0x29, 0xb4, 0xd3, 0x19, 0x24, 0x8c, 0xed,
+ 0xca, 0x05, 0xd4, 0xfa, 0x5b, 0x2f, 0x47, 0x6a, 0xad, 0x66, 0xea, 0x37,
+ 0x5c, 0x07, 0x59, 0x76, 0x40, 0x39, 0x11, 0x14, 0x28, 0x6d, 0x6d, 0x95,
+ 0xa0, 0x2b, 0xc4, 0x8a, 0x64, 0x88, 0x26, 0x12, 0xf1, 0x60, 0x35, 0x59,
+ 0x31, 0x70, 0x9d, 0x35, 0x4a, 0x48, 0x01, 0x91, 0x58, 0x52, 0x75, 0xd0,
+ 0x6a, 0x44, 0x17, 0xd3, 0x4f, 0x82, 0x86, 0x25, 0xc3, 0xaf, 0xa5, 0x93,
+ 0x28, 0xeb, 0xc9, 0xb1, 0x82, 0x0f, 0x1c, 0xe5, 0xb6, 0xe6, 0xb6, 0xb1,
+ 0xdd, 0xaa, 0x0a, 0xe7, 0x08, 0xee, 0x42, 0x3e, 0xf6, 0xa6, 0xdb, 0x72,
+ 0xd6, 0x5c, 0xd1, 0x61, 0x88, 0x51, 0x37, 0xa5, 0x24, 0x88, 0x3b, 0xdb,
+ 0x19, 0x29, 0x95, 0x15, 0x12, 0x25, 0x90, 0xb1, 0x47, 0xfe, 0xa9, 0x8d,
+ 0x2f, 0xe0, 0x0e, 0xff, 0xf2, 0xe5, 0x46, 0xeb, 0x46, 0xc6, 0x7a, 0x73,
+ 0xd4, 0xcc, 0xdd, 0xda, 0x96, 0x8c, 0xf0, 0x34, 0xf0, 0xfd, 0xec, 0xb6,
+ 0x61, 0xb9, 0x7f, 0x41, 0xfd, 0x35, 0x8b, 0x47, 0xfb, 0x49, 0x7d, 0x67,
+ 0x94, 0x88, 0x85, 0xbf, 0x09, 0xdd, 0x76, 0xaa, 0xd1, 0x20, 0x40, 0xab,
+ 0x0f, 0x11, 0xf3, 0xad, 0xf7, 0x78, 0xe5, 0x25, 0xbd, 0x22, 0x9d, 0x4b,
+ 0x34, 0x4b, 0xe7, 0x01, 0x3d, 0x7a, 0x91, 0x25, 0xc9, 0x5c, 0x6c, 0x32,
+ 0x4f, 0x8b, 0x8f, 0x36, 0x9d, 0x92, 0x47, 0x1a, 0xa0, 0xf9, 0x1d, 0xd7,
+ 0x8f, 0xb9, 0x1f, 0x4a, 0xda, 0x0e, 0x49, 0xc6, 0xa0, 0x47, 0x0c, 0xf4,
+ 0xd2, 0x45, 0x5a, 0xa1, 0xb0, 0x88, 0xf6, 0x4c, 0x52, 0x1e, 0x7b, 0xdb,
+ 0x00, 0x53, 0xc3, 0x58, 0xdb, 0x31, 0x36, 0x14, 0x61, 0x44, 0x50, 0x9c,
+ 0x15, 0x69, 0xf3, 0x46, 0x7b, 0xfa, 0xdd, 0xfc, 0x76, 0x51, 0xc5, 0x95,
+ 0x9e, 0x84, 0xe1, 0xda, 0xe6, 0xbf, 0x07, 0x1a, 0xfa, 0xe8, 0xe3, 0xdf,
+ 0x56, 0x7a, 0xd8, 0x96, 0xae, 0x36, 0x58, 0xe2, 0x37, 0xe9, 0x63, 0xf5,
+ 0xce, 0x05, 0x69, 0x62, 0xb1, 0xc5, 0x51, 0x72, 0xe2, 0xcc, 0xc9, 0x62,
+ 0x40, 0x40, 0x98, 0x4d, 0x35, 0x15, 0x63, 0x92, 0xfe, 0x3e, 0xd4, 0x5e,
+ 0xdb, 0xb1, 0x1d, 0xa0, 0x9e, 0x35, 0x48, 0x86, 0xba, 0xb3, 0x62, 0xa0,
+ 0x35, 0xbb, 0x81, 0xe2, 0x97, 0x30, 0x9f, 0x33, 0x1b, 0x8b, 0xa6, 0x69,
+ 0x1c, 0xc4, 0x4c, 0x83, 0x7c, 0x4c, 0x5e, 0x44, 0xbc, 0x5b, 0x0e, 0x87,
+ 0x34, 0x6d, 0x9b, 0x3c, 0xf7, 0x78, 0x2d, 0x71, 0xcc, 0xb9, 0x91, 0x8b,
+ 0x1c, 0x71, 0x76, 0x68, 0xd7, 0x86, 0xa5, 0x95, 0xc5, 0x20, 0x40, 0x75,
+ 0x41, 0xd4, 0x90, 0x3d, 0x4e, 0xc8, 0x04, 0x5a, 0x48, 0x77, 0x52, 0xdb,
+ 0xe2, 0x30, 0xe5, 0xf7, 0x94, 0x36, 0xfd, 0x2f, 0xdf, 0xd3, 0x48, 0x91,
+ 0x3b, 0x1d, 0xe8, 0x61, 0x18, 0x2a, 0x1c, 0x70, 0x01, 0x4f, 0xb0, 0xa4,
+ 0x93, 0x42, 0x6f, 0xa4, 0x80, 0xcc, 0xe4, 0x5c, 0x3e, 0x59, 0xfb, 0x36,
+ 0xe6, 0x15, 0x5a, 0x52, 0x78, 0xfe, 0x0f, 0x41, 0xea, 0x31, 0xea, 0x66,
+ 0xa0, 0x2f, 0xe3, 0x36, 0x52, 0xf2, 0x91, 0xd9, 0x61, 0x68, 0x2a, 0x14,
+ 0xc5, 0x47, 0x8e, 0x94, 0x4b, 0x49, 0x84, 0x3e, 0x91, 0x15, 0x6c, 0xd5,
+ 0x97, 0x16, 0x71, 0xc9, 0x9c, 0x4f, 0x88, 0x98, 0x36, 0x63, 0x40, 0xcd,
+ 0x5a, 0x5b, 0x3a, 0xda, 0xf6, 0xad, 0x97, 0x22, 0x47, 0x6a, 0x24, 0x78,
+ 0x19, 0x8e, 0xc6, 0x68, 0xfb, 0xd8, 0x20, 0xdb, 0x45, 0x3d, 0xd2, 0x32,
+ 0x83, 0x57, 0x2a, 0x08, 0xe1, 0x77, 0x3e, 0xd0, 0xa7, 0xb9, 0x0b, 0xd7,
+ 0x39, 0xef, 0x3d, 0x43, 0x18, 0x4d, 0xaa, 0x3c, 0xbb, 0x80, 0x06, 0x42,
+ 0x2b, 0x92, 0xcc, 0xb1, 0xc0, 0x6b, 0x94, 0xa5, 0x15, 0x89, 0x3f, 0x28,
+ 0x07, 0x28, 0x1b, 0xcc, 0xc9, 0x73, 0xc4, 0x3c, 0xd1, 0x76, 0x1a, 0x61,
+ 0x08, 0x5d, 0x54, 0x48, 0xd1, 0x22, 0x52, 0xad, 0x64, 0x88, 0x66, 0x65,
+ 0x51, 0x97, 0x59, 0xf1, 0x78, 0x82, 0xba, 0x0a, 0xdc, 0x62, 0xdb, 0xa9,
+ 0x8a, 0xbe, 0xc8, 0x6c, 0x55, 0xb4, 0x1b, 0xaf, 0xd9, 0x49, 0x1c, 0xaf,
+ 0x15, 0xbb, 0xf4, 0x5d, 0x56, 0x19, 0xf9, 0x57, 0xd6, 0xc9, 0xf7, 0x4f,
+ 0x34, 0xf9, 0x4a, 0xfa, 0xed, 0x8a, 0x2a, 0x62, 0x4b, 0xdd, 0x28, 0x49,
+ 0x98, 0xa7, 0x1e, 0x84, 0x2f, 0x38, 0x65, 0x9b, 0xb9, 0x97, 0xbe, 0x2e,
+ 0x0a, 0x09, 0x1b, 0xe9, 0x45, 0xf7, 0xca, 0x99, 0x9f, 0x18, 0xf2, 0x43,
+ 0x9f, 0xf3, 0x68, 0x6f, 0x15, 0xd7, 0x22, 0xd3, 0x68, 0x57, 0x20, 0x16,
+ 0xf8, 0xf2, 0xcc, 0x59, 0x4e, 0x1a, 0x52, 0x72, 0x8c, 0x74, 0xb2, 0x13,
+ 0x4f, 0xce, 0x73, 0xb8, 0x7b, 0x24, 0xb5, 0x20, 0x54, 0x01, 0x39, 0x41,
+ 0x59, 0xd4, 0x1a, 0x87, 0x0a, 0xdc, 0x09, 0x0c, 0x43, 0x8f, 0xac, 0xaf,
+ 0xa0, 0x89, 0x41, 0x43, 0x20, 0x23, 0xbf, 0x47, 0xbd, 0x67, 0xf9, 0xf8,
+ 0xee, 0xfc, 0xf8, 0xad, 0x98, 0xce, 0x8e, 0xcd, 0x89, 0x56, 0xe3, 0xcc,
+ 0x62, 0x61, 0x3b, 0x4c, 0x55, 0x61, 0x25, 0xb0, 0x6e, 0x86, 0x16, 0x15,
+ 0x71, 0x1d, 0x3a, 0xb6, 0x6d, 0x20, 0x49, 0x08, 0x95, 0x94, 0xab, 0x88,
+ 0xd1, 0xa5, 0x9b, 0x1a, 0xf1, 0x64, 0x83, 0x08, 0x6b, 0x3a, 0x7b, 0x72,
+ 0x95, 0x18, 0x89, 0x62, 0x18, 0x8d, 0xd7, 0x59, 0x2b, 0xe4, 0x58, 0xa5,
+ 0xcd, 0x94, 0x49, 0xbc, 0x2f, 0xf3, 0x4a, 0xc0, 0x62, 0x18, 0x0d, 0x3c,
+ 0x79, 0x5d, 0xde, 0x14, 0xc3, 0x63, 0x54, 0x1d, 0x26, 0xc7, 0xe5, 0xa5,
+ 0xd9, 0xaa, 0x77, 0xa4, 0xb0, 0x74, 0x4f, 0xed, 0xfd, 0xe9, 0xbb, 0x64,
+ 0x0b, 0x72, 0x37, 0x39, 0xb5, 0x48, 0x53, 0x78, 0x72, 0x5b, 0xec, 0x8b,
+ 0x9a, 0x75, 0x12, 0x99, 0xcd, 0x20, 0x39, 0xfc, 0xf1, 0xe5, 0xdb, 0xd3,
+ 0xe3, 0xc3, 0x9f, 0xd8, 0xc4, 0x08, 0x96, 0x83, 0x1f, 0x7f, 0xe5, 0xd9,
+ 0x5c, 0x14, 0xa1, 0x41, 0xa6, 0x90, 0x99, 0x47, 0x14, 0x66, 0x82, 0xe9,
+ 0x93, 0x59, 0xa3, 0x92, 0xe0, 0x78, 0x7c, 0x7a, 0x34, 0x54, 0x98, 0x28,
+ 0xee, 0xc5, 0x96, 0x17, 0x30, 0x90, 0x48, 0x1e, 0x09, 0x8c, 0xfb, 0x77,
+ 0x61, 0x30, 0x4a, 0x6f, 0xc4, 0x20, 0x79, 0xa7, 0x09, 0x48, 0x03, 0x3a,
+ 0x71, 0x5c, 0xc1, 0xd7, 0xf9, 0x25, 0x05, 0x94, 0x3a, 0xc9, 0x33, 0x20,
+ 0x0e, 0x9a, 0xc2, 0x34, 0x48, 0xe2, 0xa7, 0x16, 0x3a, 0x0e, 0x23, 0xab,
+ 0xce, 0xe6, 0xec, 0xbe, 0xec, 0x95, 0x90, 0xc4, 0x0c, 0xe8, 0x18, 0x91,
+ 0x1d, 0x1e, 0x84, 0xca, 0x24, 0x5b, 0x7c, 0x72, 0xe7, 0xf7, 0xee, 0xb1,
+ 0x34, 0xc2, 0x72, 0x41, 0xb4, 0x09, 0xcb, 0xf6, 0x0f, 0x92, 0x8d, 0xe1,
+ 0x2a, 0x39, 0xd8, 0xf8, 0x84, 0x2a, 0x82, 0xef, 0xe9, 0x8d, 0xb4, 0x02,
+ 0x91, 0x78, 0x99, 0xba, 0x82, 0x19, 0x9d, 0x81, 0xfd, 0xd5, 0xea, 0x6d,
+ 0x63, 0x8f, 0xb9, 0xb9, 0xea, 0x22, 0x7d, 0xa9, 0x20, 0xe5, 0x32, 0x02,
+ 0xe2, 0x50, 0x10, 0x5f, 0xca, 0x38, 0x6e, 0x6a, 0x34, 0x54, 0x74, 0x49,
+ 0x67, 0x37, 0x3e, 0x58, 0xfc, 0x06, 0xc5, 0x26, 0xc5, 0x82, 0x2a, 0x67,
+ 0x1b, 0xe8, 0x1c, 0x4e, 0x31, 0x88, 0x1a, 0x79, 0xa7, 0xe1, 0x70, 0xb4,
+ 0x57, 0x9b, 0x7f, 0xdc, 0x94, 0xf8, 0xea, 0x86, 0x28, 0x55, 0xe0, 0xd5,
+ 0x1b, 0xac, 0xc0, 0x42, 0x31, 0xc6, 0xec, 0xcd, 0x8d, 0xdf, 0x7c, 0xb1,
+ 0xa9, 0x70, 0xf9, 0xfa, 0x64, 0x97, 0xe1, 0xd0, 0x7b, 0x12, 0xe2, 0x53,
+ 0xb5, 0x5a, 0x4e, 0x5f, 0x32, 0x4a, 0x8d, 0xd4, 0x9c, 0x65, 0x24, 0xbc,
+ 0xb9, 0x2b, 0x16, 0x23, 0xbb, 0x71, 0x08, 0xb1, 0xab, 0x72, 0xb4, 0x66,
+ 0x2e, 0x73, 0xfd, 0x77, 0x9d, 0xab, 0xd7, 0x39, 0x12, 0x41, 0x09, 0xd7,
+ 0xc1, 0x68, 0xc2, 0xcd, 0x07, 0xfb, 0xf4, 0x21, 0x8a, 0x7b, 0x91, 0x71,
+ 0x4c, 0x9a, 0x70, 0xb4, 0x70, 0x68, 0xd0, 0xa9, 0xc8, 0xa1, 0xb8, 0x56,
+ 0xe8, 0xbe, 0x6c, 0x2c, 0x8e, 0x21, 0x46, 0xde, 0xac, 0xd0, 0x9c, 0x82,
+ 0xdb, 0x3a, 0xa3, 0xeb, 0x55, 0xdf, 0x4d, 0x55, 0xd7, 0xae, 0xa3, 0x3c,
+ 0x96, 0xb6, 0x9a, 0x17, 0x0d, 0x75, 0x82, 0x1e, 0x14, 0x75, 0x40, 0x6c,
+ 0xbb, 0x41, 0x88, 0x61, 0xc1, 0x8d, 0x73, 0x14, 0x32, 0xdf, 0x46, 0x9f,
+ 0xda, 0xb1, 0x52, 0x2d, 0x0e, 0x8c, 0x62, 0x67, 0x7b, 0x45, 0x76, 0xed,
+ 0xde, 0x4c, 0xe2, 0xcb, 0x26, 0x50, 0xf1, 0xfe, 0x6a, 0x26, 0xda, 0x26,
+ 0xb7, 0x4f, 0x41, 0x3d, 0x98, 0x0b, 0x86, 0xd8, 0xf9, 0xc5, 0xd3, 0xde,
+ 0xa2, 0x61, 0x91, 0xef, 0xe5, 0x56, 0xd5, 0xa1, 0x9d, 0xf5, 0x5a, 0x02,
+ 0x67, 0x7e, 0x3c, 0x4a, 0x0a, 0x84, 0xd8, 0x71, 0x28, 0x36, 0x8a, 0x86,
+ 0xe7, 0x35, 0x69, 0x20, 0x27, 0xef, 0x7e, 0x3d, 0x8a, 0xb7, 0x16, 0xa7,
+ 0x26, 0x0b, 0x1c, 0xb2, 0x93, 0x15, 0xb1, 0x87, 0x9d, 0xa2, 0x69, 0x3a,
+ 0x04, 0x72, 0x2f, 0xe9, 0x3e, 0xe8, 0xd8, 0x91, 0xd0, 0x2a, 0x49, 0x8f,
+ 0x47, 0x15, 0xb7, 0x5e, 0xbe, 0xc3, 0x93, 0x55, 0x5a, 0x71, 0x53, 0xd2,
+ 0xe2, 0xa3, 0xe6, 0x8e, 0x61, 0xe4, 0xec, 0x36, 0x9b, 0xae, 0x9a, 0x76,
+ 0xe1, 0x8b, 0x37, 0x27, 0x81, 0x73, 0xa1, 0x29, 0x6d, 0xd1, 0x45, 0x50,
+ 0x63, 0xf4, 0x54, 0xb1, 0x38, 0x0e, 0x36, 0xb6, 0x35, 0x88, 0x9b, 0x8a,
+ 0x0e, 0xcf, 0xbf, 0x88, 0xc5, 0x67, 0x75, 0xca, 0x55, 0xc6, 0x1e, 0x55,
+ 0x97, 0xaa, 0x10, 0xfd, 0xbc, 0xa1, 0xd1, 0x2a, 0xfa, 0xf5, 0x37, 0xec,
+ 0x7b, 0xf3, 0x3e, 0x6e, 0x7b, 0x91, 0x89, 0x5b, 0xae, 0x0e, 0xae, 0x72,
+ 0xf0, 0x65, 0x6a, 0xca, 0x6a, 0x18, 0x94, 0x6d, 0xa8, 0xac, 0xaf, 0xea,
+ 0xe6, 0x07, 0xee, 0xd0, 0xa3, 0xd3, 0xeb, 0xa7, 0x9e, 0x37, 0x1b, 0x12,
+ 0x8f, 0x7e, 0x64, 0x39, 0x7e, 0xb0, 0x8a, 0x8f, 0xd5, 0xe4, 0xb1, 0xf9,
+ 0xe3, 0x3b, 0xfc, 0x71, 0xc1, 0x7e, 0x01, 0x81, 0xd2, 0x62, 0x3f, 0x6c,
+ 0x48, 0xda, 0x28, 0x85, 0x4e, 0xfc, 0x7a, 0x6a, 0xaa, 0x6b, 0x40, 0x79,
+ 0x12, 0x70, 0xb7, 0x1c, 0x04, 0x0a, 0x59, 0x35, 0x3a, 0xcc, 0x80, 0x4b,
+ 0x06, 0xc3, 0x20, 0xa5, 0xfc, 0x8f, 0x70, 0xa2, 0x18, 0x87, 0x69, 0x40,
+ 0x3e, 0xa7, 0x31, 0x37, 0x8c, 0x2b, 0x63, 0x55, 0x63, 0x66, 0xab, 0xfe,
+ 0x86, 0x40, 0x85, 0xad, 0x5f, 0xa5, 0x8e, 0xe0, 0x0b, 0x5b, 0x28, 0x00,
+ 0x02, 0x74, 0x09, 0x1d, 0xec, 0x9e, 0xc6, 0x45, 0x63, 0x7e, 0x96, 0xf7,
+ 0x4c, 0xa1, 0x7f, 0xc9, 0x24, 0xdd, 0xe5, 0x8f, 0x10, 0x6a, 0xb2, 0xff,
+ 0xbd, 0xd7, 0x54, 0x33, 0xc9, 0x37, 0x5e, 0xbb, 0x34, 0x41, 0x61, 0xd3,
+ 0xa3, 0x76, 0x55, 0xe3, 0xfc, 0xa8, 0xe5, 0x0e, 0xac, 0x96, 0xf4, 0xcc,
+ 0x73, 0xc1, 0x4d, 0xb1, 0x80, 0xb5, 0x4f, 0x6c, 0xe1, 0x23, 0xfb, 0x64,
+ 0x90, 0xd2, 0x94, 0x2d, 0x10, 0xfa, 0xb2, 0x92, 0x91, 0xc1, 0x7b, 0xa0,
+ 0x59, 0xe1, 0x73, 0xc3, 0xf8, 0x70, 0x33, 0x68, 0x6f, 0x90, 0xb2, 0x9c,
+ 0xbe, 0xf5, 0x6f, 0x41, 0xb4, 0xb3, 0xbe, 0x2b, 0xa6, 0x57, 0xaf, 0xdf,
+ 0x8d, 0xe3, 0xaf, 0x77, 0x17, 0x47, 0x4f, 0x1b, 0x2d, 0x04, 0xb4, 0xc0,
+ 0x26, 0xa7, 0x60, 0xd7, 0xc1, 0x7d, 0xf6, 0xd2, 0xfb, 0x6d, 0x7c, 0xb8,
+ 0xf6, 0x2b, 0xd6, 0x15, 0x08, 0xcd, 0x82, 0xb9, 0xb8, 0x28, 0x9e, 0x94,
+ 0x1f, 0x3e, 0x4c, 0x71, 0x17, 0xd8, 0xeb, 0x11, 0x1f, 0xae, 0xb9, 0x42,
+ 0xb4, 0x88, 0xda, 0x42, 0xd3, 0x88, 0x95, 0x97, 0x80, 0xd6, 0xa5, 0x6b,
+ 0x6a, 0xb3, 0xa1, 0x7f, 0xfc, 0x92, 0x63, 0x3e, 0x46, 0x67, 0xf1, 0x48,
+ 0x70, 0x31, 0xd8, 0x21, 0x1b, 0xa7, 0x71, 0xb1, 0x5f, 0x43, 0xaa, 0x73,
+ 0xbc, 0xce, 0x54, 0x3a, 0x10, 0x62, 0xa5, 0x1f, 0x55, 0x7d, 0x4b, 0x32,
+ 0x7b, 0xb2, 0xff, 0xcd, 0xd7, 0xa1, 0xf4, 0x7c, 0xfd, 0xae, 0xe7, 0x73,
+ 0xf8, 0xcd, 0x50, 0x6b, 0x88, 0x44, 0x23, 0xf0, 0x14, 0xfa, 0x70, 0x2f,
+ 0x04, 0x00, 0x35, 0x3e, 0x01, 0x45, 0x47, 0xbd, 0x87, 0x4b, 0x00, 0x16,
+ 0x9a, 0xff, 0x58, 0xfb, 0xa0, 0x64, 0x33, 0xc7, 0x3f, 0xc5, 0x29, 0xe2,
+ 0x9c, 0xe1, 0x97, 0x9c, 0x71, 0x14, 0xf7, 0x54, 0x14, 0xe1, 0xed, 0x75,
+ 0x67, 0x14, 0x1f, 0x0e, 0xfc, 0x2d, 0x06, 0x44, 0x03, 0xb6, 0xb0, 0xcf,
+ 0x7f, 0xec, 0xec, 0xdb, 0xd4, 0x34, 0x5b, 0x08, 0x46, 0xd7, 0xd4, 0x48,
+ 0xf0, 0x50, 0x41, 0x28, 0xf2, 0xdb, 0x31, 0xe5, 0x13, 0xf4, 0x50, 0x33,
+ 0x25, 0x1e, 0x70, 0xc6, 0x81, 0x9d, 0x1c, 0xe6, 0xa9, 0x9a, 0x58, 0x74,
+ 0x26, 0x63, 0x76, 0xdf, 0xdd, 0x47, 0x4c, 0x79, 0x24, 0x9b, 0x6e, 0x1d,
+ 0xda, 0xde, 0x5b, 0xa3, 0x24, 0x41, 0xb8, 0x3e, 0x98, 0x48, 0xf5, 0x85,
+ 0x64, 0x6b, 0x62, 0xc4, 0xb5, 0x07, 0x9e, 0xc1, 0x2a, 0xf6, 0x63, 0x4e,
+ 0xde, 0x8f, 0x0f, 0xf7, 0xe4, 0xf3, 0x27, 0x8f, 0xb7, 0xb7, 0x5d, 0x86,
+ 0x3b, 0x27, 0xc8, 0x4c, 0xa8, 0x0c, 0x23, 0x07, 0xe7, 0xe2, 0x66, 0xb0,
+ 0x66, 0x8b, 0xaf, 0x88, 0x31, 0x58, 0x9f, 0x51, 0x7c, 0x38, 0xc8, 0x31,
+ 0x7d, 0x0f, 0x87, 0x08, 0x13, 0x9c, 0x18, 0xba, 0x35, 0x84, 0x21, 0x6c,
+ 0x32, 0x7e, 0xc0, 0xc6, 0x5c, 0x7a, 0xb9, 0x02, 0x39, 0x52, 0x9c, 0x87,
+ 0x11, 0x8e, 0x25, 0x0e, 0x17, 0xa7, 0x2a, 0x69, 0xc3, 0x44, 0xd0, 0x53,
+ 0x16, 0x7b, 0xf4, 0x07, 0x95, 0x3c, 0x5d, 0x69, 0x83, 0xca, 0xd3, 0xd5,
+ 0x64, 0x6e, 0x64, 0xd0, 0x18, 0x1d, 0xb5, 0x6f, 0x93, 0xe3, 0x5c, 0x3a,
+ 0x8d, 0xb2, 0x0e, 0x2e, 0xc9, 0x0d, 0x7d, 0x32, 0x87, 0xd6, 0xdd, 0x26,
+ 0x34, 0xc9, 0xf5, 0x74, 0x65, 0x9b, 0xa2, 0xb5, 0x25, 0x1b, 0x4b, 0xfe,
+ 0x10, 0x7a, 0x77, 0x0f, 0xfb, 0x16, 0x76, 0x9b, 0xd5, 0xa1, 0x19, 0xf7,
+ 0x16, 0x71, 0x5b, 0x23, 0xb0, 0x1f, 0x7c, 0xf4, 0xb6, 0xa5, 0x67, 0x3b,
+ 0x65, 0xd7, 0xea, 0x9d, 0x37, 0xd0, 0x3b, 0x09, 0x7a, 0x03, 0xb1, 0x8c,
+ 0xe4, 0x05, 0x6b, 0x98, 0xfd, 0x3d, 0x1e, 0xb5, 0x04, 0xda, 0xd7, 0x45,
+ 0x49, 0xab, 0x27, 0xbf, 0x7f, 0x7a, 0x81, 0xbc, 0x64, 0x4e, 0xc2, 0x9c,
+ 0x67, 0xd4, 0xa6, 0x1e, 0xfc, 0x31, 0xc4, 0x22, 0xa8, 0xd8, 0x3f, 0xc9,
+ 0x63, 0x88, 0xef, 0x43, 0x3c, 0xf8, 0x94, 0x5b, 0x97, 0x12, 0x96, 0x0a,
+ 0x7b, 0x81, 0x18, 0xc3, 0x83, 0x7d, 0x5e, 0x86, 0x76, 0x6e, 0x03, 0x9e,
+ 0x20, 0x29, 0xb5, 0xc5, 0x5d, 0xe2, 0xc5, 0x79, 0xb4, 0xc8, 0xba, 0x6e,
+ 0x7d, 0x29, 0x70, 0xdd, 0xa0, 0xe6, 0x32, 0xd0, 0x49, 0x1a, 0xb2, 0x89,
+ 0x37, 0x78, 0x46, 0x1b, 0x54, 0x54, 0xaa, 0xf1, 0x73, 0xca, 0xbe, 0x52,
+ 0xab, 0x81, 0xf5, 0x6e, 0x1d, 0x5b, 0x3c, 0x94, 0x69, 0x24, 0xa6, 0xae,
+ 0x73, 0xdc, 0xf8, 0x4a, 0x33, 0xb9, 0x36, 0x34, 0x05, 0xa0, 0xd3, 0x78,
+ 0x57, 0xc6, 0x94, 0x21, 0x23, 0x75, 0xd6, 0x9c, 0x16, 0x41, 0x1d, 0x83,
+ 0x71, 0x6a, 0x66, 0xc8, 0xe1, 0x46, 0x54, 0xa1, 0xb5, 0x1b, 0x00, 0x84,
+ 0x53, 0x32, 0x6f, 0x5b, 0x66, 0x9f, 0x7e, 0xc2, 0x45, 0xfd, 0x90, 0xde,
+ 0xdd, 0xe4, 0xcd, 0x2a, 0x64, 0xba, 0x13, 0x45, 0x05, 0xa4, 0xba, 0x74,
+ 0x12, 0xd3, 0x38, 0x0c, 0x57, 0x3c, 0x4e, 0x66, 0x1e, 0x12, 0x3e, 0xd1,
+ 0x4a, 0xae, 0xb6, 0x3c, 0x02, 0xce, 0xcf, 0x79, 0x79, 0x13, 0x64, 0x88,
+ 0xc3, 0xc2, 0xb0, 0xb3, 0x6b, 0x97, 0xfe, 0x98, 0xb7, 0x7f, 0xff, 0x77,
+ 0xfd, 0xe5, 0x07, 0xec, 0xd4, 0x3f, 0x74, 0xa7, 0x34, 0xe9, 0x2e, 0x0d,
+ 0x8a, 0xa3, 0xc9, 0xb6, 0x4e, 0x7e, 0x4f, 0xbb, 0xf2, 0x17, 0x64, 0x35,
+ 0xf1, 0xd6, 0x00, 0x97, 0x84, 0x06, 0xfc, 0xfd, 0xc8, 0xea, 0xd1, 0x32,
+ 0x48, 0x8a, 0x6a, 0x4f, 0x52, 0xf6, 0x27, 0x77, 0x81, 0x4b, 0x0a, 0x64,
+ 0xf8, 0x53, 0x31, 0x20, 0x80, 0x55, 0x63, 0xd2, 0xa5, 0xd4, 0x4e, 0x1e,
+ 0xad, 0x02, 0xf9, 0x14, 0x7f, 0xaa, 0x04, 0x65, 0xc4, 0xd8, 0x32, 0x66,
+ 0xe6, 0x30, 0xf4, 0xf8, 0xe7, 0x71, 0xc3, 0x42, 0x93, 0x5a, 0xc4, 0x9b,
+ 0xd2, 0x02, 0x9e, 0x31, 0xe3, 0xa0, 0x01, 0xae, 0x1a, 0xe2, 0x13, 0xc5,
+ 0x7c, 0xa0, 0xa9, 0x86, 0xcd, 0xb2, 0x19, 0x99, 0x41, 0x20, 0x41, 0xf4,
+ 0x65, 0x6e, 0xd5, 0x64, 0x73, 0x34, 0x7e, 0xff, 0x77, 0x4e, 0x04, 0xfc,
+ 0x47, 0xa8, 0xfb, 0x9e, 0x9c, 0x1f, 0x1e, 0xd0, 0x94, 0x7e, 0x3f, 0xac,
+ 0xef, 0x16, 0x93, 0x72, 0x2e, 0x17, 0x0f, 0x9b, 0x6f, 0x36, 0x50, 0x7f,
+ 0xc6, 0x54, 0x42, 0xb1, 0xba, 0xa1, 0x07, 0x5b, 0x30, 0x88, 0x22, 0xd2,
+ 0xc3, 0x0e, 0x2b, 0xa7, 0x53, 0xaa, 0x26, 0x43, 0xe1, 0x82, 0xb9, 0x79,
+ 0xbf, 0x4f, 0x14, 0x89, 0x80, 0xbb, 0xee, 0x49, 0x7f, 0x45, 0xf1, 0xa8,
+ 0x6a, 0x7f, 0xaa, 0x68, 0x08, 0x68, 0x3d, 0x1d, 0x5b, 0x9e, 0x1e, 0x05,
+ 0x7c, 0x00, 0xbf, 0x30, 0xd3, 0xfc, 0x40, 0xf5, 0x62, 0x62, 0xe6, 0xbe,
+ 0xe2, 0x9f, 0x0d, 0xcf, 0xe9, 0x67, 0x9a, 0x47, 0x23, 0x25, 0xc6, 0xc8,
+ 0xcc, 0x90, 0x1a, 0xe0, 0x41, 0x58, 0x96, 0x98, 0xc4, 0x52, 0xf3, 0xa8,
+ 0x53, 0x71, 0x11, 0x4a, 0x64, 0xbd, 0xd5, 0x1f, 0x32, 0x82, 0xe1, 0xcc,
+ 0xaf, 0xb3, 0xf5, 0xa3, 0x51, 0x5f, 0x0f, 0xc3, 0x98, 0x17, 0xa9, 0x24,
+ 0xb3, 0x71, 0xf6, 0x9a, 0xbd, 0x4f, 0x0a, 0x86, 0x44, 0xb9, 0xcd, 0xe6,
+ 0xb4, 0x47, 0xf7, 0x0d, 0x87, 0x3d, 0xd5, 0xaa, 0x0d, 0xc9, 0xfc, 0x81,
+ 0x7f, 0x2d, 0xbf, 0xb0, 0x1a, 0x46, 0x03, 0x44, 0x20, 0xa4, 0x1c, 0x61,
+ 0xe4, 0x7b, 0xd6, 0x5a, 0x6a, 0x88, 0x42, 0xd8, 0x16, 0x87, 0x2b, 0x4f,
+ 0x06, 0x89, 0x8b, 0x6e, 0x6b, 0x52, 0x5f, 0x82, 0x40, 0xf8, 0xfa, 0xe1,
+ 0x6c, 0x94, 0xdc, 0x86, 0xa6, 0x8e, 0xa8, 0x19, 0x69, 0xc9, 0xe9, 0x87,
+ 0x34, 0x4f, 0xd4, 0xb1, 0x2c, 0xe0, 0xb5, 0x8d, 0xc4, 0x99, 0x93, 0x08,
+ 0xb7, 0xa7, 0xe0, 0xe8, 0x7f, 0x7a, 0xd1, 0x76, 0x76, 0x6d, 0x0d, 0xbd,
+ 0x28, 0xbb, 0xd1, 0x45, 0x18, 0xea, 0x6e, 0xfd, 0x70, 0x9c, 0x7f, 0xff,
+ 0x74, 0xb4, 0xbb, 0x1d, 0x1c, 0x6a, 0xb3, 0xfc, 0x40, 0x7d, 0xaf, 0x3f,
+ 0x20, 0x4b, 0x95, 0xce, 0x4c, 0xa3, 0x0a, 0xf4, 0x03, 0xda, 0x59, 0xae,
+ 0x59, 0x5e, 0x2d, 0x31, 0x0e, 0x91, 0xf9, 0xbc, 0x64, 0x83, 0xed, 0xbe,
+ 0x65, 0xb4, 0xf3, 0x41, 0x7d, 0xe8, 0x8c, 0xad, 0x76, 0xe7, 0xa7, 0xc7,
+ 0xc1, 0xc4, 0x90, 0x80, 0xf2, 0x81, 0x22, 0xd7, 0x96, 0x98, 0x8c, 0xdc,
+ 0xcb, 0xaa, 0x7c, 0xea, 0xb7, 0x41, 0xa4, 0x07, 0x88, 0xa4, 0x18, 0x11,
+ 0x10, 0xa1, 0xec, 0x28, 0xf4, 0x69, 0xe7, 0x7f, 0xe4, 0xff, 0xf5, 0x42,
+ 0x56, 0x36, 0xdd, 0x91, 0x4e, 0xdb, 0x4c, 0x14, 0x99, 0x35, 0x2e, 0x03,
+ 0xe1, 0xe8, 0x9e, 0x75, 0x12, 0xb6, 0xf2, 0x3e, 0xa3, 0x54, 0xcd, 0xf3,
+ 0xb4, 0xb6, 0x13, 0xe4, 0x15, 0xb8, 0xde, 0xdf, 0x84, 0x28, 0x75, 0x15,
+ 0xc0, 0xd7, 0x26, 0x91, 0xa8, 0x11, 0xc7, 0x9a, 0x2e, 0xca, 0x51, 0xcf,
+ 0xce, 0x70, 0xe2, 0x70, 0x77, 0x67, 0xfa, 0x37, 0x84, 0xd7, 0x1c, 0x06,
+ 0x1f, 0xbb, 0x6e, 0x05, 0xde, 0xd8, 0x2d, 0x09, 0xe2, 0x91, 0x72, 0xbe,
+ 0xcd, 0xb7, 0x85, 0x68, 0xc1, 0x03, 0x8f, 0x22, 0x06, 0x73, 0xcf, 0xad,
+ 0xdd, 0x6a, 0x77, 0xbc, 0xec, 0x39, 0x67, 0x5b, 0x9d, 0xcf, 0x1c, 0x0d,
+ 0x3f, 0x4b, 0x5c, 0xc9, 0x3e, 0x27, 0xf7, 0x51, 0x5f, 0x76, 0xcb, 0x7a,
+ 0xe6, 0x77, 0x49, 0x14, 0x55, 0x7b, 0xcd, 0xe7, 0x9f, 0xec, 0x46, 0xe8,
+ 0x9f, 0xd2, 0x87, 0x3f, 0xe4, 0x4b, 0x8f, 0x67, 0x79, 0x5d, 0xe8, 0xa5,
+ 0x6c, 0x82, 0x73, 0x8c, 0x91, 0x72, 0xa1, 0xbd, 0x69, 0x38, 0x57, 0xe9,
+ 0xde, 0xcd, 0x9c, 0x52, 0xf5, 0x71, 0xc2, 0x0e, 0x01, 0xbf, 0x40, 0xdc,
+ 0xd8, 0xb7, 0xa2, 0xa5, 0x89, 0x83, 0xe0, 0xe8, 0xf4, 0xfa, 0x71, 0x18,
+ 0x88, 0x4a, 0x22, 0xee, 0x32, 0x7f, 0x49, 0xfb, 0xcf, 0x7b, 0x97, 0xc4,
+ 0x38, 0xfa, 0xb2, 0x24, 0x5e, 0x80, 0xdf, 0xfc, 0x42, 0x16, 0xa2, 0xeb,
+ 0xf0, 0x27, 0x7a, 0xcf, 0x92, 0xdc, 0x22, 0xee, 0x9d, 0x89, 0xf9, 0xd6,
+ 0x07, 0x8b, 0xcc, 0x6c, 0x64, 0x33, 0x7f, 0x1a, 0xdf, 0x36, 0x8a, 0x89,
+ 0xc3, 0x6c, 0xa6, 0xbe, 0xd1, 0x42, 0xa4, 0x3c, 0x95, 0xb8, 0x46, 0x9d,
+ 0x44, 0x14, 0xec, 0x0e, 0x7d, 0x3d, 0x8a, 0xce, 0x41, 0xfb, 0x4f, 0xd6,
+ 0x76, 0x0e, 0x66, 0x0a, 0xee, 0x87, 0x7c, 0x5d, 0x20, 0xfa, 0x2e, 0x4a,
+ 0xe9, 0x09, 0x6b, 0x67, 0x73, 0xcf, 0x1c, 0xf8, 0x0a, 0xdc, 0x3f, 0x0b,
+ 0xba, 0x46, 0x1f, 0xea, 0x7a, 0x0e, 0x52, 0xcf, 0x2f, 0xee, 0xcc, 0x94,
+ 0xea, 0x5e, 0xc8, 0x08, 0x5f, 0x80, 0xf2, 0x73, 0x7a, 0x5c, 0x9e, 0xc1,
+ 0xbc, 0x59, 0x93, 0x4f, 0x73, 0x99, 0x21, 0xfd, 0x86, 0x21, 0x81, 0xef,
+ 0x23, 0x46, 0xc8, 0x61, 0xfa, 0xbc, 0x0b, 0xf4, 0x09, 0x9f, 0xb0, 0xca,
+ 0xc2, 0x08, 0x3d, 0x99, 0xc5, 0x12, 0xbc, 0x87, 0x10, 0x5a, 0x23, 0x61,
+ 0x10, 0x17, 0xdd, 0x6e, 0x6f, 0x08, 0x0a, 0x11, 0x83, 0x0d, 0xd1, 0xdd,
+ 0xff, 0x40, 0x9a, 0x00, 0xc7, 0xa3, 0xb5, 0xeb, 0xb2, 0xed, 0x2b, 0x9e,
+ 0x0a, 0x6d, 0x68, 0x4c, 0x79, 0x78, 0x0c, 0x61, 0x38, 0x8f, 0x40, 0x1e,
+ 0x27, 0x91, 0x32, 0x7e, 0x6a, 0x71, 0x43, 0x39, 0xd8, 0xee, 0xa8, 0xb7,
+ 0x4a, 0xa9, 0x28, 0xe5, 0x7e, 0xe0, 0xf4, 0x8b, 0xa4, 0xd7, 0xc5, 0xea,
+ 0xd2, 0x3d, 0x9a, 0xed, 0x81, 0x6a, 0x75, 0xaa, 0xaa, 0x49, 0x8e, 0x0d,
+ 0xa1, 0xd6, 0x11, 0xe3, 0x9f, 0xa2, 0x1b, 0x04, 0x65, 0x9a, 0xa5, 0xeb,
+ 0x87, 0xd3, 0xe9, 0x48, 0x97, 0x24, 0xb2, 0xb6, 0x2e, 0x09, 0xd0, 0xa7,
+ 0xec, 0x90, 0x92, 0x11, 0x2a, 0x91, 0x9d, 0x83, 0x30, 0xb5, 0x2c, 0xeb,
+ 0xdc, 0xc9, 0xd7, 0x90, 0x71, 0xfd, 0x53, 0xd7, 0xbb, 0x87, 0x45, 0x75,
+ 0xb8, 0xd0, 0x7d, 0x82, 0x31, 0xca, 0x18, 0x64, 0x0d, 0xca, 0xa3, 0xbc,
+ 0x35, 0xf4, 0xf1, 0xa8, 0x4f, 0xc5, 0xa2, 0x24, 0xfb, 0xb5, 0x15, 0x37,
+ 0xa2, 0x64, 0x41, 0xf9, 0xc5, 0x56, 0xed, 0xc0, 0x53, 0x51, 0x2c, 0x37,
+ 0xb3, 0x11, 0x83, 0xed, 0x18, 0xbe, 0x52, 0x57, 0x8d, 0x33, 0x14, 0xec,
+ 0x8b, 0x2c, 0x0a, 0x47, 0xdf, 0x7b, 0x37, 0x00, 0x50, 0xf5, 0xc1, 0x62,
+ 0xf8, 0x73, 0xe0, 0x86, 0xda, 0x56, 0xa7, 0x0b, 0x23, 0xcf, 0x89, 0x19,
+ 0x30, 0xd4, 0x98, 0x63, 0x5c, 0xfa, 0x74, 0xc4, 0x47, 0x47, 0xa3, 0x49,
+ 0x18, 0x38, 0x59, 0x37, 0x9a, 0xd6, 0x08, 0xda, 0xa1, 0x28, 0x94, 0x7a,
+ 0xcf, 0x4d, 0x03, 0x06, 0x48, 0xf4, 0x8b, 0x7a, 0x89, 0x65, 0x4f, 0xf9,
+ 0x93, 0x6b, 0x56, 0xe0, 0x19, 0xef, 0xeb, 0xbf, 0xe8, 0xb3, 0x88, 0xf8,
+ 0xa7, 0x25, 0xfd, 0x3f, 0x79, 0xd8, 0xd6, 0x69, 0x06, 0x7b, 0x38, 0x16,
+ 0xda, 0x17, 0xb8, 0x73, 0xc0, 0x58, 0x29, 0x12, 0x09, 0x2e, 0xbd, 0x06,
+ 0x0b, 0xdc, 0xf4, 0xc2, 0xd9, 0x34, 0x86, 0x77, 0xd6, 0xab, 0x8a, 0x9b,
+ 0x8a, 0xdf, 0xaf, 0xe3, 0xa9, 0x07, 0xc9, 0x8e, 0x07, 0x48, 0xb9, 0x76,
+ 0xe7, 0x87, 0x9e, 0x59, 0xd9, 0x25, 0xd2, 0xe6, 0xea, 0xb4, 0xb4, 0xf0,
+ 0xe1, 0x37, 0x9a, 0x15, 0x8f, 0xf6, 0x90, 0x39, 0xfd, 0xb3, 0x72, 0xad,
+ 0x2b, 0xc9, 0x48, 0x54, 0x59, 0x09, 0xf3, 0x20, 0x66, 0xbf, 0x5e, 0x94,
+ 0xb5, 0xa4, 0xd5, 0xfd, 0x77, 0xb6, 0x4f, 0x94, 0xed, 0x45, 0x59, 0x08,
+ 0x23, 0xf9, 0xea, 0xff, 0xde, 0x40, 0x71, 0x26, 0x51, 0xb1, 0x2c, 0x73,
+ 0x90, 0x5c, 0x31, 0x10, 0xdb, 0xf2, 0x86, 0x6c, 0x4b, 0xe7, 0x87, 0x8c,
+ 0xd7, 0xdd, 0x26, 0x91, 0x0c, 0x74, 0x72, 0x5d, 0xa9, 0x53, 0x85, 0x8d,
+ 0x08, 0xf5, 0x8c, 0xb0, 0x6b, 0x64, 0xf4, 0x70, 0x86, 0xfc, 0xf4, 0x51,
+ 0x7c, 0x0d, 0x34, 0xa3, 0x4f, 0xbc, 0x86, 0x7e, 0xbf, 0xd0, 0x28, 0xf1,
+ 0xb1, 0x1c, 0xd7, 0x0f, 0x27, 0x79, 0xf2, 0xec, 0x4a, 0xf2, 0x5b, 0x15,
+ 0xb5, 0x00, 0x7b, 0xe1, 0x07, 0x4e, 0xd8, 0x59, 0x7b, 0x8f, 0xc5, 0x43,
+ 0x2f, 0x68, 0x62, 0x35, 0x17, 0x98, 0xb6, 0x2d, 0x87, 0xe8, 0x96, 0x41,
+ 0x28, 0x7c, 0x48, 0x97, 0x4b, 0x91, 0x36, 0xf7, 0x93, 0x7c, 0xc2, 0x70,
+ 0x6d, 0xdc, 0x9c, 0x13, 0xed, 0x61, 0x08, 0x18, 0xaf, 0x29, 0xcb, 0x8f,
+ 0xec, 0x54, 0xe5, 0x14, 0x6c, 0x14, 0x43, 0x86, 0xf8, 0xb0, 0x01, 0xc9,
+ 0xcf, 0xf5, 0xde, 0xec, 0x8c, 0xc7, 0xdf, 0xee, 0x64, 0xcd, 0x54, 0xa5,
+ 0xde, 0x8e, 0xcb, 0xfe, 0x13, 0xeb, 0xfb, 0x7e, 0x2d, 0x96, 0x24, 0x2f,
+ 0xf5, 0xe9, 0x02, 0xf1, 0x5b, 0xbf, 0xf6, 0x03, 0x68, 0x9f, 0x36, 0xa1,
+ 0x6d, 0x8b, 0x7e, 0x82, 0x65, 0x02, 0xe5, 0x56, 0x3f, 0xd2, 0x76, 0x29,
+ 0xd0, 0xa4, 0xb7, 0x18, 0x29, 0xd2, 0xd8, 0xa9, 0xf7, 0xdf, 0x6c, 0xb7,
+ 0xb8, 0xe8, 0x52, 0xe0, 0x5a, 0x41, 0xca, 0xcf, 0x6a, 0xf9, 0x5f, 0x72,
+ 0x9e, 0xe4, 0xd9, 0xe1, 0xd8, 0x2f, 0x25, 0x48, 0xdd, 0x3f, 0xe1, 0x25,
+ 0x7c, 0x18, 0xec, 0xa6, 0xb8, 0x7f, 0xc6, 0x0f, 0x9e, 0xf0, 0xc3, 0x66,
+ 0x2c, 0x81, 0x01, 0xf2, 0xa1, 0xe9, 0x24, 0x68, 0xce, 0xe4, 0x9e, 0x16,
+ 0x74, 0x5f, 0xd4, 0x04, 0x5c, 0xe6, 0xc5, 0x43, 0x9c, 0x7b, 0x36, 0x45,
+ 0x07, 0xfe, 0x56, 0x34, 0x96, 0xb6, 0x83, 0x4a, 0x02, 0x70, 0x2d, 0xb9,
+ 0xc2, 0x97, 0xe5, 0xbd, 0xb3, 0x4b, 0x05, 0x5e, 0x17, 0x62, 0xc1, 0x73,
+ 0xbe, 0x4f, 0x95, 0x7e, 0x90, 0xc7, 0x93, 0x4f, 0x57, 0xc8, 0x3f, 0x8e,
+ 0xf4, 0x99, 0x0d, 0xdc, 0x58, 0x46, 0xdf, 0xe3, 0x5a, 0xab, 0x6b, 0x84,
+ 0xe5, 0x7b, 0xce, 0xc2, 0xea, 0xf5, 0xf7, 0x6d, 0x36, 0x52, 0xaf, 0xe7,
+ 0x73, 0x6b, 0x07, 0xdc, 0x2b, 0x92, 0x8c, 0x38, 0x5b, 0xea, 0xf6, 0x80,
+ 0x2e, 0x88, 0x4c, 0x98, 0x4c, 0x07, 0x7a, 0x31, 0x06, 0xc9, 0x83, 0x49,
+ 0x81, 0x42, 0x0d, 0xba, 0xb5, 0x0e, 0x2c, 0x94, 0xce, 0x12, 0xb1, 0x76,
+ 0xfe, 0x65, 0x2a, 0x9e, 0x8a, 0x9b, 0xb4, 0xbe, 0x6f, 0x76, 0x29, 0xf7,
+ 0x97, 0xea, 0xec, 0x02, 0xe7, 0x11, 0xb5, 0x34, 0x0a, 0xca, 0x8e, 0x7a,
+ 0x90, 0x38, 0xcf, 0x05, 0x04, 0xcb, 0x86, 0xf6, 0xfc, 0xdd, 0xaa, 0x1d,
+ 0x7f, 0x7e, 0x80, 0xc0, 0x8b, 0x1a, 0xe4, 0x34, 0x55, 0x9a, 0xf9, 0xc3,
+ 0xaf, 0xcf, 0x27, 0xb8, 0xf0, 0x9c, 0xa2, 0x06, 0x95, 0xb4, 0x7b, 0x71,
+ 0x14, 0x62, 0xfd, 0xa1, 0xae, 0x10, 0xca, 0xd0, 0x57, 0x27, 0xb9, 0xcd,
+ 0x75, 0xeb, 0xb0, 0x08, 0x8e, 0xe9, 0xcc, 0xeb, 0xf2, 0x7e, 0x2d, 0x90,
+ 0x4e, 0xc0, 0x4b, 0x5f, 0x07, 0xa4, 0x36, 0x3b, 0x30, 0x8d, 0x1d, 0x84,
+ 0x8b, 0xd3, 0x28, 0xd1, 0xdc, 0xef, 0x52, 0x44, 0x73, 0xee, 0xe8, 0x01,
+ 0x88, 0x55, 0xd0, 0x36, 0x12, 0xc2, 0x5d, 0xb6, 0xf8, 0x90, 0x94, 0xb7,
+ 0x47, 0x29, 0xb6, 0x0f, 0x21, 0x22, 0x38, 0x3c, 0x23, 0x77, 0x95, 0xc0,
+ 0xca, 0xd5, 0x28, 0xe3, 0x2f, 0x53, 0x7d, 0xa6, 0x75, 0x9a, 0x66, 0x1c,
+ 0x7f, 0xc2, 0xeb, 0xae, 0x9c, 0x83, 0xac, 0x50, 0xe8, 0x93, 0xc3, 0xfb,
+ 0x5c, 0xed, 0x14, 0x94, 0x40, 0x54, 0x82, 0x72, 0x48, 0xa9, 0x39, 0x2d,
+ 0xc2, 0x12, 0x1a, 0xfe, 0x14, 0x9f, 0x84, 0xc2, 0x6b, 0x1f, 0xac, 0x1f,
+ 0x4e, 0x81, 0xf9, 0x3f, 0x21, 0xc6, 0xe2, 0x6d, 0x6a, 0xee, 0x40, 0xac,
+ 0x3e, 0xa0, 0x4e, 0x49, 0x0a, 0xb9, 0x66, 0x08, 0x1c, 0x30, 0x69, 0xf7,
+ 0xb1, 0x6c, 0xba, 0x5d, 0x93, 0xeb, 0x26, 0x52, 0x42, 0x62, 0xd4, 0x7a,
+ 0x8a, 0x6f, 0xb3, 0xb0, 0x30, 0x16, 0x75, 0x4a, 0xd5, 0x23, 0x38, 0xe5,
+ 0xec, 0xb6, 0xe1, 0xf8, 0x02, 0xfd, 0x0e, 0x73, 0xc9, 0x8d, 0x5e, 0x87,
+ 0x90, 0xb6, 0x83, 0x6f, 0x8c, 0x54, 0x55, 0x48, 0x1d, 0x2b, 0x7d, 0xcd,
+ 0xfa, 0xeb, 0x6e, 0x67, 0x97, 0xa3, 0xb2, 0xca, 0x21, 0x6f, 0x28, 0x91,
+ 0x53, 0x07, 0x03, 0xdd, 0x0f, 0x88, 0x9f, 0xc0, 0x7a, 0x8c, 0x0d, 0xa7,
+ 0x91, 0xb5, 0x24, 0xe1, 0xd0, 0x5a, 0x30, 0xf4, 0x82, 0xe8, 0x15, 0xbf,
+ 0xb3, 0xa3, 0x0a, 0x74, 0x42, 0xac, 0xbe, 0x5c, 0x6b, 0x70, 0x6c, 0x07,
+ 0x47, 0x4d, 0x79, 0xb1, 0xab, 0x75, 0x0b, 0x45, 0x0c, 0xd6, 0x10, 0x5e,
+ 0xc5, 0x95, 0xec, 0x81, 0x2f, 0x2a, 0xaf, 0xeb, 0x15, 0x1d, 0xd8, 0x9b,
+ 0xa3, 0xe3, 0x43, 0x9b, 0xd5, 0xf6, 0x7f, 0xef, 0x8c, 0xb0, 0xe5, 0xd5,
+ 0x34, 0xc8, 0xe1, 0xe3, 0x1a, 0x52, 0xaf, 0x20, 0x58, 0x8a, 0x4c, 0xbf,
+ 0x1b, 0x70, 0xbf, 0x3b, 0xfa, 0x71, 0xab, 0xc2, 0xf4, 0xf0, 0xdd, 0xf7,
+ 0x47, 0x67, 0x27, 0xef, 0xde, 0x1e, 0xbe, 0x3b, 0xff, 0xcc, 0x63, 0x77,
+ 0x31, 0x34, 0xf7, 0x3a, 0x4c, 0x2e, 0xc8, 0x11, 0x0e, 0xba, 0xa1, 0x22,
+ 0x40, 0xee, 0xa9, 0x60, 0x56, 0x2a, 0xff, 0x1a, 0xf9, 0xc3, 0x79, 0x0f,
+ 0xa9, 0x67, 0x1f, 0x99, 0x24, 0x4b, 0x78, 0x76, 0x66, 0x88, 0xab, 0x8e,
+ 0x38, 0x16, 0x60, 0xfb, 0x85, 0x02, 0x50, 0xfe, 0x16, 0x00, 0xbe, 0x94,
+ 0x0a, 0x8c, 0xda, 0xb1, 0xcf, 0xec, 0x96, 0x70, 0x10, 0xd0, 0xc5, 0x4a,
+ 0x5b, 0x93, 0x70, 0xc4, 0xfd, 0x5e, 0x0a, 0x40, 0x8b, 0x24, 0xba, 0x1a,
+ 0xae, 0x60, 0x68, 0x5c, 0xc7, 0x71, 0x2e, 0x45, 0xd7, 0xe8, 0x0b, 0x33,
+ 0x09, 0x2f, 0x07, 0xd4, 0x01, 0x04, 0xf8, 0xad, 0x4d, 0xbb, 0xbd, 0x0b,
+ 0xbc, 0x55, 0xfc, 0x59, 0x9d, 0x45, 0x07, 0x3b, 0x3b, 0x3f, 0x53, 0x57,
+ 0xdd, 0x3f, 0x4a, 0x5b, 0xdd, 0x10, 0xfc, 0xb1, 0xf6, 0xa6, 0xe1, 0x4a,
+ 0x86, 0xb4, 0xba, 0x10, 0x74, 0x6b, 0xb7, 0x93, 0xdc, 0xc0, 0x1f, 0x4e,
+ 0xcf, 0x4e, 0x7e, 0xfc, 0xd3, 0x6f, 0xfc, 0x09, 0x2f, 0xd9, 0xec, 0xcf,
+ 0xc8, 0xc1, 0xd4, 0xc1, 0x7f, 0xfe, 0xcd, 0xbf, 0xd6, 0x1e, 0x7e, 0xe0,
+ 0xf5, 0x7e, 0x8f, 0x29, 0x64, 0x5c, 0xbc, 0xcd, 0x10, 0xd7, 0x2e, 0x25,
+ 0x3a, 0xf1, 0x7c, 0x1c, 0x36, 0x19, 0x88, 0x44, 0x5c, 0xdd, 0x26, 0xd0,
+ 0x34, 0x04, 0xbc, 0x1d, 0x71, 0x49, 0xb1, 0xcb, 0xe0, 0xd5, 0xaa, 0x72,
+ 0x54, 0x8e, 0x73, 0x6d, 0x39, 0xe5, 0xa3, 0xda, 0xfd, 0x78, 0x79, 0x7c,
+ 0xfc, 0x9b, 0x6e, 0x02, 0x75, 0x26, 0x75, 0x6b, 0x19, 0x5a, 0x0d, 0x55,
+ 0x7b, 0x9b, 0xaf, 0xc7, 0xe0, 0x7c, 0x77, 0x22, 0xb3, 0x79, 0x41, 0xca,
+ 0xf1, 0xb0, 0xce, 0x8c, 0x4a, 0x9b, 0x22, 0xde, 0xaf, 0x80, 0xc2, 0x98,
+ 0x58, 0xbd, 0xc3, 0x89, 0x93, 0x01, 0xbe, 0x31, 0x3d, 0x44, 0xc9, 0x02,
+ 0x64, 0x42, 0x51, 0x5e, 0x25, 0xef, 0x26, 0x97, 0xc5, 0x51, 0xdd, 0x42,
+ 0x69, 0x71, 0x89, 0xb8, 0x4f, 0x32, 0xf7, 0xe9, 0xbd, 0x88, 0xb4, 0x61,
+ 0x65, 0x74, 0x08, 0xc8, 0xdb, 0x2a, 0xaf, 0x3f, 0x52, 0x51, 0x07, 0x6e,
+ 0x28, 0x29, 0x48, 0x5a, 0xbf, 0x0f, 0x95, 0x97, 0xe6, 0x34, 0x62, 0x88,
+ 0x11, 0x57, 0x4d, 0x97, 0xd7, 0xb1, 0xd9, 0x51, 0x3f, 0x1b, 0x16, 0xc5,
+ 0x70, 0xa3, 0xb2, 0x13, 0x3a, 0x6d, 0x95, 0x76, 0x09, 0x28, 0x33, 0x27,
+ 0x51, 0xd5, 0x16, 0x67, 0x20, 0x56, 0x96, 0x3e, 0xd0, 0x72, 0x63, 0xdb,
+ 0xdf, 0x3c, 0x6f, 0xea, 0x6c, 0x7e, 0x11, 0xaf, 0xb0, 0x8f, 0x72, 0x0b,
+ 0xa9, 0xf0, 0xb7, 0x8d, 0xa2, 0xfd, 0x46, 0xf4, 0x19, 0x61, 0xd2, 0x20,
+ 0xb4, 0x10, 0xfa, 0xeb, 0x84, 0x0e, 0x5b, 0x79, 0x06, 0xb7, 0xae, 0xbd,
+ 0x4f, 0xe2, 0x55, 0xb3, 0x72, 0x9e, 0x98, 0x9e, 0xed, 0x97, 0xb3, 0xb0,
+ 0x60, 0xca, 0x70, 0x24, 0x1f, 0xbf, 0x43, 0x25, 0xef, 0xf0, 0x36, 0x51,
+ 0xe0, 0x10, 0x3e, 0xa7, 0xd6, 0x33, 0xf2, 0x9b, 0x87, 0x0c, 0x47, 0xa0,
+ 0xe9, 0x35, 0x72, 0xa3, 0x65, 0xaa, 0x49, 0x83, 0xec, 0xde, 0x26, 0x11,
+ 0xbf, 0x38, 0x2b, 0xe1, 0x84, 0xb5, 0x13, 0xd6, 0x49, 0x78, 0x13, 0x5f,
+ 0x37, 0xd1, 0xde, 0x99, 0x46, 0x62, 0xc3, 0xe6, 0x31, 0xb8, 0xe0, 0x19,
+ 0x44, 0xc6, 0x1f, 0xcf, 0xce, 0x93, 0xb4, 0x55, 0x9e, 0x23, 0xeb, 0x71,
+ 0x0a, 0xa5, 0x95, 0xc5, 0x82, 0x70, 0xd1, 0xf4, 0x1b, 0xff, 0xca, 0xc8,
+ 0x5d, 0xb0, 0x25, 0xed, 0xa4, 0x84, 0xdb, 0xb2, 0x50, 0x17, 0x69, 0x47,
+ 0xb8, 0x25, 0x09, 0xfd, 0xe3, 0x14, 0x7f, 0x81, 0x50, 0x27, 0x46, 0x44,
+ 0xb1, 0x12, 0x5b, 0x77, 0x20, 0xc5, 0xb2, 0x54, 0x5f, 0x37, 0xd1, 0x32,
+ 0x63, 0x0d, 0x6e, 0x19, 0x11, 0x38, 0x2f, 0xeb, 0x18, 0x9c, 0xe6, 0x04,
+ 0x59, 0xf3, 0x19, 0x35, 0xe0, 0xe0, 0x2b, 0x6f, 0xfe, 0x7b, 0x7e, 0xf2,
+ 0xea, 0xe4, 0xd8, 0xfc, 0xe5, 0xf0, 0xcd, 0xd1, 0x8f, 0x4e, 0x2b, 0x60,
+ 0x80, 0x8a, 0x56, 0x81, 0x8c, 0xeb, 0x3d, 0x6e, 0xd9, 0x10, 0xe7, 0x20,
+ 0x22, 0xfd, 0x90, 0x53, 0xe2, 0xba, 0x14, 0x6a, 0xb9, 0xa5, 0xc7, 0xe7,
+ 0xa4, 0x83, 0x78, 0xab, 0x1b, 0xb8, 0x00, 0x2f, 0x41, 0x8b, 0xe6, 0x91,
+ 0x6d, 0x31, 0x85, 0xdb, 0x64, 0xd4, 0x48, 0xf9, 0x6c, 0x4e, 0xb2, 0x51,
+ 0xdd, 0x27, 0x73, 0x85, 0x25, 0x6a, 0x4d, 0xae, 0xac, 0x6c, 0x77, 0xca,
+ 0xc6, 0xef, 0x7c, 0xdc, 0x69, 0x35, 0xe1, 0x81, 0xb7, 0x1a, 0x0d, 0xd7,
+ 0x5f, 0xa4, 0x6d, 0x57, 0xdc, 0x54, 0x19, 0x71, 0x45, 0x02, 0xaa, 0x83,
+ 0x22, 0xe0, 0xa3, 0x7c, 0x74, 0x28, 0x82, 0x2a, 0x74, 0xec, 0x88, 0xed,
+ 0x35, 0xc9, 0x06, 0x48, 0x2e, 0x1f, 0xe5, 0x56, 0x40, 0x8f, 0xf7, 0x20,
+ 0x7e, 0x84, 0x5a, 0xa3, 0xe5, 0x82, 0x52, 0xa7, 0x84, 0x3f, 0x28, 0xbb,
+ 0x8a, 0xa3, 0x18, 0xc2, 0x51, 0xcf, 0xbd, 0x96, 0xcb, 0x2c, 0x15, 0x24,
+ 0xf8, 0xb4, 0x0c, 0x4d, 0x2b, 0x9c, 0x81, 0x28, 0xfb, 0x6d, 0x8d, 0xa3,
+ 0xee, 0xfb, 0x34, 0x4c, 0x54, 0xd9, 0x03, 0xf7, 0xe9, 0x20, 0xeb, 0x9a,
+ 0x5b, 0x8e, 0xaf, 0x1b, 0x03, 0x1a, 0xe1, 0x5f, 0x57, 0xf9, 0x75, 0x4a,
+ 0xb5, 0x65, 0xe6, 0xb2, 0x68, 0x9f, 0xf2, 0xce, 0x18, 0xe9, 0xaf, 0x1a,
+ 0x24, 0x6d, 0x8f, 0xf2, 0xe4, 0xd7, 0x0c, 0xf2, 0xa4, 0x33, 0xc6, 0xd5,
+ 0xaf, 0x1a, 0x64, 0xa8, 0x02, 0xc2, 0x28, 0xc6, 0x3f, 0x1e, 0x9d, 0x27,
+ 0xaf, 0x4e, 0x5e, 0xbb, 0x0b, 0x76, 0x6e, 0xb3, 0xb7, 0xd3, 0x64, 0xb2,
+ 0x2a, 0x0c, 0x0d, 0xa2, 0x47, 0x0a, 0x35, 0x38, 0xc5, 0x30, 0x9c, 0xa6,
+ 0x88, 0x1c, 0x9c, 0x5a, 0x2b, 0xd6, 0xf2, 0x8a, 0xa1, 0x88, 0x90, 0x57,
+ 0xc3, 0x48, 0x4a, 0x5e, 0x8d, 0x2e, 0x9e, 0x5e, 0x00, 0xe8, 0xe8, 0x52,
+ 0xa5, 0x2f, 0x6e, 0x25, 0xb0, 0xee, 0xd2, 0x4a, 0xab, 0x4a, 0x27, 0x29,
+ 0xc0, 0x8c, 0x0a, 0xae, 0x8d, 0x34, 0xb2, 0x33, 0x02, 0x3d, 0xac, 0xc3,
+ 0xf9, 0x08, 0xc4, 0x46, 0x77, 0xce, 0x1b, 0x9d, 0x8a, 0x9f, 0x49, 0xb8,
+ 0xa7, 0xb9, 0xfe, 0x2d, 0x4a, 0x97, 0xb6, 0x53, 0x24, 0xfc, 0x90, 0xd7,
+ 0x3d, 0xd3, 0xb2, 0x38, 0x52, 0x89, 0x0b, 0x97, 0xb3, 0xcf, 0xcd, 0x67,
+ 0x03, 0x89, 0x6d, 0x87, 0xb0, 0xdf, 0xd9, 0x97, 0x50, 0x82, 0x51, 0xd1,
+ 0xd9, 0x6f, 0x20, 0x79, 0x65, 0xf9, 0xdf, 0x3c, 0x05, 0xfd, 0x91, 0xd5,
+ 0xc7, 0xcc, 0xca, 0xe7, 0xd4, 0xd1, 0x75, 0xc6, 0x17, 0xa2, 0xbe, 0x33,
+ 0x42, 0xfd, 0x96, 0x0c, 0x72, 0xd8, 0x4f, 0x02, 0xe7, 0xe4, 0xde, 0x7c,
+ 0x2c, 0x5a, 0x59, 0x62, 0x71, 0xa3, 0xa8, 0x2d, 0xce, 0xb2, 0x1d, 0x0d,
+ 0x72, 0x5e, 0x0b, 0x2d, 0x91, 0xe6, 0xfe, 0xe6, 0x35, 0x3a, 0xcc, 0x46,
+ 0x3c, 0x17, 0x2e, 0xf1, 0x80, 0xe1, 0x1b, 0xb8, 0xdc, 0xba, 0x64, 0xb7,
+ 0xa6, 0xd7, 0x3e, 0xcc, 0x82, 0xfd, 0x20, 0x33, 0x89, 0xf6, 0x6b, 0xc8,
+ 0xbd, 0x53, 0x82, 0xba, 0x74, 0x57, 0x81, 0xa9, 0x16, 0xc7, 0xac, 0xa4,
+ 0x0d, 0x1c, 0x50, 0x26, 0x2f, 0x5a, 0x5d, 0xa7, 0x80, 0x7a, 0xa0, 0x96,
+ 0x65, 0x69, 0xc1, 0x95, 0x86, 0x7a, 0x02, 0xf1, 0x9a, 0x3b, 0x57, 0xf3,
+ 0xf4, 0x84, 0xff, 0x78, 0xa5, 0x1a, 0x9b, 0x94, 0x0d, 0xf9, 0x8c, 0x85,
+ 0x85, 0x8c, 0x58, 0x37, 0x25, 0x61, 0x74, 0x40, 0x06, 0xd1, 0xfa, 0x88,
+ 0x41, 0x86, 0x9b, 0x50, 0x77, 0x7c, 0x9c, 0x4f, 0x7b, 0xbe, 0xc2, 0x90,
+ 0x4e, 0xee, 0x23, 0xbe, 0x4f, 0x5e, 0xb7, 0x50, 0x9e, 0xf5, 0x46, 0x7b,
+ 0xd6, 0xa5, 0x0b, 0xcf, 0xb3, 0x4f, 0x23, 0xda, 0x27, 0x3f, 0x17, 0x5f,
+ 0x44, 0x86, 0xa2, 0x45, 0x51, 0x9e, 0xab, 0x6c, 0x39, 0x97, 0x95, 0xc9,
+ 0x4f, 0x28, 0x70, 0x4c, 0xde, 0x04, 0xda, 0xe5, 0xa9, 0xce, 0xd2, 0xa8,
+ 0xc3, 0xbe, 0x29, 0xf8, 0x5c, 0x3e, 0x8b, 0xe6, 0x4c, 0xac, 0x3a, 0x10,
+ 0xee, 0x46, 0x6e, 0xe9, 0x4d, 0x9a, 0x41, 0xd3, 0x8f, 0x90, 0xe0, 0x48,
+ 0xa8, 0x0e, 0xfa, 0x6f, 0x79, 0x23, 0x40, 0xba, 0xeb, 0xb8, 0x92, 0xb1,
+ 0xda, 0x55, 0xc5, 0x45, 0xbb, 0x0e, 0xdb, 0x91, 0xf2, 0xd8, 0xd3, 0xa2,
+ 0x91, 0xfc, 0xbf, 0x0a, 0x90, 0x7c, 0x23, 0xc3, 0x8b, 0xca, 0x00, 0x7d,
+ 0xb2, 0xbc, 0x68, 0x04, 0xfb, 0x8b, 0xfb, 0x20, 0xf1, 0xfe, 0x5c, 0xa5,
+ 0xc5, 0x65, 0xc6, 0xfe, 0x17, 0x0f, 0x9e, 0x92, 0x7b, 0x68, 0xb1, 0x38,
+ 0x34, 0x77, 0x9d, 0x9c, 0x3c, 0xbd, 0xe8, 0x13, 0x6e, 0x1f, 0xf6, 0x76,
+ 0xed, 0x3e, 0x70, 0x7b, 0x1c, 0xaa, 0x4e, 0xc1, 0x2e, 0xfc, 0x40, 0x88,
+ 0x84, 0x37, 0x29, 0xb7, 0xcf, 0xd4, 0x26, 0xd3, 0xce, 0x68, 0xb1, 0x61,
+ 0x1e, 0x44, 0xd6, 0xc2, 0x3c, 0x69, 0x42, 0x72, 0x40, 0x16, 0x0c, 0xf4,
+ 0x01, 0x4e, 0xf5, 0xe4, 0xf2, 0x46, 0x11, 0x57, 0x03, 0x32, 0xe8, 0x2d,
+ 0x83, 0xe4, 0x38, 0x2b, 0xf1, 0xde, 0xeb, 0x2c, 0x06, 0x9b, 0xa1, 0xb8,
+ 0x55, 0x5e, 0x36, 0x87, 0x03, 0x0d, 0xf1, 0xd6, 0xb3, 0x67, 0xd7, 0x73,
+ 0x43, 0x84, 0x72, 0xfa, 0x72, 0x3c, 0x56, 0x32, 0x79, 0x15, 0x52, 0x84,
+ 0x44, 0x8f, 0x08, 0x41, 0x47, 0x8a, 0xa4, 0x23, 0xaa, 0xa2, 0x0c, 0xd2,
+ 0x49, 0x32, 0xd8, 0x63, 0x9e, 0xf6, 0x9a, 0x19, 0x33, 0x69, 0x13, 0xb2,
+ 0x5e, 0xa6, 0x2b, 0x5d, 0xf1, 0xcd, 0xfa, 0x9d, 0xfc, 0x2c, 0x9a, 0xae,
+ 0xc2, 0x01, 0x4b, 0xec, 0x33, 0x15, 0x23, 0x2b, 0x8f, 0x27, 0xd5, 0xf0,
+ 0x76, 0xd9, 0xee, 0x88, 0xbd, 0xf7, 0x28, 0x5c, 0xf4, 0xf7, 0xbc, 0xaa,
+ 0xc1, 0x3f, 0xb5, 0xe8, 0xef, 0x23, 0x8b, 0x7e, 0xec, 0x2e, 0x0e, 0x7f,
+ 0x2c, 0xd9, 0xdf, 0x7f, 0xa6, 0x05, 0x21, 0x86, 0x8e, 0xe9, 0x7b, 0xee,
+ 0x83, 0xde, 0x17, 0xcd, 0x73, 0x43, 0xaa, 0x3f, 0x08, 0xbf, 0xe5, 0x5d,
+ 0x5e, 0xef, 0x53, 0x4f, 0xec, 0xa7, 0x8c, 0xfa, 0x0d, 0x0b, 0xd4, 0xe8,
+ 0xf4, 0xcc, 0x65, 0x02, 0xe6, 0xa3, 0xa6, 0x1c, 0xd4, 0xf0, 0x1b, 0xe4,
+ 0x4f, 0x35, 0x56, 0x97, 0xec, 0x7c, 0x4a, 0x67, 0xe1, 0x7d, 0xe7, 0xa9,
+ 0x75, 0xa3, 0xec, 0xec, 0x6b, 0x00, 0xfd, 0x25, 0xf1, 0xe2, 0x79, 0xb6,
+ 0x20, 0xca, 0x9c, 0x65, 0x40, 0xeb, 0x71, 0xee, 0x3f, 0xae, 0xb9, 0xbb,
+ 0xa8, 0x52, 0x42, 0x5b, 0x9e, 0xa7, 0x77, 0x11, 0xb0, 0x2d, 0xf1, 0x14,
+ 0xb3, 0xb9, 0x92, 0x62, 0xf6, 0x05, 0x6c, 0x05, 0xd2, 0x04, 0xc4, 0x6d,
+ 0x06, 0x3f, 0x2c, 0x4e, 0xb4, 0xbc, 0xb0, 0xae, 0x5a, 0xf9, 0x6a, 0x00,
+ 0x07, 0x50, 0x4b, 0xdb, 0x32, 0xbe, 0x32, 0xa2, 0x25, 0xc4, 0xb1, 0xe1,
+ 0xf6, 0x9e, 0xb9, 0x23, 0xb2, 0xe7, 0x00, 0xc7, 0x16, 0x43, 0x84, 0x78,
+ 0xbb, 0xa7, 0xbc, 0x44, 0xe3, 0x01, 0xd2, 0x42, 0x04, 0x51, 0xba, 0x3c,
+ 0xb4, 0x9a, 0x2b, 0x4f, 0x41, 0xdc, 0x63, 0x6e, 0x7c, 0x0a, 0x66, 0x27,
+ 0x80, 0xbb, 0xa3, 0xe4, 0x84, 0xbc, 0x70, 0x2d, 0x88, 0xf1, 0x0b, 0x26,
+ 0x7d, 0x57, 0x34, 0xda, 0x26, 0xdc, 0xe7, 0xee, 0x84, 0x75, 0x4e, 0x9a,
+ 0xfc, 0xb2, 0xa3, 0x4c, 0xd6, 0x0a, 0x14, 0xf5, 0x36, 0x67, 0xc9, 0xd9,
+ 0xe1, 0xf9, 0x19, 0xc5, 0x79, 0x89, 0x01, 0x04, 0x20, 0xa9, 0x69, 0xb5,
+ 0x6d, 0x41, 0x82, 0x84, 0x9d, 0x39, 0x3d, 0xc4, 0x31, 0x08, 0xc6, 0x2f,
+ 0xb3, 0xe7, 0xcd, 0xff, 0xd4, 0xf7, 0xb8, 0xfa, 0x25, 0xd3, 0x5a, 0x13,
+ 0x17, 0xd1, 0x69, 0x23, 0xab, 0xed, 0xef, 0xbb, 0x2c, 0x24, 0x6e, 0x69,
+ 0xca, 0x62, 0x4e, 0x32, 0xc9, 0x47, 0x92, 0xdd, 0xa2, 0xc5, 0x17, 0xda,
+ 0xc2, 0x0a, 0x0f, 0x71, 0x36, 0x76, 0x59, 0x45, 0x44, 0xae, 0x7c, 0x5a,
+ 0xe5, 0x3f, 0x4f, 0xc1, 0xa1, 0xa8, 0xf1, 0xd7, 0xf8, 0xa7, 0xcc, 0x3d,
+ 0xa5, 0x02, 0x30, 0x79, 0xbc, 0xbb, 0x1b, 0x81, 0x1d, 0x4e, 0x27, 0x86,
+ 0xa9, 0x8a, 0x36, 0x27, 0x55, 0x3d, 0xf4, 0x16, 0x7b, 0x4d, 0x49, 0xbd,
+ 0xac, 0x61, 0x6a, 0x0c, 0x2f, 0xe0, 0xc6, 0xc4, 0x8e, 0x85, 0x46, 0xc5,
+ 0x3e, 0xf3, 0x98, 0x1f, 0xa8, 0xca, 0x48, 0x37, 0xad, 0xc3, 0x5c, 0xb8,
+ 0x04, 0x49, 0x7b, 0x66, 0xa6, 0x1e, 0x18, 0xb3, 0xf8, 0xbf, 0x83, 0x99,
+ 0x05, 0xfc, 0x7b, 0xff, 0x49, 0x48, 0x11, 0xe3, 0xf3, 0x93, 0x33, 0xa1,
+ 0xb0, 0x50, 0x34, 0xf3, 0x8e, 0xd0, 0x23, 0x0e, 0x6d, 0x65, 0x10, 0x42,
+ 0xee, 0xcc, 0x2c, 0x3e, 0x80, 0x45, 0x31, 0xf5, 0xbe, 0xca, 0x1c, 0x80,
+ 0xda, 0x66, 0xc9, 0xd2, 0xbe, 0x17, 0x44, 0x00, 0xc5, 0xeb, 0xd5, 0x7b,
+ 0xe9, 0xbd, 0xc4, 0xd7, 0xec, 0x84, 0xef, 0x2f, 0x57, 0xaf, 0x83, 0x8e,
+ 0xa4, 0x8e, 0x1d, 0x78, 0xbf, 0x92, 0x0e, 0x6b, 0xfb, 0xfb, 0x75, 0x69,
+ 0x91, 0x2f, 0xd1, 0x89, 0x83, 0x64, 0x66, 0x0e, 0x2f, 0xeb, 0xb4, 0x56,
+ 0x31, 0xf5, 0x98, 0x04, 0x9f, 0x60, 0xc8, 0x62, 0x49, 0x6c, 0x4a, 0xd9,
+ 0x17, 0x36, 0x0d, 0x60, 0xdd, 0xcb, 0x6a, 0x26, 0xe9, 0x2b, 0x22, 0x38,
+ 0xd5, 0x58, 0x70, 0x7a, 0xb6, 0x93, 0xfa, 0xa7, 0x27, 0x67, 0xe7, 0x56,
+ 0xe6, 0xe3, 0xb3, 0xf4, 0x83, 0xce, 0xed, 0x41, 0xbf, 0x14, 0xc1, 0x9f,
+ 0x10, 0xc9, 0x46, 0x9d, 0x3b, 0x3f, 0x8b, 0x42, 0x10, 0xc8, 0x91, 0xd0,
+ 0x38, 0x3a, 0xd0, 0x80, 0xda, 0xac, 0xce, 0x4a, 0x86, 0xf3, 0xb1, 0xfc,
+ 0x86, 0x3d, 0xe8, 0x24, 0x68, 0x7a, 0x90, 0xc1, 0x9c, 0x72, 0xfb, 0x68,
+ 0x2f, 0xa4, 0x0c, 0xd8, 0xd0, 0x67, 0x87, 0xe3, 0x73, 0x9e, 0x39, 0xfe,
+ 0x16, 0xcc, 0x9c, 0xeb, 0x43, 0xe5, 0x87, 0xa1, 0x13, 0xd5, 0x52, 0x06,
+ 0x32, 0xd0, 0x8c, 0xb5, 0x41, 0xe3, 0xdb, 0x02, 0x77, 0x6f, 0xc7, 0x1e,
+ 0x79, 0xd9, 0x86, 0xc4, 0x34, 0x85, 0x4e, 0xe8, 0x7e, 0xd3, 0x0f, 0x36,
+ 0xe4, 0x2b, 0x1b, 0x46, 0x2d, 0xe3, 0xeb, 0xd0, 0x82, 0x5f, 0x7f, 0xf4,
+ 0xd8, 0x8d, 0xb0, 0x84, 0xa4, 0x92, 0x01, 0x8e, 0xb4, 0x39, 0x26, 0x7e,
+ 0x38, 0x54, 0x52, 0x21, 0x61, 0xc1, 0x44, 0xc1, 0xcf, 0xb9, 0x71, 0x9e,
+ 0x48, 0x89, 0xfa, 0xb1, 0x55, 0x15, 0xbc, 0xa9, 0xe0, 0xc7, 0x9a, 0xf2,
+ 0x43, 0xda, 0x46, 0x87, 0xe4, 0x1e, 0x31, 0xa5, 0x7f, 0x8d, 0x6c, 0x41,
+ 0x9b, 0xb6, 0xc8, 0x6b, 0xf7, 0xe5, 0x82, 0x51, 0xb6, 0xf2, 0x62, 0x95,
+ 0x91, 0x8e, 0x96, 0x56, 0x73, 0xf4, 0x7a, 0x30, 0x4c, 0xa4, 0xe2, 0xfa,
+ 0xb1, 0x9b, 0x22, 0x06, 0x4b, 0xed, 0x7d, 0x43, 0xe4, 0xcf, 0xd1, 0xf1,
+ 0xa1, 0x3b, 0x2a, 0xee, 0x13, 0x41, 0x97, 0xd8, 0xe9, 0xfa, 0x68, 0x68,
+ 0x6d, 0xc5, 0xc4, 0x28, 0x39, 0x45, 0xa7, 0x62, 0xd2, 0x99, 0xea, 0xff,
+ 0x70, 0xa3, 0xf1, 0x25, 0x21, 0x0f, 0xbc, 0x11, 0x9b, 0x54, 0xee, 0x9c,
+ 0x17, 0xe6, 0x64, 0xe9, 0x27, 0xf8, 0xab, 0x87, 0x69, 0x1e, 0x2c, 0xf7,
+ 0xb9, 0x7b, 0xb9, 0x36, 0x2b, 0x31, 0x16, 0x7a, 0xf7, 0x91, 0xc7, 0x42,
+ 0x57, 0xc6, 0x7c, 0xa7, 0x21, 0x2c, 0x6b, 0xc6, 0x5d, 0x96, 0x66, 0x31,
+ 0x33, 0x1e, 0xe1, 0x42, 0x9f, 0x69, 0xb1, 0x70, 0x6f, 0x28, 0x16, 0x06,
+ 0x2f, 0x27, 0xb6, 0x81, 0x10, 0x92, 0x84, 0xa1, 0xc8, 0x99, 0xb1, 0x0a,
+ 0x70, 0xda, 0xb9, 0xcd, 0xb5, 0xf7, 0x63, 0xc0, 0xb4, 0xb5, 0x16, 0x2f,
+ 0xaa, 0xbb, 0xb9, 0x9d, 0xb6, 0xcb, 0x8f, 0x99, 0x12, 0x2d, 0xd9, 0x58,
+ 0xf9, 0xd5, 0x9a, 0x9d, 0x64, 0x27, 0x0b, 0xee, 0x1d, 0x9c, 0x06, 0x88,
+ 0x07, 0x18, 0xf9, 0xee, 0x2b, 0xff, 0x8f, 0x9f, 0xb8, 0xa1, 0x2e, 0x08,
+ 0xbc, 0x47, 0xf9, 0xfa, 0xcb, 0x96, 0x53, 0xce, 0x76, 0x92, 0xc8, 0xed,
+ 0x93, 0x6c, 0x36, 0x72, 0xed, 0x79, 0xe4, 0x4a, 0x79, 0xdf, 0x78, 0x26,
+ 0xa6, 0x2f, 0x6c, 0xdf, 0xe2, 0xce, 0x25, 0xdf, 0x8f, 0x38, 0xaa, 0xcc,
+ 0x7e, 0x33, 0x6e, 0x54, 0x23, 0xbf, 0x11, 0x10, 0xc6, 0x2b, 0xf1, 0xcb,
+ 0xa0, 0xdf, 0x67, 0x80, 0xb8, 0xb8, 0x5a, 0x48, 0x0e, 0xaf, 0xf7, 0xa5,
+ 0xcf, 0xc5, 0x93, 0x81, 0xe2, 0xf3, 0xc2, 0x81, 0x14, 0x79, 0x0b, 0x81,
+ 0xa2, 0x2b, 0x56, 0xb3, 0x86, 0xf2, 0x0d, 0x73, 0x9c, 0xa6, 0x36, 0x05,
+ 0x38, 0xc4, 0xd8, 0x03, 0x72, 0x19, 0xd8, 0xac, 0x28, 0xbb, 0xea, 0x51,
+ 0x28, 0xb5, 0x08, 0x58, 0x3c, 0x0b, 0xf2, 0x18, 0xff, 0xca, 0x36, 0x0d,
+ 0x0a, 0x5d, 0xe2, 0x55, 0xf6, 0x17, 0x52, 0x24, 0x47, 0xb6, 0x47, 0xa3,
+ 0x06, 0x94, 0xd3, 0x62, 0x95, 0x7a, 0xb6, 0xfc, 0xe3, 0xe7, 0xe2, 0xa1,
+ 0x12, 0x37, 0x88, 0xf6, 0x04, 0xef, 0x86, 0x17, 0x9f, 0xec, 0x59, 0x5f,
+ 0x25, 0x52, 0x66, 0xa5, 0x0e, 0xc4, 0x4f, 0x9c, 0x05, 0xfc, 0xf1, 0xf8,
+ 0xdb, 0xe4, 0xed, 0xeb, 0x27, 0x48, 0xe8, 0xb9, 0xcc, 0xaa, 0x65, 0x85,
+ 0x24, 0x4e, 0xa5, 0xe1, 0x93, 0xef, 0xbc, 0xc1, 0xf6, 0x5d, 0xf6, 0x85,
+ 0x82, 0x23, 0x0a, 0x33, 0x13, 0x7b, 0xc1, 0x1c, 0x21, 0x0a, 0x9f, 0x2f,
+ 0x07, 0x12, 0x6c, 0x51, 0x1c, 0x3f, 0x45, 0xab, 0x22, 0xad, 0xa5, 0xdb,
+ 0x67, 0xbd, 0xcd, 0xc0, 0x9e, 0x3c, 0x72, 0x0c, 0xac, 0xba, 0x5b, 0xa2,
+ 0xb9, 0x4a, 0x71, 0x09, 0xb3, 0x20, 0x72, 0xa3, 0x9e, 0x30, 0xd3, 0x7c,
+ 0xc5, 0xf7, 0x1e, 0x3a, 0x6c, 0xf8, 0x1a, 0xa9, 0xe7, 0xe4, 0x2e, 0xf5,
+ 0xde, 0x7b, 0xe2, 0x7b, 0x15, 0x00, 0x8f, 0x4b, 0x89, 0x52, 0xdc, 0x12,
+ 0x83, 0x34, 0x14, 0xef, 0xd9, 0xa7, 0xf6, 0x59, 0xf8, 0x8d, 0xf2, 0xc2,
+ 0x6b, 0x61, 0xd4, 0xf3, 0x86, 0x28, 0xbf, 0x6a, 0x20, 0xa8, 0x62, 0xc6,
+ 0xfa, 0x8e, 0xb7, 0xf7, 0xde, 0x2b, 0xcf, 0xdb, 0x4e, 0x13, 0xea, 0x6d,
+ 0x60, 0x09, 0x93, 0x16, 0x45, 0x2d, 0x34, 0x3d, 0x37, 0x0b, 0xcb, 0xe8,
+ 0xd3, 0x6e, 0x1e, 0xb4, 0xf2, 0xc0, 0xcc, 0x47, 0x10, 0xd1, 0xab, 0xce,
+ 0xa4, 0xff, 0xea, 0x65, 0xd2, 0x57, 0x04, 0x44, 0xb4, 0xee, 0x7d, 0x64,
+ 0x4f, 0xee, 0x0c, 0xba, 0xd1, 0x5e, 0x16, 0xf9, 0xdf, 0x32, 0x2f, 0x17,
+ 0x4c, 0xdb, 0x4f, 0x79, 0x8f, 0xef, 0x0b, 0xc3, 0xe0, 0x8e, 0xa3, 0xc4,
+ 0x14, 0x11, 0x3c, 0x75, 0x0f, 0x3c, 0x12, 0xaa, 0xe5, 0x16, 0xbd, 0x9c,
+ 0xfb, 0x80, 0x06, 0xdb, 0x08, 0xdd, 0x67, 0xad, 0xb4, 0xfa, 0xa7, 0x8f,
+ 0x45, 0xe7, 0x52, 0xdd, 0x18, 0x92, 0x17, 0x1b, 0x31, 0x27, 0x40, 0xc6,
+ 0x2e, 0x9b, 0x7e, 0x2a, 0x62, 0x4f, 0x8e, 0xd2, 0xb6, 0xa0, 0xb2, 0xed,
+ 0xbc, 0xf0, 0xd7, 0x9b, 0xbc, 0x90, 0x44, 0xf7, 0xe0, 0xf5, 0xa7, 0x3d,
+ 0xee, 0xc7, 0x9a, 0x65, 0xe6, 0x21, 0xd1, 0x92, 0xf7, 0xfc, 0x33, 0x77,
+ 0x13, 0x1c, 0x02, 0xed, 0xc0, 0xe1, 0xde, 0x0e, 0x7c, 0xcc, 0x52, 0xbd,
+ 0x4b, 0xec, 0x42, 0xc9, 0xb8, 0xd7, 0x41, 0x04, 0x59, 0xfe, 0xc2, 0x7e,
+ 0x7e, 0x5e, 0x82, 0x9b, 0x7a, 0xdf, 0x63, 0x92, 0x7a, 0x43, 0xbd, 0x2a,
+ 0x9c, 0x71, 0x50, 0xb4, 0x3a, 0xcc, 0xbb, 0xa7, 0x9f, 0x0b, 0x6d, 0xa8,
+ 0xbc, 0xb4, 0xc6, 0x6a, 0xdf, 0x1b, 0xcf, 0x76, 0x7d, 0x65, 0x75, 0x86,
+ 0xa8, 0x2c, 0x97, 0xf1, 0xf7, 0xbe, 0xc0, 0x94, 0x71, 0x34, 0x47, 0xb3,
+ 0xf6, 0xb9, 0xb6, 0x80, 0x57, 0x34, 0x43, 0xf7, 0xd8, 0x7e, 0x8b, 0xe9,
+ 0x9e, 0xfb, 0xea, 0x53, 0x72, 0xf4, 0xda, 0x7b, 0xf0, 0x91, 0x5b, 0x60,
+ 0x3a, 0x87, 0x36, 0x70, 0xc7, 0x7e, 0xaa, 0x5a, 0x9a, 0xcf, 0x7b, 0x8f,
+ 0x32, 0x65, 0xbc, 0x2b, 0x19, 0x75, 0x8b, 0xb6, 0x3f, 0x78, 0x86, 0xc9,
+ 0xe1, 0xd5, 0x95, 0x91, 0x6a, 0xd3, 0x86, 0x72, 0x42, 0x0b, 0x8d, 0x71,
+ 0x75, 0xcf, 0xfe, 0xd9, 0xd3, 0x35, 0xcf, 0x8a, 0xd0, 0xac, 0xad, 0xa8,
+ 0xf7, 0xde, 0x7b, 0x16, 0x5e, 0x73, 0x35, 0x07, 0xb4, 0x4c, 0xc1, 0x5c,
+ 0x35, 0xdc, 0xb4, 0x64, 0x0b, 0xe5, 0xd1, 0xff, 0xa1, 0x8e, 0xc1, 0x0a,
+ 0x78, 0x82, 0xf5, 0x7f, 0xf8, 0xf3, 0xfd, 0xdc, 0xaf, 0x75, 0x60, 0xaf,
+ 0x60, 0x95, 0x51, 0x9c, 0x60, 0xda, 0x6a, 0x17, 0xe1, 0x72, 0x84, 0x68,
+ 0x77, 0xbc, 0x11, 0xf8, 0xcc, 0x8d, 0x1e, 0xb1, 0x2a, 0x1c, 0xe7, 0x60,
+ 0x23, 0x50, 0xd0, 0x08, 0x66, 0x3e, 0xf4, 0x24, 0x78, 0xbe, 0x78, 0xa0,
+ 0x3c, 0x1f, 0xea, 0x6e, 0xe7, 0x1a, 0xd4, 0x57, 0x2b, 0x36, 0xb9, 0xed,
+ 0x8a, 0x9c, 0x83, 0xcd, 0x7b, 0x6d, 0xdf, 0x71, 0x2f, 0x9a, 0x1b, 0xa9,
+ 0x8d, 0xaf, 0xcc, 0x6c, 0xd9, 0x26, 0xb7, 0xfd, 0x03, 0xa8, 0x5e, 0xfa,
+ 0xa6, 0x2a, 0xf1, 0x57, 0x85, 0x08, 0xd9, 0x4a, 0x7b, 0x52, 0x33, 0x25,
+ 0x89, 0xdc, 0xfb, 0x8c, 0xa8, 0x36, 0x48, 0x71, 0x32, 0xa7, 0x74, 0x95,
+ 0x4d, 0x3f, 0xea, 0x95, 0x91, 0x41, 0x5c, 0xea, 0xb9, 0xf7, 0xd6, 0x63,
+ 0xbb, 0xb5, 0x64, 0xd0, 0x9c, 0x1d, 0x76, 0xad, 0x00, 0xf7, 0x28, 0x53,
+ 0xcd, 0xd9, 0xf9, 0xf8, 0xf4, 0x00, 0x73, 0xe6, 0xb8, 0xa1, 0xb9, 0x10,
+ 0xaf, 0xc6, 0xd9, 0x5f, 0xa5, 0xce, 0xac, 0x76, 0x4f, 0x3f, 0xed, 0x79,
+ 0x7a, 0x2c, 0x8e, 0xbd, 0x23, 0x42, 0x6a, 0x36, 0xe7, 0xe0, 0xbf, 0xc4,
+ 0x44, 0xb3, 0x2a, 0xd4, 0xbf, 0xcf, 0xfe, 0x2f, 0xcc, 0x8c, 0xb8, 0x21,
+ 0x62, 0xcb, 0xee, 0xe1, 0xcf, 0x9d, 0x4d, 0x73, 0xb5, 0x2a, 0x3e, 0x5a,
+ 0x7d, 0x51, 0x70, 0xf4, 0xf4, 0x80, 0xdd, 0x0b, 0xcf, 0xf5, 0x6a, 0x78,
+ 0x7e, 0x50, 0x9b, 0xf7, 0x34, 0x10, 0x0f, 0x85, 0x36, 0x9c, 0xe7, 0x98,
+ 0xa7, 0xe1, 0xaf, 0x2b, 0x6f, 0x0f, 0x9e, 0xef, 0x5a, 0xf1, 0x2b, 0x90,
+ 0x3c, 0x1f, 0xb3, 0x3b, 0x47, 0x75, 0x9a, 0x63, 0xb1, 0xcc, 0x0b, 0xb8,
+ 0x20, 0xdc, 0x23, 0x6e, 0x80, 0xbd, 0x96, 0x10, 0xe8, 0xaa, 0x1b, 0x75,
+ 0x93, 0x36, 0x2b, 0x4f, 0xc4, 0x3c, 0x67, 0xda, 0x19, 0x23, 0xea, 0xb8,
+ 0x10, 0x7a, 0xcd, 0x0b, 0xf5, 0xb6, 0x75, 0x5c, 0x68, 0xfa, 0xd2, 0x8f,
+ 0x3f, 0xb2, 0x1c, 0x29, 0x15, 0x18, 0x49, 0x42, 0x57, 0xb6, 0xf9, 0x93,
+ 0x61, 0xba, 0xac, 0x7a, 0xe0, 0x0a, 0x53, 0xbc, 0xa7, 0xca, 0xd0, 0x9f,
+ 0x52, 0xb1, 0x6f, 0xe8, 0xf2, 0xc4, 0xa2, 0xe7, 0x65, 0x21, 0x31, 0x5b,
+ 0x24, 0x6f, 0x92, 0xeb, 0x93, 0xc1, 0xa6, 0xd9, 0x15, 0x66, 0x66, 0xf0,
+ 0xf2, 0xfd, 0xf9, 0xb7, 0x27, 0x67, 0xe3, 0x64, 0x07, 0xb5, 0xed, 0xe7,
+ 0x67, 0x47, 0x5f, 0xbf, 0x3f, 0x37, 0xff, 0xd4, 0x91, 0x5e, 0xa7, 0x45,
+ 0x6e, 0xa4, 0xd3, 0xb8, 0xc9, 0x0a, 0x43, 0x2b, 0x97, 0xda, 0xa3, 0x89,
+ 0x72, 0x50, 0x20, 0x8f, 0xcb, 0x4a, 0x21, 0x4d, 0x90, 0x8e, 0x52, 0xce,
+ 0x5d, 0x32, 0x01, 0x7b, 0xb0, 0x91, 0xe3, 0x57, 0x3a, 0xcb, 0x39, 0xef,
+ 0x14, 0xe5, 0x6b, 0xda, 0x4e, 0x72, 0xfe, 0xed, 0xcb, 0x77, 0xdf, 0x8d,
+ 0xb5, 0x83, 0xc7, 0x0f, 0x3f, 0xfc, 0xd0, 0x0d, 0xee, 0xfa, 0x7d, 0xb8,
+ 0x3f, 0xfb, 0x6c, 0x7c, 0x78, 0x98, 0xbc, 0x3c, 0x1e, 0x9f, 0x7c, 0xe6,
+ 0x70, 0x1c, 0xb6, 0xf6, 0xb6, 0x8d, 0x92, 0x76, 0x99, 0x35, 0xe6, 0x2f,
+ 0x9f, 0x7d, 0xf6, 0xff, 0x00, 0x41, 0x7c, 0x59, 0x3a, 0x17, 0x88, 0x02,
+ 0x00,
};
#define BUF_SIZE 0x10000
static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size)
diff --git a/src/tool_main.c b/src/tool_main.c
index c3a81e93..5679f361 100644
--- a/src/tool_main.c
+++ b/src/tool_main.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -112,7 +112,7 @@ static void memory_tracking_init(void)
env[CURL_MT_LOGFNAME_BUFSIZE-1] = '\0';
strcpy(fname, env);
curl_free(env);
- curl_memdebug(fname);
+ curl_dbg_memdebug(fname);
/* this weird stuff here is to make curl_free() get called
before curl_memdebug() as otherwise memory tracking will
log a free() without an alloc! */
@@ -123,7 +123,7 @@ static void memory_tracking_init(void)
char *endptr;
long num = strtol(env, &endptr, 10);
if((endptr != env) && (endptr == env + strlen(env)) && (num > 0))
- curl_memlimit(num);
+ curl_dbg_memlimit(num);
curl_free(env);
}
}
diff --git a/src/tool_operate.c b/src/tool_operate.c
index 4516c8e6..e1ceabe7 100644
--- a/src/tool_operate.c
+++ b/src/tool_operate.c
@@ -33,6 +33,10 @@
# include <fabdef.h>
#endif
+#ifdef __AMIGA__
+# include <proto/dos.h>
+#endif
+
#include "strcase.h"
#define ENABLE_CURLX_PRINTF
@@ -945,6 +949,9 @@ static CURLcode operate_do(struct GlobalConfig *global,
config->postfieldsize);
break;
case HTTPREQ_MIMEPOST:
+ result = tool2curlmime(curl, config->mimeroot, &config->mimepost);
+ if(result)
+ goto show_error;
my_setopt_mimepost(curl, CURLOPT_MIMEPOST, config->mimepost);
break;
default:
@@ -1006,7 +1013,8 @@ static CURLcode operate_do(struct GlobalConfig *global,
if(config->tr_encoding)
my_setopt(curl, CURLOPT_TRANSFER_ENCODING, 1L);
/* new in libcurl 7.64.0 */
- my_setopt(curl, CURLOPT_HTTP09_ALLOWED, config->http09_allowed);
+ my_setopt(curl, CURLOPT_HTTP09_ALLOWED,
+ config->http09_allowed ? 1L : 0L);
} /* (built_in_protos & CURLPROTO_HTTP) */
@@ -1534,6 +1542,12 @@ static CURLcode operate_do(struct GlobalConfig *global,
if(config->disallow_username_in_url)
my_setopt(curl, CURLOPT_DISALLOW_USERNAME_IN_URL, 1L);
+#ifdef USE_ALTSVC
+ /* only if explicitly enabled in configure */
+ if(config->altsvc)
+ my_setopt_str(curl, CURLOPT_ALTSVC, config->altsvc);
+#endif
+
/* initialize retry vars for loop below */
retry_sleep_default = (config->retry_delay) ?
config->retry_delay*1000L : RETRY_SLEEP_DEFAULT; /* ms */
@@ -1856,9 +1870,9 @@ static CURLcode operate_do(struct GlobalConfig *global,
#ifdef __AMIGA__
if(!result && outs.s_isreg && outs.filename) {
/* Set the url (up to 80 chars) as comment for the file */
- if(strlen(url) > 78)
- url[79] = '\0';
- SetComment(outs.filename, url);
+ if(strlen(urlnode->url) > 78)
+ urlnode->url[79] = '\0';
+ SetComment(outs.filename, urlnode->url);
}
#endif
diff --git a/src/tool_setopt.c b/src/tool_setopt.c
index cd28ad82..745b4546 100644
--- a/src/tool_setopt.c
+++ b/src/tool_setopt.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -32,7 +32,6 @@
#include "tool_setopt.h"
#include "tool_convert.h"
-#include "mime.h"
#include "memdebug.h" /* keep this as LAST include */
/* Lookup tables for converting setopt values back to symbols */
@@ -187,6 +186,12 @@ static const NameValue setopt_nv_CURLNONZERODEFAULTS[] = {
if(ret) \
goto nomem; \
} WHILE_FALSE
+#define NULL_CHECK(p) do { \
+ if(!p) { \
+ ret = CURLE_OUT_OF_MEMORY; \
+ goto nomem; \
+ } \
+} WHILE_FALSE
#define DECL0(s) ADD((&easysrc_decl, s))
#define DECL1(f,a) ADDF((&easysrc_decl, f,a))
@@ -406,174 +411,184 @@ static CURLcode libcurl_generate_slist(struct curl_slist *slist, int *slistno)
return ret;
}
-/* Generate source code for a mime structure. */
-static CURLcode libcurl_generate_mime(curl_mime *mime, int *mimeno)
+static CURLcode libcurl_generate_mime(CURL *curl,
+ struct GlobalConfig *config,
+ tool_mime *toolmime,
+ int *mimeno); /* Forward. */
+
+/* Wrapper to generate source code for a mime part. */
+static CURLcode libcurl_generate_mime_part(CURL *curl,
+ struct GlobalConfig *config,
+ tool_mime *part,
+ int mimeno)
{
CURLcode ret = CURLE_OK;
- int i;
- curl_off_t size;
- curl_mimepart *part;
- char *filename;
+ int submimeno = 0;
char *escaped = NULL;
- char *cp;
- char *data;
+ const char *data = NULL;
+ const char *filename = part->filename;
+
+ /* Parts are linked in reverse order. */
+ if(part->prev) {
+ ret = libcurl_generate_mime_part(curl, config, part->prev, mimeno);
+ if(ret)
+ return ret;
+ }
- /* May need several mime variables, so invent name */
- *mimeno = ++easysrc_mime_count;
+ /* Create the part. */
+ CODE2("part%d = curl_mime_addpart(mime%d);", mimeno, mimeno);
- DECL1("curl_mime *mime%d;", *mimeno);
- DATA1("mime%d = NULL;", *mimeno);
- CODE1("mime%d = curl_mime_init(hnd);", *mimeno);
- CLEAN1("curl_mime_free(mime%d);", *mimeno);
- CLEAN1("mime%d = NULL;", *mimeno);
- if(mime->firstpart) {
- DECL1("curl_mimepart *part%d;", *mimeno);
- for(part = mime->firstpart; part; part = part->nextpart) {
- CODE2("part%d = curl_mime_addpart(mime%d);", *mimeno, *mimeno);
- filename = part->filename;
- switch(part->kind) {
- case MIMEKIND_FILE:
- Curl_safefree(escaped);
- escaped = c_escape(part->data, CURL_ZERO_TERMINATED);
- if(!escaped)
- return CURLE_OUT_OF_MEMORY;
- CODE2("curl_mime_filedata(part%d, \"%s\");", *mimeno, escaped);
- if(!filename)
- CODE1("curl_mime_filename(part%d, NULL);", *mimeno);
- else {
- /* Fast check to see if remote file name is base name. */
- filename = part->data;
- for(cp = filename; *cp; cp++)
- if(*cp == '/' || *cp == '\\')
- filename = cp + 1;
- if(!part->filename || !strcmp(filename, part->filename))
- filename = NULL;
- else
- filename = part->filename;
- }
- break;
- case MIMEKIND_CALLBACK:
- /* Can only be reading stdin in the current context. */
- CODE1("curl_mime_data_cb(part%d, -1, (curl_read_callback) fread, \\",
- *mimeno);
- CODE0(" (curl_seek_callback) fseek, NULL, stdin);");
- break;
- case MIMEKIND_DATA:
-#ifdef CURL_DOES_CONVERSIONS
- /* Data is stored in ASCII and we want in in the host character
- code. Convert it back for output. */
- data = malloc(part->datasize + 1);
- if(!data) {
- ret = CURLE_OUT_OF_MEMORY;
- goto nomem;
- }
- memcpy(data, part->data, part->datasize + 1);
- ret = convert_from_network(data, strlen(data));
- if(ret) {
- Curl_safefree(data);
- goto nomem;
- }
-#else
- data = part->data;
-#endif
+ switch(part->kind) {
+ case TOOLMIME_PARTS:
+ ret = libcurl_generate_mime(curl, config, part, &submimeno);
+ if(!ret) {
+ CODE2("curl_mime_subparts(part%d, mime%d);", mimeno, submimeno);
+ CODE1("mime%d = NULL;", submimeno); /* Avoid freeing in CLEAN. */
+ }
+ break;
- /* Are there any nul byte in data? */
- for(cp = data; *cp; cp++)
- ;
- size = (cp == data + part->datasize)? (curl_off_t) -1: part->datasize;
- Curl_safefree(escaped);
- escaped = c_escape(data, (size_t) part->datasize);
+ case TOOLMIME_DATA:
#ifdef CURL_DOES_CONVERSIONS
- Curl_safefree(data);
+ /* Data will be set in ASCII, thus issue a comment with clear text. */
+ escaped = c_escape(part->data, CURL_ZERO_TERMINATED);
+ NULL_CHECK(escaped);
+ CODE1("/* \"%s\" */", escaped);
+
+ /* Our data is always textual: convert it to ASCII. */
+ {
+ size_t size = strlen(part->data);
+ char *cp = malloc(size + 1);
+
+ NULL_CHECK(cp);
+ memcpy(cp, part->data, size + 1);
+ ret = convert_to_network(cp, size);
+ data = cp;
+ }
+#else
+ data = part->data;
#endif
- if(!escaped)
- return CURLE_OUT_OF_MEMORY;
- if(size >= 0)
- CODE3("curl_mime_data(part%d, \"%s\", %" CURL_FORMAT_CURL_OFF_T ");",
- *mimeno, escaped, size);
- else
- CODE2("curl_mime_data(part%d, \"%s\", CURL_ZERO_TERMINATED);",
- *mimeno, escaped);
- break;
- case MIMEKIND_MULTIPART:
- ret = libcurl_generate_mime(part->arg, &i);
- if(ret)
- goto nomem;
- CODE2("curl_mime_subparts(part%d, mime%d);", *mimeno, i);
- CODE1("mime%d = NULL;", i); /* Avoid freeing in CLEAN sequence. */
- break;
- default:
- /* Other cases not possible in this context. */
- break;
- }
+ if(!ret) {
+ Curl_safefree(escaped);
+ escaped = c_escape(data, CURL_ZERO_TERMINATED);
+ NULL_CHECK(escaped);
+ CODE2("curl_mime_data(part%d, \"%s\", CURL_ZERO_TERMINATED);",
+ mimeno, escaped);
+ }
+ break;
+
+ case TOOLMIME_FILE:
+ case TOOLMIME_FILEDATA:
+ escaped = c_escape(part->data, CURL_ZERO_TERMINATED);
+ NULL_CHECK(escaped);
+ CODE2("curl_mime_filedata(part%d, \"%s\");", mimeno, escaped);
+ if(part->kind == TOOLMIME_FILEDATA && !filename) {
+ CODE1("curl_mime_filename(part%d, NULL);", mimeno);
+ }
+ break;
+
+ case TOOLMIME_STDIN:
+ if(!filename)
+ filename = "-";
+ /* FALLTHROUGH */
+ case TOOLMIME_STDINDATA:
+ /* Can only be reading stdin in the current context. */
+ CODE1("curl_mime_data_cb(part%d, -1, (curl_read_callback) fread, \\",
+ mimeno);
+ CODE0(" (curl_seek_callback) fseek, NULL, stdin);");
+ break;
+ default:
+ /* Other cases not possible in this context. */
+ break;
+ }
- if(part->encoder) {
- Curl_safefree(escaped);
- escaped = c_escape(part->encoder->name, CURL_ZERO_TERMINATED);
- if(!escaped)
- return CURLE_OUT_OF_MEMORY;
- CODE2("curl_mime_encoder(part%d, \"%s\");", *mimeno, escaped);
- }
+ if(!ret && part->encoder) {
+ Curl_safefree(escaped);
+ escaped = c_escape(part->encoder, CURL_ZERO_TERMINATED);
+ NULL_CHECK(escaped);
+ CODE2("curl_mime_encoder(part%d, \"%s\");", mimeno, escaped);
+ }
- if(filename) {
- Curl_safefree(escaped);
- escaped = c_escape(filename, CURL_ZERO_TERMINATED);
- if(!escaped)
- return CURLE_OUT_OF_MEMORY;
- CODE2("curl_mime_filename(part%d, \"%s\");", *mimeno, escaped);
- }
+ if(!ret && filename) {
+ Curl_safefree(escaped);
+ escaped = c_escape(filename, CURL_ZERO_TERMINATED);
+ NULL_CHECK(escaped);
+ CODE2("curl_mime_filename(part%d, \"%s\");", mimeno, escaped);
+ }
- if(part->name) {
- Curl_safefree(escaped);
- escaped = c_escape(part->name, CURL_ZERO_TERMINATED);
- if(!escaped)
- return CURLE_OUT_OF_MEMORY;
- CODE2("curl_mime_name(part%d, \"%s\");", *mimeno, escaped);
- }
+ if(!ret && part->name) {
+ Curl_safefree(escaped);
+ escaped = c_escape(part->name, CURL_ZERO_TERMINATED);
+ NULL_CHECK(escaped);
+ CODE2("curl_mime_name(part%d, \"%s\");", mimeno, escaped);
+ }
- if(part->mimetype) {
- Curl_safefree(escaped);
- escaped = c_escape(part->mimetype, CURL_ZERO_TERMINATED);
- if(!escaped)
- return CURLE_OUT_OF_MEMORY;
- CODE2("curl_mime_type(part%d, \"%s\");", *mimeno, escaped);
- }
+ if(!ret && part->type) {
+ Curl_safefree(escaped);
+ escaped = c_escape(part->type, CURL_ZERO_TERMINATED);
+ NULL_CHECK(escaped);
+ CODE2("curl_mime_type(part%d, \"%s\");", mimeno, escaped);
+ }
- if(part->userheaders) {
- int ownership = part->flags & MIME_USERHEADERS_OWNER? 1: 0;
+ if(!ret && part->headers) {
+ int slistno;
- ret = libcurl_generate_slist(part->userheaders, &i);
- if(ret)
- goto nomem;
- CODE3("curl_mime_headers(part%d, slist%d, %d);",
- *mimeno, i, ownership);
- if(ownership)
- CODE1("slist%d = NULL;", i); /* Prevent freeing in CLEAN sequence. */
- }
+ ret = libcurl_generate_slist(part->headers, &slistno);
+ if(!ret) {
+ CODE2("curl_mime_headers(part%d, slist%d, 1);", mimeno, slistno);
+ CODE1("slist%d = NULL;", slistno); /* Prevent CLEANing. */
}
}
nomem:
+#ifdef CURL_DOES_CONVERSIONS
+ if(data)
+ free((char *) data);
+#endif
+
Curl_safefree(escaped);
return ret;
}
+/* Wrapper to generate source code for a mime structure. */
+static CURLcode libcurl_generate_mime(CURL *curl,
+ struct GlobalConfig *config,
+ tool_mime *toolmime,
+ int *mimeno)
+{
+ CURLcode ret = CURLE_OK;
+
+ /* May need several mime variables, so invent name. */
+ *mimeno = ++easysrc_mime_count;
+ DECL1("curl_mime *mime%d;", *mimeno);
+ DATA1("mime%d = NULL;", *mimeno);
+ CODE1("mime%d = curl_mime_init(hnd);", *mimeno);
+ CLEAN1("curl_mime_free(mime%d);", *mimeno);
+ CLEAN1("mime%d = NULL;", *mimeno);
+
+ if(toolmime->subparts) {
+ DECL1("curl_mimepart *part%d;", *mimeno);
+ ret = libcurl_generate_mime_part(curl, config,
+ toolmime->subparts, *mimeno);
+ }
+
+nomem:
+ return ret;
+}
+
/* setopt wrapper for CURLOPT_MIMEPOST */
CURLcode tool_setopt_mimepost(CURL *curl, struct GlobalConfig *config,
const char *name, CURLoption tag,
curl_mime *mimepost)
{
- CURLcode ret = CURLE_OK;
-
- ret = curl_easy_setopt(curl, tag, mimepost);
-
- if(config->libcurl && mimepost && !ret) {
- int i;
+ CURLcode ret = curl_easy_setopt(curl, tag, mimepost);
+ int mimeno = 0;
- ret = libcurl_generate_mime(mimepost, &i);
+ if(!ret && config->libcurl) {
+ ret = libcurl_generate_mime(curl, config,
+ config->current->mimeroot, &mimeno);
if(!ret)
- CODE2("curl_easy_setopt(hnd, %s, mime%d);", name, i);
+ CODE2("curl_easy_setopt(hnd, %s, mime%d);", name, mimeno);
}
nomem:
@@ -685,10 +700,7 @@ CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *config,
else {
if(escape) {
escaped = c_escape(value, CURL_ZERO_TERMINATED);
- if(!escaped) {
- ret = CURLE_OUT_OF_MEMORY;
- goto nomem;
- }
+ NULL_CHECK(escaped);
CODE2("curl_easy_setopt(hnd, %s, \"%s\");", name, escaped);
}
else
diff --git a/src/tool_setopt.h b/src/tool_setopt.h
index f8a52cd7..663041f6 100644
--- a/src/tool_setopt.h
+++ b/src/tool_setopt.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -23,6 +23,8 @@
***************************************************************************/
#include "tool_setup.h"
+#include "tool_formparse.h"
+
/*
* Macros used in operate()
*/
diff --git a/src/tool_urlglob.c b/src/tool_urlglob.c
index babae041..e9007b2b 100644
--- a/src/tool_urlglob.c
+++ b/src/tool_urlglob.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -603,7 +603,7 @@ CURLcode glob_match_url(char **result, char *filename, URLGlob *glob)
char *target;
size_t allocsize;
char numbuf[18];
- char *appendthis = NULL;
+ char *appendthis = (char *)"";
size_t appendlen = 0;
size_t stringlen = 0;
diff --git a/src/tool_version.h b/src/tool_version.h
index c1f85a5a..a42ccaf2 100644
--- a/src/tool_version.h
+++ b/src/tool_version.h
@@ -25,7 +25,7 @@
#define CURL_NAME "curl"
#define CURL_COPYRIGHT LIBCURL_COPYRIGHT
-#define CURL_VERSION "7.64.0"
+#define CURL_VERSION "7.64.1"
#define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
#define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
#define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
diff --git a/src/tool_xattr.c b/src/tool_xattr.c
index 730381ba..592d4a12 100644
--- a/src/tool_xattr.c
+++ b/src/tool_xattr.c
@@ -111,11 +111,13 @@ int fwrite_xattr(CURL *curl, int fd)
#elif defined(HAVE_FSETXATTR_5)
err = fsetxattr(fd, mappings[i].attr, value, strlen(value), 0);
#elif defined(__FreeBSD_version)
- err = extattr_set_fd(fd, EXTATTR_NAMESPACE_USER, mappings[i].attr,
- value, strlen(value));
- /* FreeBSD's extattr_set_fd returns the length of the extended
- attribute */
- err = err < 0 ? err : 0;
+ {
+ ssize_t rc = extattr_set_fd(fd, EXTATTR_NAMESPACE_USER,
+ mappings[i].attr, value, strlen(value));
+ /* FreeBSD's extattr_set_fd returns the length of the extended
+ attribute */
+ err = (rc < 0 ? -1 : 0);
+ }
#endif
if(freeptr)
curl_free(value);
diff --git a/tests/FILEFORMAT b/tests/FILEFORMAT
index 505c573c..85e73196 100644
--- a/tests/FILEFORMAT
+++ b/tests/FILEFORMAT
@@ -249,6 +249,7 @@ unittest
unix-sockets
WinSSL
ld_preload
+alt-svc
as well as each protocol that curl supports. A protocol only needs to be
specified if it is different from the server (useful when the server
diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc
index 3d13e3a2..2eca9c67 100644
--- a/tests/data/Makefile.inc
+++ b/tests/data/Makefile.inc
@@ -56,11 +56,11 @@ test289 test290 test291 test292 test293 test294 test295 test296 test297 \
test298 test299 test300 test301 test302 test303 test304 test305 test306 \
test307 test308 test309 test310 test311 test312 test313 test314 test315 \
test316 test317 test318 test319 test320 test321 test322 test323 test324 \
-test325 test326 test327 test328 test329 test330 \
+test325 test326 test327 test328 test329 test330 test331 \
\
test340 \
\
-test350 test351 test352 test353 test354 \
+test350 test351 test352 test353 test354 test355 test356 \
test393 test394 test395 \
\
test400 test401 test402 test403 test404 test405 test406 test407 test408 \
@@ -83,7 +83,7 @@ test617 test618 test619 test620 test621 test622 test623 test624 test625 \
test626 test627 test628 test629 test630 test631 test632 test633 test634 \
test635 test636 test637 test638 test639 test640 test641 test642 \
test643 test644 test645 test646 test647 test648 test649 test650 test651 \
-test652 test653 test654 test655 test656 test658 \
+test652 test653 test654 test655 test656 test658 test659 \
\
test700 test701 test702 test703 test704 test705 test706 test707 test708 \
test709 test710 test711 test712 test713 test714 test715 \
@@ -174,7 +174,7 @@ test1516 test1517 test1518 test1519 test1520 test1521 test1522 \
\
test1525 test1526 test1527 test1528 test1529 test1530 test1531 test1532 \
test1533 test1534 test1535 test1536 test1537 test1538 \
-test1540 \
+test1540 test1541 \
test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \
test1558 test1560 test1561 test1562 \
\
@@ -183,13 +183,13 @@ test1590 test1591 test1592 \
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
test1608 test1609 test1620 test1621 \
\
-test1650 test1651 test1652 test1653 \
+test1650 test1651 test1652 test1653 test1654 \
\
test1700 test1701 test1702 \
\
test1800 test1801 \
\
-test1900 test1901 test1902 test1903 test1904 \
+test1900 test1901 test1902 test1903 test1904 test1905 \
\
test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \
test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \
diff --git a/tests/data/test1026 b/tests/data/test1026
index bd5dc9c8..6bda7a43 100644
--- a/tests/data/test1026
+++ b/tests/data/test1026
@@ -28,7 +28,7 @@ curl --manual
# Search for these two sentinel lines in the manual output; if they are found,
# then chances are good the entire manual is there.
<postcheck>
-perl -e 'open(IN,$ARGV[0]); my $lines=grep(/(a\s*tool\s*to\s*transfer\s*data)|(mailing\s*lists\s*to\s*discuss\s*curl)/, <IN>); exit ($lines != 2); # Let this file pass an XML syntax check: </IN>' log/stdout1026
+perl -e 'open(IN,$ARGV[0]); my $lines=grep(/(curl\s*-\s*transfer\sa\s*URL)|(CONTRIBUTORS)/, <IN>); exit ($lines != 2); # Let this file pass an XML syntax check: </IN>' log/stdout1026
</postcheck>
</client>
diff --git a/tests/data/test1034 b/tests/data/test1034
index beab0d3c..b4ffc8a9 100644
--- a/tests/data/test1034
+++ b/tests/data/test1034
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
<testcase>
<info>
<keywords>
diff --git a/tests/data/test1046 b/tests/data/test1046
index bc4e5c29..e86e1329 100644
--- a/tests/data/test1046
+++ b/tests/data/test1046
@@ -40,7 +40,7 @@ HTTP-IPv6 GET with numeric localhost --interface
</command>
# --interface doesn't accept an address surrounded by [] so %CLIENT6IP is out
<precheck>
-perl -e "print 'Test requires default test server host address' if ( '%CLIENT6IP' ne '[::1]' );"
+perl -e "print 'Test requires default test client host address' if ( '%CLIENT6IP' ne '[::1]' );"
</precheck>
</client>
diff --git a/tests/data/test1048 b/tests/data/test1048
index f94ae58d..5ed267b5 100644
--- a/tests/data/test1048
+++ b/tests/data/test1048
@@ -48,7 +48,7 @@ FTP-IPv6 dir list PASV with localhost --interface
</command>
# --interface doesn't accept an address surrounded by [] so %CLIENT6IP is out
<precheck>
-perl -e "print 'Test requires default test server host address' if ( '%CLIENT6IP' ne '[::1]' );"
+perl -e "print 'Test requires default test client host address' if ( '%CLIENT6IP' ne '[::1]' );"
</precheck>
</client>
diff --git a/tests/data/test1050 b/tests/data/test1050
index a0e5beab..281936bf 100644
--- a/tests/data/test1050
+++ b/tests/data/test1050
@@ -43,7 +43,7 @@ FTP-IPv6 dir list, EPRT with specified IP
</command>
# --interface doesn't accept an address surrounded by [] so %CLIENT6IP is out
<precheck>
-perl -e "print 'Test requires default test server host address' if ( '%CLIENT6IP' ne '[::1]' );"
+perl -e "print 'Test requires default test client host address' if ( '%CLIENT6IP' ne '[::1]' );"
</precheck>
</client>
diff --git a/tests/data/test1082 b/tests/data/test1082
index d58dd25c..8e4078b2 100644
--- a/tests/data/test1082
+++ b/tests/data/test1082
@@ -35,7 +35,7 @@ HTTP GET with localhost --interface
http://%HOSTIP:%HTTPPORT/1082 --interface localhost
</command>
<precheck>
-perl -e "print 'Test requires default test server host address' if ( '%CLIENTIP' ne '127.0.0.1' );"
+perl -e "print 'Test requires default test client host address' if ( '%CLIENTIP' ne '127.0.0.1' );"
</precheck>
</client>
diff --git a/tests/data/test1083 b/tests/data/test1083
index e441278d..1b1db053 100644
--- a/tests/data/test1083
+++ b/tests/data/test1083
@@ -39,7 +39,7 @@ HTTP-IPv6 GET with ip6-localhost --interface
-g "http://%HOST6IP:%HTTP6PORT/1083" --interface ip6-localhost
</command>
<precheck>
-perl -e "if ('%CLIENT6IP' ne '[::1]') {print 'Test requires default test server host address';} else {exec './server/resolve --ipv6 ip6-localhost'; print 'Cannot run precheck resolve';}"
+perl -e "if ('%CLIENT6IP' ne '[::1]') {print 'Test requires default test client host address';} else {exec './server/resolve --ipv6 ip6-localhost'; print 'Cannot run precheck resolve';}"
</precheck>
</client>
diff --git a/tests/data/test1097 b/tests/data/test1097
index 7512a2e7..7eb7b5f3 100644
--- a/tests/data/test1097
+++ b/tests/data/test1097
@@ -60,7 +60,7 @@ http://test.a.galaxy.far.far.away.1097:%HTTPPORT/1097 --proxy http://%HOSTIP:%HT
<strip>
^User-Agent: curl/.*
</strip>
-<protocol>
+<protocol nonewline="yes">
CONNECT test.a.galaxy.far.far.away.1097:%HTTPPORT HTTP/1.1
Host: test.a.galaxy.far.far.away.1097:%HTTPPORT
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
@@ -71,9 +71,10 @@ POST /1097 HTTP/1.1
User-Agent: curl/7.19.5-CVS (i686-pc-linux-gnu) libcurl/7.19.5-CVS OpenSSL/0.9.8g zlib/1.2.3.3 c-ares/1.6.1-CVS libidn/1.12 libssh2/1.0.1_CVS
Host: test.a.galaxy.far.far.away.1097:%HTTPPORT
Accept: */*
-Content-Length: 0
+Content-Length: 11
Content-Type: application/x-www-form-urlencoded
+dummy=value
</protocol>
</verify>
diff --git a/tests/data/test1133 b/tests/data/test1133
index d71155ed..737f9d9e 100644
--- a/tests/data/test1133
+++ b/tests/data/test1133
@@ -29,7 +29,7 @@ HTTP RFC1867-type formposting with filename/data contains ',', ';', '"'
http://%HOSTIP:%HTTPPORT/we/want/1133 -F "file=@\"log/test1133,and;.txt\";type=mo/foo;filename=\"faker,and;.txt\"" -F 'file2=@"log/test1133,and;.txt"' -F 'file3=@"log/test1133,and;.txt";type=m/f,"log/test1133,and;.txt"' -F a="{\"field1\":\"value1\",\"field2\":\"value2\"}" -F 'b=" \\value1;type=\"whatever\" "; type=text/foo; charset=utf-8 ; filename=param_b'
</command>
# We create this file before the command is invoked!
-<file name=log/test1133,and;.txt>
+<file name="log/test1133,and;.txt">
foo bar
This is a bar foo
bar
diff --git a/tests/data/test1149 b/tests/data/test1149
index ae081a8a..f826391e 100644
--- a/tests/data/test1149
+++ b/tests/data/test1149
@@ -1,5 +1,5 @@
-# based on test1010
<testcase>
+# based on test1010
<info>
<keywords>
FTP
diff --git a/tests/data/test1156 b/tests/data/test1156
index fb483624..f78dc998 100644
--- a/tests/data/test1156
+++ b/tests/data/test1156
@@ -67,4 +67,5 @@ http://%HOSTIP:%HTTPPORT/want/1156
<errorcode>
0
</errorcode>
+</verify>
</testcase>
diff --git a/tests/data/test1160 b/tests/data/test1160
index 3fe689e9..63dd0a7a 100644
--- a/tests/data/test1160
+++ b/tests/data/test1160
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
<testcase>
<info>
<keywords>
diff --git a/tests/data/test1262 b/tests/data/test1262
index 4b08a2cf..ed526c09 100644
--- a/tests/data/test1262
+++ b/tests/data/test1262
@@ -1,5 +1,5 @@
-# similar to test 139 but with a reversed time condition
<testcase>
+# similar to test 139 but with a reversed time condition
<info>
<keywords>
FTP
diff --git a/tests/data/test1263 b/tests/data/test1263
index 7946916e..7462db4d 100644
--- a/tests/data/test1263
+++ b/tests/data/test1263
@@ -1,5 +1,5 @@
-# similar to test 1260
<testcase>
+# similar to test 1260
<info>
<keywords>
HTTP
diff --git a/tests/data/test1291 b/tests/data/test1291
index 12d65f3d..3f157518 100644
--- a/tests/data/test1291
+++ b/tests/data/test1291
@@ -1,7 +1,6 @@
+<testcase>
# This test case is primarily meant to verify that parsing and adding the 100K
# files is a swift operation.
-#
-<testcase>
<info>
<keywords>
HTTP
diff --git a/tests/data/test1307 b/tests/data/test1307
index 82ed3c07..c4f7ac72 100644
--- a/tests/data/test1307
+++ b/tests/data/test1307
@@ -15,6 +15,7 @@ none
</server>
<features>
unittest
+ftp
</features>
<name>
internal Curl_fnmatch() testing
diff --git a/tests/data/test1404 b/tests/data/test1404
index a00bf10a..a7b8cc82 100644
--- a/tests/data/test1404
+++ b/tests/data/test1404
@@ -94,6 +94,8 @@ s/(USERAGENT, \")[^\"]+/${1}stripped/
$_ = '' if /CURLOPT_SSL_VERIFYPEER/
$_ = '' if /CURLOPT_SSH_KNOWNHOSTS/
$_ = '' if /CURLOPT_HTTP_VERSION/
+# CURL_DOES_CONVERSION generates an extra comment.
+$_ = '' if /\/\* "value" \*\//
</stripfile>
<file name="log/test1404.c" mode="text">
/********* Sample code generated by the curl command line tool **********
diff --git a/tests/data/test1425 b/tests/data/test1425
index 0044c69d..ce9ba97f 100644
--- a/tests/data/test1425
+++ b/tests/data/test1425
Binary files differ
diff --git a/tests/data/test1426 b/tests/data/test1426
index dd6a8d11..851d8c3f 100644
--- a/tests/data/test1426
+++ b/tests/data/test1426
Binary files differ
diff --git a/tests/data/test1449 b/tests/data/test1449
index d30c13c6..1911b027 100644
--- a/tests/data/test1449
+++ b/tests/data/test1449
@@ -1,5 +1,5 @@
-# initially based on test110
<testcase>
+# initially based on test110
<info>
<keywords>
FTP
diff --git a/tests/data/test1455 b/tests/data/test1455
index 0b77dc4f..7276ea4e 100644
--- a/tests/data/test1455
+++ b/tests/data/test1455
@@ -9,7 +9,7 @@ HTTP GET
#
# Server-side
<reply name="1455">
-<data nocheck=yes>
+<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
diff --git a/tests/data/test1456 b/tests/data/test1456
index 07a6e7c0..00747361 100644
--- a/tests/data/test1456
+++ b/tests/data/test1456
@@ -9,7 +9,7 @@ IPv6
#
# Server-side
<reply>
-<data nocheck=yes>
+<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
@@ -21,7 +21,7 @@ Connection: close
Content-Type: text/html
Funny-head: yesyes
--foo-
+These data aren't actually sent to the client
</data>
</reply>
diff --git a/tests/data/test1457 b/tests/data/test1457
index aad6d43d..575748f4 100644
--- a/tests/data/test1457
+++ b/tests/data/test1457
@@ -29,7 +29,7 @@ http
Check if %{stderr} and %{stdout} switch between stdout and stderr.
</name>
<command>
-http://%HOSTIP:%HTTPPORT/1457 --write-out 'line1%{stderr}line2%{stdout}line3'
+http://%HOSTIP:%HTTPPORT/1457 --silent --write-out 'line1%{stderr}line2%{stdout}line3'
</command>
</client>
@@ -45,7 +45,6 @@ Content-Type: text/plain
testdata
line1line3
</stdout>
-#note: as of now <stderr> doesn't actually exist in runtests.pl
<stderr nonewline="yes">
line2
</stderr>
diff --git a/tests/data/test1506 b/tests/data/test1506
index 815fef92..7377dd6e 100644
--- a/tests/data/test1506
+++ b/tests/data/test1506
@@ -88,9 +88,13 @@ Accept: */*
* Connection #2 to host server3.example.com left intact
* Closing connection 0
* Connection #3 to host server4.example.com left intact
+* Closing connection
+* Closing connection
+* Closing connection
</file>
<stripfile>
$_ = '' if (($_ !~ /left intact/) && ($_ !~ /Closing connection/))
+s/^(\* Closing connection) [123](?=\r?\n)/$1/
</stripfile>
</verify>
</testcase>
diff --git a/tests/data/test1541 b/tests/data/test1541
new file mode 100644
index 00000000..e18bb47d
--- /dev/null
+++ b/tests/data/test1541
@@ -0,0 +1,34 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+multi-threaded
+connection-sharing
+</keywords>
+</info>
+
+# Server-side
+<reply>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+<tool>
+lib1541
+</tool>
+ <name>
+connection sharing using 67 parallel threads for 7 seconds
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+</verify>
+</testcase>
diff --git a/tests/data/test1561 b/tests/data/test1561
index ff448c95..69352fda 100644
--- a/tests/data/test1561
+++ b/tests/data/test1561
@@ -18,6 +18,15 @@ Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Set-Cookie: super=secret; domain=example.com; path=/1561; secure;
Set-Cookie: supersuper=secret; domain=example.com; path=/1561/login/; secure;
+Set-Cookie: __Secure-SID=12345; Domain=example.com
+Set-Cookie: __Secure-SID=12346; Secure; Domain=example.com
+Set-Cookie: supersupersuper=secret; __Secure-SID=12346; Secure; Domain=example.com
+Set-Cookie: __Host-SID=22345
+Set-Cookie: __Host-SID=22346; Secure
+Set-Cookie: __Host-SID=22347; Domain=example.com
+Set-Cookie: __Host-SID=22348; Domain=example.com; Path=/
+Set-Cookie: __Host-SID=22349; Secure; Domain=example.com; Path=/
+Set-Cookie: __Host-SID=12346; Secure; Path=/
Content-Length: 7
nomnom
@@ -33,6 +42,14 @@ Set-Cookie: public=yes; domain=example.com; path=/foo;
Set-Cookie: supersuper=secret; domain=example.com; path=/1561/login/en;
Set-Cookie: supersuper=secret; domain=example.com; path=/1561/login;
Set-Cookie: secureoverhttp=yes; domain=example.com; path=/1561; secure;
+Set-Cookie: __Secure-SID=22345; Domain=example.com
+Set-Cookie: __Secure-SID=22346; Secure; Domain=example.com
+Set-Cookie: __Host-SID=32345
+Set-Cookie: __Host-SID=32346; Secure
+Set-Cookie: __Host-SID=32347; Domain=example.com
+Set-Cookie: __Host-SID=32348; Domain=example.com; Path=/
+Set-Cookie: __Host-SID=32349; Secure; Domain=example.com; Path=/
+Set-Cookie: __Host-SID=32350; Secure; Path=/
Content-Length: 7
nomnom
@@ -77,6 +94,9 @@ Accept: */*
# This file was generated by libcurl! Edit at your own risk.
.example.com TRUE /foo FALSE 0 public yes
+www.example.com FALSE / TRUE 0 __Host-SID 12346
+.example.com TRUE / TRUE 0 supersupersuper secret
+.example.com TRUE / TRUE 0 __Secure-SID 12346
.example.com TRUE /1561/login/ TRUE 0 supersuper secret
#HttpOnly_.example.com TRUE /15 FALSE 0 super secret
</file>
diff --git a/tests/data/test1654 b/tests/data/test1654
new file mode 100644
index 00000000..175076c8
--- /dev/null
+++ b/tests/data/test1654
@@ -0,0 +1,58 @@
+<testcase>
+<info>
+<keywords>
+unittest
+alt-svc
+altsvc
+</keywords>
+</info>
+
+<client>
+<server>
+none
+</server>
+<features>
+unittest
+alt-svc
+</features>
+
+# This date is exactly "20190124 22:34:21" UTC
+<setenv>
+CURL_TIME=1548369261
+</setenv>
+<name>
+alt-svc
+</name>
+<command>
+log/1654
+</command>
+<tool>
+unit1654
+</tool>
+<file name="log/1654" mode="text">
+h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 1
+# a comment
+h2c example.com 443 h3 shiny.example.com 8443 "20291231 23:30:00" 0 1
+ h1 example.com 443 h3 shiny.example.com 8443 "20121231 00:00:01" 0 1
+ h3 example.com 443 h3 shiny.example.com 8443 "20131231 00:00:00" 0 1
+ # also a comment
+bad example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 1
+rubbish
+</file>
+</client>
+<verify>
+<file name="log/1654-out" mode="text">
+# Your alt-svc cache. https://curl.haxx.se/docs/alt-svc.html
+# This file was generated by libcurl! Edit at your own risk.
+h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 1
+h2c example.com 443 h3 shiny.example.com 8443 "20291231 23:30:00" 0 1
+h1 example.com 443 h3 shiny.example.com 8443 "20121231 00:00:01" 0 1
+h3 example.com 443 h3 shiny.example.com 8443 "20131231 00:00:00" 0 1
+h1 example.org 8080 h2 example.com 8080 "20190125 22:34:21" 0 0
+h1 2.example.org 8080 h3 2.example.org 8080 "20190125 22:34:21" 0 0
+h1 3.example.org 8080 h2 example.com 8080 "20190125 22:34:21" 0 0
+h1 3.example.org 8080 h3 yesyes.com 8080 "20190125 22:34:21" 0 0
+h2c example.org 80 h2 example.com 443 "20190124 22:36:21" 0 0
+</file>
+</verify>
+</testcase>
diff --git a/tests/data/test1905 b/tests/data/test1905
new file mode 100644
index 00000000..0459b10b
--- /dev/null
+++ b/tests/data/test1905
@@ -0,0 +1,60 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+cookies
+FLUSH
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Type: text/html
+Funny-head: yesyes swsclose
+Set-Cookie: foobar=name;
+Set-Cookie: secondcookie=present;
+
+</data>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+CURLOPT_COOKIELIST set to "FLUSH" of a shared cookie object
+ </name>
+<tool>
+lib1905
+</tool>
+<command>
+http://%HOSTIP:%HTTPPORT/we/want/1905
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /we/want/1905 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+
+</protocol>
+<file name="log/cookies1905" mode="text">
+# Netscape HTTP Cookie File
+# https://curl.haxx.se/docs/http-cookies.html
+# This file was generated by libcurl! Edit at your own risk.
+
+%HOSTIP FALSE /we/want/ FALSE 0 secondcookie present
+%HOSTIP FALSE /we/want/ FALSE 0 foobar name
+</file>
+</verify>
+</testcase>
diff --git a/tests/data/test2056 b/tests/data/test2056
index f00e2120..5d2584ee 100644
--- a/tests/data/test2056
+++ b/tests/data/test2056
@@ -8,17 +8,7 @@ HTTP Negotiate auth (stub krb5)
</info>
# Server-side
<reply>
-<!-- First request, expect 401 Negotiate -->
-<data>
-HTTP/1.1 401 Authorization Required
-Server: Microsoft-IIS/7.0
-Content-Type: text/html; charset=iso-8859-1
-WWW-Authenticate: Negotiate
-Content-Length: 13
-
-Not yet sir!
-</data>
-<!-- Second request, expect success in one shot -->
+<!-- First request, expect success in one shot -->
<data1>
HTTP/1.1 200 Things are fine in server land
Server: Microsoft-IIS/7.0
@@ -29,12 +19,6 @@ Content-Length: 15
Nice auth sir!
</data1>
<datacheck>
-HTTP/1.1 401 Authorization Required
-Server: Microsoft-IIS/7.0
-Content-Type: text/html; charset=iso-8859-1
-WWW-Authenticate: Negotiate
-Content-Length: 13
-
HTTP/1.1 200 Things are fine in server land
Server: Microsoft-IIS/7.0
Content-Type: text/html; charset=iso-8859-1
@@ -75,10 +59,6 @@ CURL_STUB_GSS_CREDS="KRB5_Alice"
<protocol>
GET /2056 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Accept: */*
-
-GET /2056 HTTP/1.1
-Host: %HOSTIP:%HTTPPORT
Authorization: Negotiate IktSQjVfQWxpY2UiOkhUVFBAMTI3LjAuMC4xOjE6QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQ==
Accept: */*
diff --git a/tests/data/test2057 b/tests/data/test2057
index 56250516..92d7824c 100644
--- a/tests/data/test2057
+++ b/tests/data/test2057
@@ -8,17 +8,7 @@ HTTP Negotiate auth (stub ntlm)
</info>
# Server-side
<reply>
-<!-- First request, expect 401 Negotiate -->
-<data>
-HTTP/1.1 401 Authorization Required
-Server: Microsoft-IIS/7.0
-Content-Type: text/html; charset=iso-8859-1
-WWW-Authenticate: Negotiate
-Content-Length: 13
-
-Not yet sir!
-</data>
-<!-- Second request, expect 401 (ntlm challenge) -->
+<!-- First request, expect 401 (ntlm challenge) -->
<data1>
HTTP/1.1 401 Authorization Required
Server: Microsoft-IIS/7.0
@@ -28,7 +18,7 @@ Content-Length: 19
Still not yet sir!
</data1>
-<!-- Third request, expect success -->
+<!-- Second request, expect success -->
<data2>
HTTP/1.1 200 Things are fine in server land
Server: Microsoft-IIS/7.0
@@ -42,12 +32,6 @@ Nice auth sir!
HTTP/1.1 401 Authorization Required
Server: Microsoft-IIS/7.0
Content-Type: text/html; charset=iso-8859-1
-WWW-Authenticate: Negotiate
-Content-Length: 13
-
-HTTP/1.1 401 Authorization Required
-Server: Microsoft-IIS/7.0
-Content-Type: text/html; charset=iso-8859-1
WWW-Authenticate: Negotiate Qw==
Content-Length: 19
@@ -91,10 +75,6 @@ CURL_STUB_GSS_CREDS="NTLM_Alice"
<protocol>
GET /2057 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
-Accept: */*
-
-GET /2057 HTTP/1.1
-Host: %HOSTIP:%HTTPPORT
Authorization: Negotiate Ik5UTE1fQWxpY2UiOkhUVFBAMTI3LjAuMC4xOjI6QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQ==
Accept: */*
diff --git a/tests/data/test327 b/tests/data/test327
index 1aa672d0..3a1c0716 100644
--- a/tests/data/test327
+++ b/tests/data/test327
@@ -31,7 +31,7 @@ Content-Type: text/html
Funny-head: yesyes swsclose
Set-Cookie: foobar=name; expires=Thu, 01 Jan 1970 00:00:00 GMT;
-</data>
+</data2>
</reply>
# Client-side
diff --git a/tests/data/test331 b/tests/data/test331
new file mode 100644
index 00000000..54b86d2a
--- /dev/null
+++ b/tests/data/test331
@@ -0,0 +1,65 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+cookies
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Type: text/html
+Content-Length: 4
+Set-Cookie: moo=yes;
+
+hej
+</data>
+<data2>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Type: text/html
+Content-Length: 0
+Funny-head: yesyes swsclose
+
+</data2>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP with cookie using host name 'moo'
+ </name>
+ <command>
+-x http://%HOSTIP:%HTTPPORT http://moo/we/want/331 -b none http://moo/we/want/3310002
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET http://moo/we/want/331 HTTP/1.1
+Host: moo
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+GET http://moo/we/want/3310002 HTTP/1.1
+Host: moo
+Accept: */*
+Proxy-Connection: Keep-Alive
+Cookie: moo=yes
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test355 b/tests/data/test355
new file mode 100644
index 00000000..e9c4cb28
--- /dev/null
+++ b/tests/data/test355
@@ -0,0 +1,57 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+Alt-Svc
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+alt-svc
+</features>
+<server>
+http
+</server>
+ <name>
+load Alt-Svc from file and use
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/355 --alt-svc ""
+</command>
+<file name="log/altsvc-355">
+h1 example.com 80 h1 %HOSTIP %HTTPPORT "20290222 22:19:28" 0 0
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /355 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test356 b/tests/data/test356
new file mode 100644
index 00000000..e2ac4860
--- /dev/null
+++ b/tests/data/test356
@@ -0,0 +1,70 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+Alt-Svc
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+Alt-Svc: h1="nowhere.foo:81"
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+debug
+alt-svc
+</features>
+<server>
+http
+</server>
+ <name>
+parse incoming Alt-Svc and save to file
+ </name>
+<setenv>
+# make debug-curl accept Alt-Svc over plain HTTP
+CURL_ALTSVC_HTTP="yeah"
+</setenv>
+ <command>
+http://%HOSTIP:%HTTPPORT/356 --alt-svc "log/altsvc-356"
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /356 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+
+</protocol>
+<stripfile>
+# strip out the (dynamic) expire date from the file so that the rest
+# matches
+s/\"([^\"]*)\"/TIMESTAMP/
+</stripfile>
+<file name="log/altsvc-356">
+# Your alt-svc cache. https://curl.haxx.se/docs/alt-svc.html
+# This file was generated by libcurl! Edit at your own risk.
+h1 %HOSTIP %HTTPPORT h1 nowhere.foo 81 TIMESTAMP 0 0
+</file>
+</verify>
+</testcase>
diff --git a/tests/data/test506 b/tests/data/test506
index 30f4aa9c..8f06e0e4 100644
--- a/tests/data/test506
+++ b/tests/data/test506
@@ -228,9 +228,6 @@ lock: share [Pigs in space]: 94
unlock: share [Pigs in space]: 95
GLOBAL_CLEANUP
</stdout>
-<stderr>
-http://%HOSTIP:%HTTPPORT/506
-</stderr>
<file name="log/jar506" mode="text">
# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
diff --git a/tests/data/test578 b/tests/data/test578
index abbe49a3..788ed72f 100644
--- a/tests/data/test578
+++ b/tests/data/test578
@@ -38,7 +38,7 @@ lib578
HTTP POST lower than MAX_INITIAL_POST_SIZE with progress callback
</name>
<command>
-http://%HOSTIP:%HTTPPORT/500 log/ip578
+http://%HOSTIP:%HTTPPORT/578 log/ip578
</command>
</client>
diff --git a/tests/data/test597 b/tests/data/test597
index 458bb645..3eb9ed8b 100644
--- a/tests/data/test597
+++ b/tests/data/test597
@@ -31,7 +31,6 @@ ftp://%HOSTIP:%FTPPORT
USER anonymous
PASS ftp@example.com
PWD
-QUIT
</protocol>
</verify>
</testcase>
diff --git a/tests/data/test658 b/tests/data/test658
index c75293c6..2ed6d642 100644
--- a/tests/data/test658
+++ b/tests/data/test658
@@ -3,6 +3,7 @@
<keywords>
HTTP
HTTP GET
+CURLOPT_CURLU
</keywords>
</info>
<reply>
@@ -29,7 +30,7 @@ http
lib658
</tool>
<name>
-HTTP GET
+Pass URL to libcurl with CURLOPT_CURLU
</name>
<command>
http://%HOSTIP:%HTTPPORT/658
@@ -45,6 +46,7 @@ GET /658 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
+</protocol>
</verify>
</testcase>
diff --git a/tests/data/test659 b/tests/data/test659
new file mode 100644
index 00000000..43e1aaf9
--- /dev/null
+++ b/tests/data/test659
@@ -0,0 +1,54 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+CURLOPT_CURLU
+proxy
+</keywords>
+</info>
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 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-
+</data>
+</reply>
+<client>
+<server>
+http
+</server>
+<tool>
+lib659
+</tool>
+<name>
+CURLOPT_CURLU without the path set - over proxy
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT
+</command>
+</client>
+
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET http://www.example.com:80/ HTTP/1.1
+Host: www.example.com
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+</protocol>
+</verify>
+
+</testcase>
diff --git a/tests/data/test8 b/tests/data/test8
index e6d0f500..2fc19006 100644
--- a/tests/data/test8
+++ b/tests/data/test8
@@ -46,7 +46,6 @@ Set-Cookie: trailingspace = removed; path=/we/want;
Set-Cookie: nocookie=yes; path=/WE;
Set-Cookie: blexp=yesyes; domain=%HOSTIP; domain=%HOSTIP; expiry=totally bad;
Set-Cookie: partialip=nono; domain=.0.0.1;
-Set-Cookie: chocolate=chip; domain=curl; path=/we/want;
</file>
<precheck>
diff --git a/tests/libtest/Makefile.am b/tests/libtest/Makefile.am
index 56c84a76..29ab0a9c 100644
--- a/tests/libtest/Makefile.am
+++ b/tests/libtest/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -131,8 +131,13 @@ endif
lib1521.c: $(top_srcdir)/tests/libtest/mk-lib1521.pl $(top_srcdir)/include/curl/curl.h
@PERL@ $(top_srcdir)/tests/libtest/mk-lib1521.pl < $(top_srcdir)/include/curl/curl.h > lib1521.c
+CHECKSRC = $(CS_$(V))
+CS_0 = @echo " RUN " $@;
+CS_1 =
+CS_ = $(CS_0)
+
checksrc:
- @PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.c
+ $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.c
if CURLDEBUG
# for debug builds, we scan the sources on all regular make invokes
diff --git a/tests/libtest/Makefile.inc b/tests/libtest/Makefile.inc
index 2e5236fa..e38f4810 100644
--- a/tests/libtest/Makefile.inc
+++ b/tests/libtest/Makefile.inc
@@ -22,18 +22,19 @@ noinst_PROGRAMS = chkhostname libauthretry libntlmconnect \
lib571 lib572 lib573 lib574 lib575 lib576 lib578 lib579 lib582 \
lib583 lib585 lib586 lib587 lib589 lib590 lib591 lib597 lib598 lib599 \
lib643 lib644 lib645 lib650 lib651 lib652 lib653 lib654 lib655 lib658 \
+ lib659 \
lib1156 \
lib1500 lib1501 lib1502 lib1503 lib1504 lib1505 lib1506 lib1507 lib1508 \
lib1509 lib1510 lib1511 lib1512 lib1513 lib1514 lib1515 lib1517 \
lib1518 lib1520 lib1521 lib1522 \
lib1525 lib1526 lib1527 lib1528 lib1529 lib1530 lib1531 lib1532 lib1533 \
lib1534 lib1535 lib1536 lib1537 lib1538 \
- lib1540 \
+ lib1540 lib1541 \
lib1550 lib1551 lib1552 lib1553 lib1554 lib1555 lib1556 lib1557 \
lib1558 \
lib1560 \
lib1591 lib1592 \
- lib1900 \
+ lib1900 lib1905 \
lib2033
chkdecimalpoint_SOURCES = chkdecimalpoint.c ../../lib/mprintf.c \
@@ -345,6 +346,10 @@ lib658_SOURCES = lib658.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib658_LDADD = $(TESTUTIL_LIBS)
lib658_CPPFLAGS = $(AM_CPPFLAGS)
+lib659_SOURCES = lib659.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib659_LDADD = $(TESTUTIL_LIBS)
+lib659_CPPFLAGS = $(AM_CPPFLAGS)
+
lib1500_SOURCES = lib1500.c $(SUPPORTFILES) $(TESTUTIL)
lib1500_LDADD = $(TESTUTIL_LIBS)
lib1500_CPPFLAGS = $(AM_CPPFLAGS)
@@ -488,6 +493,10 @@ lib1540_SOURCES = lib1540.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1540_LDADD = $(TESTUTIL_LIBS)
lib1540_CPPFLAGS = $(AM_CPPFLAGS)
+lib1541_SOURCES = lib1541.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1541_LDADD = $(TESTUTIL_LIBS)
+lib1541_CPPFLAGS = $(AM_CPPFLAGS)
+
lib1550_SOURCES = lib1550.c $(SUPPORTFILES)
lib1550_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1517
@@ -535,6 +544,10 @@ lib1900_SOURCES = lib1900.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1900_LDADD = $(TESTUTIL_LIBS)
lib1900_CPPFLAGS = $(AM_CPPFLAGS)
+lib1905_SOURCES = lib1905.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1905_LDADD = $(TESTUTIL_LIBS)
+lib1905_CPPFLAGS = $(AM_CPPFLAGS)
+
lib2033_SOURCES = libntlmconnect.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib2033_LDADD = $(TESTUTIL_LIBS)
lib2033_CPPFLAGS = $(AM_CPPFLAGS) -DUSE_PIPELINING
diff --git a/tests/libtest/first.c b/tests/libtest/first.c
index 405e6f84..d687bf27 100644
--- a/tests/libtest/first.c
+++ b/tests/libtest/first.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -96,7 +96,7 @@ static void memory_tracking_init(void)
env[CURL_MT_LOGFNAME_BUFSIZE-1] = '\0';
strcpy(fname, env);
curl_free(env);
- curl_memdebug(fname);
+ curl_dbg_memdebug(fname);
/* this weird stuff here is to make curl_free() get called
before curl_memdebug() as otherwise memory tracking will
log a free() without an alloc! */
@@ -107,7 +107,7 @@ static void memory_tracking_init(void)
char *endptr;
long num = strtol(env, &endptr, 10);
if((endptr != env) && (endptr == env + strlen(env)) && (num > 0))
- curl_memlimit(num);
+ curl_dbg_memlimit(num);
curl_free(env);
}
}
diff --git a/tests/libtest/lib1537.c b/tests/libtest/lib1537.c
index 9832c3a3..7c5dde04 100644
--- a/tests/libtest/lib1537.c
+++ b/tests/libtest/lib1537.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -30,7 +30,7 @@ int test(char *URL)
CURLcode res = CURLE_OK;
char *ptr = NULL;
int asize;
- int outlen;
+ int outlen = 0;
char *raw;
(void)URL; /* we don't use this */
diff --git a/tests/libtest/lib1541.c b/tests/libtest/lib1541.c
new file mode 100644
index 00000000..983a47e0
--- /dev/null
+++ b/tests/libtest/lib1541.c
@@ -0,0 +1,151 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include "test.h"
+
+#include "testutil.h"
+#include "warnless.h"
+#include "memdebug.h"
+
+#ifdef HAVE_PTHREAD_H
+#include <pthread.h>
+#include <time.h>
+
+/* number of threads to fire up in parallel */
+#define NUM_THREADS 67
+
+/* for how many seconds each thread will loop */
+#define RUN_FOR_SECONDS 7
+
+static pthread_mutex_t connlock;
+
+static size_t write_db(void *ptr, size_t size, size_t nmemb, void *data)
+{
+ /* not interested in the downloaded bytes, return the size */
+ (void)ptr; /* unused */
+ (void)data; /* unused */
+ return (size_t)(size * nmemb);
+}
+
+static void lock_cb(CURL *handle, curl_lock_data data,
+ curl_lock_access access, void *userptr)
+{
+ (void)access; /* unused */
+ (void)userptr; /* unused */
+ (void)handle; /* unused */
+ (void)data; /* unused */
+ pthread_mutex_lock(&connlock);
+}
+
+static void unlock_cb(CURL *handle, curl_lock_data data,
+ void *userptr)
+{
+ (void)userptr; /* unused */
+ (void)handle; /* unused */
+ (void)data; /* unused */
+ pthread_mutex_unlock(&connlock);
+}
+
+static void init_locks(void)
+{
+ pthread_mutex_init(&connlock, NULL);
+}
+
+static void kill_locks(void)
+{
+ pthread_mutex_destroy(&connlock);
+}
+
+struct initurl {
+ const char *url;
+ CURLSH *share;
+ int threadno;
+};
+
+static void *run_thread(void *ptr)
+{
+ struct initurl *u = (struct initurl *)ptr;
+ int i;
+ time_t end = time(NULL) + RUN_FOR_SECONDS;
+
+ for(i = 0; time(NULL) < end; i++) {
+ CURL *curl = curl_easy_init();
+ curl_easy_setopt(curl, CURLOPT_URL, u->url);
+ curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
+ curl_easy_setopt(curl, CURLOPT_SHARE, u->share);
+ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_db);
+ curl_easy_perform(curl); /* ignores error */
+ curl_easy_cleanup(curl);
+ fprintf(stderr, "Thread %d transfer %d\n", u->threadno, i);
+ }
+
+ return NULL;
+}
+
+int test(char *URL)
+{
+ pthread_t tid[NUM_THREADS];
+ int i;
+ int error;
+ CURLSH *share;
+ struct initurl url[NUM_THREADS];
+
+ /* Must initialize libcurl before any threads are started */
+ curl_global_init(CURL_GLOBAL_ALL);
+
+ share = curl_share_init();
+ curl_share_setopt(share, CURLSHOPT_LOCKFUNC, lock_cb);
+ curl_share_setopt(share, CURLSHOPT_UNLOCKFUNC, unlock_cb);
+ curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT);
+
+ init_locks();
+
+ for(i = 0; i< NUM_THREADS; i++) {
+ url[i].url = URL;
+ url[i].share = share;
+ url[i].threadno = i;
+ error = pthread_create(&tid[i], NULL, run_thread, &url[i]);
+ if(0 != error)
+ fprintf(stderr, "Couldn't run thread number %d, errno %d\n", i, error);
+ else
+ fprintf(stderr, "Thread %d, gets %s\n", i, URL);
+ }
+
+ /* now wait for all threads to terminate */
+ for(i = 0; i< NUM_THREADS; i++) {
+ error = pthread_join(tid[i], NULL);
+ fprintf(stderr, "Thread %d terminated\n", i);
+ }
+
+ kill_locks();
+
+ curl_share_cleanup(share);
+ curl_global_cleanup();
+ return 0;
+}
+
+#else /* without pthread, this test doesn't work */
+int test(char *URL)
+{
+ (void)URL;
+ return 0;
+}
+#endif
diff --git a/tests/libtest/lib1555.c b/tests/libtest/lib1555.c
index e4f2255a..f7193b5b 100644
--- a/tests/libtest/lib1555.c
+++ b/tests/libtest/lib1555.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2015, 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -36,14 +36,16 @@ static int progressCallback(void *arg,
double ulnow)
{
CURLcode res = 0;
+ char buffer[256];
+ size_t n = 0;
(void)arg;
(void)dltotal;
(void)dlnow;
(void)ultotal;
(void)ulnow;
- res = curl_easy_recv(curl, NULL, 0, NULL);
+ res = curl_easy_recv(curl, buffer, 256, &n);
printf("curl_easy_recv returned %d\n", res);
- res = curl_easy_send(curl, NULL, 0, NULL);
+ res = curl_easy_send(curl, buffer, n, &n);
printf("curl_easy_send returned %d\n", res);
return 1;
diff --git a/tests/libtest/lib1900.c b/tests/libtest/lib1900.c
index 1e10bdf3..2a70f8eb 100644
--- a/tests/libtest/lib1900.c
+++ b/tests/libtest/lib1900.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2013 - 2018, Linus Nielsen Feltzing, <linus@haxx.se>
+ * Copyright (C) 2013 - 2019, Linus Nielsen Feltzing, <linus@haxx.se>
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -138,7 +138,7 @@ int test(char *URL)
CURLM *m = NULL;
CURLMsg *msg; /* for picking up messages with the transfer status */
int msgs_left; /* how many messages are left */
- int running;
+ int running = 0;
int handlenum = 0;
struct timeval last_handle_add;
diff --git a/tests/libtest/lib1905.c b/tests/libtest/lib1905.c
new file mode 100644
index 00000000..b09c4f52
--- /dev/null
+++ b/tests/libtest/lib1905.c
@@ -0,0 +1,93 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include "test.h"
+
+#include "testutil.h"
+#include "warnless.h"
+#include "memdebug.h"
+
+int test(char *URL)
+{
+ CURLM *cm = NULL;
+ CURLSH *sh = NULL;
+ CURL *ch = NULL;
+ int unfinished;
+
+ cm = curl_multi_init();
+ if(!cm)
+ return 1;
+ sh = curl_share_init();
+ if(!sh)
+ goto cleanup;
+
+ curl_share_setopt(sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
+ curl_share_setopt(sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
+
+ ch = curl_easy_init();
+ if(!ch)
+ goto cleanup;
+
+ curl_easy_setopt(ch, CURLOPT_SHARE, sh);
+ curl_easy_setopt(ch, CURLOPT_URL, URL);
+ curl_easy_setopt(ch, CURLOPT_COOKIEFILE, "log/cookies1905");
+ curl_easy_setopt(ch, CURLOPT_COOKIEJAR, "log/cookies1905");
+
+ curl_multi_add_handle(cm, ch);
+
+ unfinished = 1;
+ while(unfinished) {
+ int MAX = 0;
+ long max_tout;
+ fd_set R, W, E;
+ struct timeval timeout;
+
+ FD_ZERO(&R);
+ FD_ZERO(&W);
+ FD_ZERO(&E);
+ curl_multi_perform(cm, &unfinished);
+
+ curl_multi_fdset(cm, &R, &W, &E, &MAX);
+ curl_multi_timeout(cm, &max_tout);
+
+ if(max_tout > 0) {
+ timeout.tv_sec = max_tout / 1000;
+ timeout.tv_usec = (max_tout % 1000) * 1000;
+ }
+ else {
+ timeout.tv_sec = 0;
+ timeout.tv_usec = 1000;
+ }
+
+ select(MAX + 1, &R, &W, &E, &timeout);
+ }
+
+ curl_easy_setopt(ch, CURLOPT_COOKIELIST, "FLUSH");
+ curl_easy_setopt(ch, CURLOPT_SHARE, NULL);
+
+ curl_multi_remove_handle(cm, ch);
+ cleanup:
+ curl_easy_cleanup(ch);
+ curl_share_cleanup(sh);
+ curl_multi_cleanup(cm);
+
+ return 0;
+}
diff --git a/tests/libtest/lib556.c b/tests/libtest/lib556.c
index 69b2c09d..0595000c 100644
--- a/tests/libtest/lib556.c
+++ b/tests/libtest/lib556.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -70,7 +70,7 @@ int test(char *URL)
"GET /556 HTTP/1.2\r\n"
"Host: ninja\r\n\r\n";
#endif
- size_t iolen;
+ size_t iolen = 0;
res = curl_easy_send(curl, request, strlen(request), &iolen);
diff --git a/tests/libtest/lib597.c b/tests/libtest/lib597.c
index d7f38c4c..e34505cd 100644
--- a/tests/libtest/lib597.c
+++ b/tests/libtest/lib597.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -32,20 +32,12 @@
/*
* Test case for below scenario:
* - Connect to an FTP server using CONNECT_ONLY option
- * - transfer some files with re-using the connection (omitted in test case)
- * - Disconnect from FTP server with sending QUIT command
*
* The test case originated for verifying CONNECT_ONLY option shall not
* block after protocol connect is done, but it returns the message
* with function curl_multi_info_read().
*/
-enum {
- CONNECT_ONLY_PHASE = 0,
- QUIT_PHASE,
- LAST_PHASE
-};
-
int test(char *URL)
{
CURL *easy = NULL;
@@ -53,7 +45,6 @@ int test(char *URL)
int res = 0;
int running;
int msgs_left;
- int phase;
CURLMsg *msg;
start_test_timing();
@@ -64,76 +55,65 @@ int test(char *URL)
multi_init(multi);
- for(phase = CONNECT_ONLY_PHASE; phase < LAST_PHASE; ++phase) {
- /* go verbose */
- easy_setopt(easy, CURLOPT_VERBOSE, 1L);
-
- /* specify target */
- easy_setopt(easy, CURLOPT_URL, URL);
-
- /* enable 'CONNECT_ONLY' option when in connect phase */
- if(phase == CONNECT_ONLY_PHASE)
- easy_setopt(easy, CURLOPT_CONNECT_ONLY, 1L);
-
- /* enable 'NOBODY' option to send 'QUIT' command in quit phase */
- if(phase == QUIT_PHASE) {
- easy_setopt(easy, CURLOPT_CONNECT_ONLY, 0L);
- easy_setopt(easy, CURLOPT_NOBODY, 1L);
- easy_setopt(easy, CURLOPT_FORBID_REUSE, 1L);
- }
+ /* go verbose */
+ easy_setopt(easy, CURLOPT_VERBOSE, 1L);
- multi_add_handle(multi, easy);
+ /* specify target */
+ easy_setopt(easy, CURLOPT_URL, URL);
- for(;;) {
- struct timeval interval;
- fd_set fdread;
- fd_set fdwrite;
- fd_set fdexcep;
- long timeout = -99;
- int maxfd = -99;
+ easy_setopt(easy, CURLOPT_CONNECT_ONLY, 1L);
- multi_perform(multi, &running);
+ multi_add_handle(multi, easy);
- abort_on_test_timeout();
+ for(;;) {
+ struct timeval interval;
+ fd_set fdread;
+ fd_set fdwrite;
+ fd_set fdexcep;
+ long timeout = -99;
+ int maxfd = -99;
- if(!running)
- break; /* done */
+ multi_perform(multi, &running);
- FD_ZERO(&fdread);
- FD_ZERO(&fdwrite);
- FD_ZERO(&fdexcep);
+ abort_on_test_timeout();
- multi_fdset(multi, &fdread, &fdwrite, &fdexcep, &maxfd);
+ if(!running)
+ break; /* done */
- /* At this point, maxfd is guaranteed to be greater or equal than -1. */
+ FD_ZERO(&fdread);
+ FD_ZERO(&fdwrite);
+ FD_ZERO(&fdexcep);
- multi_timeout(multi, &timeout);
+ multi_fdset(multi, &fdread, &fdwrite, &fdexcep, &maxfd);
- /* At this point, timeout is guaranteed to be greater or equal than
- -1. */
+ /* At this point, maxfd is guaranteed to be greater or equal than -1. */
- if(timeout != -1L) {
- int itimeout = (timeout > (long)INT_MAX) ? INT_MAX : (int)timeout;
- interval.tv_sec = itimeout/1000;
- interval.tv_usec = (itimeout%1000)*1000;
- }
- else {
- interval.tv_sec = TEST_HANG_TIMEOUT/1000 + 1;
- interval.tv_usec = 0;
- }
+ multi_timeout(multi, &timeout);
- select_test(maxfd + 1, &fdread, &fdwrite, &fdexcep, &interval);
+ /* At this point, timeout is guaranteed to be greater or equal than
+ -1. */
- abort_on_test_timeout();
+ if(timeout != -1L) {
+ int itimeout = (timeout > (long)INT_MAX) ? INT_MAX : (int)timeout;
+ interval.tv_sec = itimeout/1000;
+ interval.tv_usec = (itimeout%1000)*1000;
+ }
+ else {
+ interval.tv_sec = TEST_HANG_TIMEOUT/1000 + 1;
+ interval.tv_usec = 0;
}
- msg = curl_multi_info_read(multi, &msgs_left);
- if(msg)
- res = msg->data.result;
+ select_test(maxfd + 1, &fdread, &fdwrite, &fdexcep, &interval);
- multi_remove_handle(multi, easy);
+ abort_on_test_timeout();
}
+ msg = curl_multi_info_read(multi, &msgs_left);
+ if(msg)
+ res = msg->data.result;
+
+ multi_remove_handle(multi, easy);
+
test_cleanup:
/* undocumented cleanup sequence - type UA */
diff --git a/tests/libtest/lib659.c b/tests/libtest/lib659.c
new file mode 100644
index 00000000..b37e8e94
--- /dev/null
+++ b/tests/libtest/lib659.c
@@ -0,0 +1,75 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include "test.h"
+
+#include "testutil.h"
+#include "warnless.h"
+#include "memdebug.h"
+
+/*
+ * Get a single URL without select().
+ */
+
+int test(char *URL)
+{
+ CURL *handle = NULL;
+ CURLcode res = 0;
+ CURLU *urlp = NULL;
+
+ global_init(CURL_GLOBAL_ALL);
+ easy_init(handle);
+
+ urlp = curl_url();
+
+ if(!urlp) {
+ fprintf(stderr, "problem init URL api.");
+ goto test_cleanup;
+ }
+
+ /* this doesn't set the PATH part */
+ if(curl_url_set(urlp, CURLUPART_HOST, "www.example.com", 0) ||
+ curl_url_set(urlp, CURLUPART_SCHEME, "http", 0) ||
+ curl_url_set(urlp, CURLUPART_PORT, "80", 0)) {
+ fprintf(stderr, "problem setting CURLUPART");
+ goto test_cleanup;
+ }
+
+ easy_setopt(handle, CURLOPT_CURLU, urlp);
+ easy_setopt(handle, CURLOPT_VERBOSE, 1L);
+ easy_setopt(handle, CURLOPT_PROXY, URL);
+
+ res = curl_easy_perform(handle);
+
+ if(res) {
+ fprintf(stderr, "%s:%d curl_easy_perform() failed with code %d (%s)\n",
+ __FILE__, __LINE__, res, curl_easy_strerror(res));
+ goto test_cleanup;
+ }
+
+test_cleanup:
+
+ curl_url_cleanup(urlp);
+ curl_easy_cleanup(handle);
+ curl_global_cleanup();
+
+ return res;
+}
diff --git a/tests/libtest/stub_gssapi.c b/tests/libtest/stub_gssapi.c
index 377b7545..873e263d 100644
--- a/tests/libtest/stub_gssapi.c
+++ b/tests/libtest/stub_gssapi.c
@@ -44,15 +44,15 @@ enum min_err_code {
GSS_LAST
};
-const char *min_err_table[] = {
- "stub-gss: no error",
- "stub-gss: no memory",
- "stub-gss: invalid arguments",
- "stub-gss: invalid credentials",
- "stub-gss: invalid context",
- "stub-gss: server returned error",
- "stub-gss: cannot find a mechanism",
- NULL
+static const char *min_err_table[] = {
+ "stub-gss: no error",
+ "stub-gss: no memory",
+ "stub-gss: invalid arguments",
+ "stub-gss: invalid credentials",
+ "stub-gss: invalid context",
+ "stub-gss: server returned error",
+ "stub-gss: cannot find a mechanism",
+ NULL
};
struct gss_ctx_id_t_desc_struct {
diff --git a/tests/runtests.1 b/tests/runtests.1
index 472cdb5b..c43decc6 100644
--- a/tests/runtests.1
+++ b/tests/runtests.1
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH runtests.pl 1 "May 05, 2017" "Curl 7.64.0" "runtests"
+.TH runtests.pl 1 "May 05, 2017" "Curl 7.64.1" "runtests"
.SH NAME
runtests.pl \- run one or more test cases
diff --git a/tests/runtests.pl b/tests/runtests.pl
index 6c8b903c..1fb7354e 100755
--- a/tests/runtests.pl
+++ b/tests/runtests.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -233,6 +233,7 @@ my $has_crypto; # set if libcurl is built with cryptographic support
my $has_cares; # set if built with c-ares
my $has_threadedres;# set if built with threaded resolver
my $has_psl; # set if libcurl is built with PSL support
+my $has_altsvc; # set if libcurl is built with alt-svc support
my $has_ldpreload; # set if curl is built for systems supporting LD_PRELOAD
my $has_multissl; # set if curl is build with MultiSSL support
my $has_manual; # set if curl is built with built-in manual
@@ -257,7 +258,6 @@ my $has_sslpinning; # built with a TLS backend that supports pinning
my $has_shared = "unknown"; # built shared
my $resolver; # name of the resolver backend (for human presentation)
-my $ssllib; # name of the SSL library we use (for human presentation)
my $has_textaware; # set if running on a system that has a text mode concept
# on files. Windows for example
@@ -2688,55 +2688,45 @@ sub checksystem {
# Win32-style path.
$pwd = pathhelp::sys_native_current_path();
}
- if ($libcurl =~ /winssl/i) {
+ if ($libcurl =~ /(winssl|schannel)/i) {
$has_winssl=1;
$has_sslpinning=1;
- $ssllib="WinSSL";
}
elsif ($libcurl =~ /openssl/i) {
$has_openssl=1;
$has_sslpinning=1;
- $ssllib="OpenSSL";
}
elsif ($libcurl =~ /gnutls/i) {
$has_gnutls=1;
$has_sslpinning=1;
- $ssllib="GnuTLS";
}
elsif ($libcurl =~ /nss/i) {
$has_nss=1;
$has_sslpinning=1;
- $ssllib="NSS";
}
elsif ($libcurl =~ /(yassl|wolfssl)/i) {
$has_yassl=1;
$has_sslpinning=1;
- $ssllib="yassl";
}
elsif ($libcurl =~ /polarssl/i) {
$has_polarssl=1;
$has_sslpinning=1;
- $ssllib="polarssl";
}
elsif ($libcurl =~ /securetransport/i) {
$has_darwinssl=1;
$has_sslpinning=1;
- $ssllib="DarwinSSL";
}
elsif ($libcurl =~ /BoringSSL/i) {
$has_boringssl=1;
$has_sslpinning=1;
- $ssllib="BoringSSL";
}
elsif ($libcurl =~ /libressl/i) {
$has_libressl=1;
$has_sslpinning=1;
- $ssllib="libressl";
}
elsif ($libcurl =~ /mbedTLS/i) {
$has_mbedtls=1;
$has_sslpinning=1;
- $ssllib="mbedTLS";
}
if ($libcurl =~ /ares/i) {
$has_cares=1;
@@ -2744,7 +2734,6 @@ sub checksystem {
}
if ($libcurl =~ /mesalink/i) {
$has_mesalink=1;
- $ssllib="MesaLink";
}
}
elsif($_ =~ /^Protocols: (.*)/i) {
@@ -2850,6 +2839,10 @@ sub checksystem {
# PSL enabled
$has_psl=1;
}
+ if($feat =~ /alt-svc/i) {
+ # alt-svc enabled
+ $has_altsvc=1;
+ }
if($feat =~ /AsynchDNS/i) {
if(!$has_cares) {
# this means threaded resolver
@@ -3279,7 +3272,7 @@ sub singletest {
next;
}
}
- elsif($1 eq "WinSSL") {
+ elsif(($1 eq "WinSSL") || ($1 eq "Schannel")) {
if($has_winssl) {
next;
}
@@ -3399,6 +3392,11 @@ sub singletest {
next;
}
}
+ elsif($1 eq "alt-svc") {
+ if($has_altsvc) {
+ next;
+ }
+ }
elsif($1 eq "manual") {
if($has_manual) {
next;
@@ -3452,7 +3450,7 @@ sub singletest {
next;
}
}
- elsif($1 eq "WinSSL") {
+ elsif(($1 eq "WinSSL") || ($1 eq "Schannel")) {
if(!$has_winssl) {
next;
}
@@ -3746,6 +3744,7 @@ sub singletest {
# if this section exists, we verify that the stdout contained this:
my @validstdout = fixarray ( getpart("verify", "stdout") );
+ my @validstderr = fixarray ( getpart("verify", "stderr") );
# if this section exists, we verify upload
my @upload = getpart("verify", "upload");
@@ -4229,6 +4228,57 @@ sub singletest {
$ok .= "-"; # stdout not checked
}
+ if (@validstderr) {
+ # verify redirected stderr
+ my @actual = loadarray($STDERR);
+
+ # what parts to cut off from stderr
+ my @stripfile = getpart("verify", "stripfile");
+
+ foreach my $strip (@stripfile) {
+ chomp $strip;
+ my @newgen;
+ for(@actual) {
+ eval $strip;
+ if($_) {
+ push @newgen, $_;
+ }
+ }
+ # this is to get rid of array entries that vanished (zero
+ # length) because of replacements
+ @actual = @newgen;
+ }
+
+ # variable-replace in the stderr we have from the test case file
+ @validstderr = fixarray(@validstderr);
+
+ # get all attributes
+ my %hash = getpartattr("verify", "stderr");
+
+ # get the mode attribute
+ my $filemode=$hash{'mode'};
+ if($filemode && ($filemode eq "text") && $has_textaware) {
+ # text mode when running on windows: fix line endings
+ map s/\r\n/\n/g, @validstderr;
+ map s/\n/\r\n/g, @validstderr;
+ }
+
+ if($hash{'nonewline'}) {
+ # Yes, we must cut off the final newline from the final line
+ # of the protocol data
+ chomp($validstderr[$#validstderr]);
+ }
+
+ $res = compare($testnum, $testname, "stderr", \@actual, \@validstderr);
+ if($res) {
+ return 1;
+ }
+ $ok .= "r";
+ }
+ else {
+ $ok .= "-"; # stderr not checked
+ }
+
if(@protocol) {
# Verify the sent request
my @out = loadarray($SERVERIN);
diff --git a/tests/server/Makefile.am b/tests/server/Makefile.am
index f2067f2e..ef3303ec 100644
--- a/tests/server/Makefile.am
+++ b/tests/server/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -56,8 +56,13 @@ include Makefile.inc
EXTRA_DIST = base64.pl Makefile.inc CMakeLists.txt
+CHECKSRC = $(CS_$(V))
+CS_0 = @echo " RUN " $@;
+CS_1 =
+CS_ = $(CS_0)
+
checksrc:
- @PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.c
+ $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.c
if CURLDEBUG
# for debug builds, we scan the sources on all regular make invokes
diff --git a/tests/testcurl.1 b/tests/testcurl.1
index 5c9ddc27..755f5111 100644
--- a/tests/testcurl.1
+++ b/tests/testcurl.1
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH testcurl.pl 1 "October 22, 2016" "Curl 7.64.0" "testcurl"
+.TH testcurl.pl 1 "October 22, 2016" "Curl 7.64.1" "testcurl"
.SH NAME
testcurl.pl \- (automatically) test curl
diff --git a/tests/unit/Makefile.am b/tests/unit/Makefile.am
index fab82d2b..6996cad6 100644
--- a/tests/unit/Makefile.am
+++ b/tests/unit/Makefile.am
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -64,8 +64,13 @@ AM_CPPFLAGS += -DCURL_STATICLIB -DUNITTESTS
# Makefile.inc provides neat definitions
include Makefile.inc
+CHECKSRC = $(CS_$(V))
+CS_0 = @echo " RUN " $@;
+CS_1 =
+CS_ = $(CS_0)
+
checksrc:
- @PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.c
+ $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.c
if BUILD_UNITTESTS
noinst_PROGRAMS = $(UNITPROGS)
diff --git a/tests/unit/Makefile.inc b/tests/unit/Makefile.inc
index 82eaec79..f3cba1c2 100644
--- a/tests/unit/Makefile.inc
+++ b/tests/unit/Makefile.inc
@@ -11,7 +11,7 @@ UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307 \
unit1399 \
unit1600 unit1601 unit1602 unit1603 unit1604 unit1605 unit1606 unit1607 \
unit1608 unit1609 unit1620 unit1621 \
- unit1650 unit1651 unit1652 unit1653
+ unit1650 unit1651 unit1652 unit1653 unit1654
unit1300_SOURCES = unit1300.c $(UNITFILES)
unit1300_CPPFLAGS = $(AM_CPPFLAGS)
@@ -115,3 +115,6 @@ unit1652_CPPFLAGS = $(AM_CPPFLAGS)
unit1653_SOURCES = unit1653.c $(UNITFILES)
unit1653_CPPFLAGS = $(AM_CPPFLAGS)
+
+unit1654_SOURCES = unit1654.c $(UNITFILES)
+unit1654_CPPFLAGS = $(AM_CPPFLAGS)
diff --git a/tests/unit/unit1307.c b/tests/unit/unit1307.c
index d6664ff6..91e4606b 100644
--- a/tests/unit/unit1307.c
+++ b/tests/unit/unit1307.c
@@ -23,6 +23,17 @@
#include "curl_fnmatch.h"
+static CURLcode unit_setup(void)
+{
+ return CURLE_OK;
+}
+
+static void unit_stop(void)
+{
+}
+
+#ifndef CURL_DISABLE_FTP
+
/*
CURL_FNMATCH_MATCH 0
CURL_FNMATCH_NOMATCH 1
@@ -239,15 +250,6 @@ static const struct testcase tests[] = {
"a", NOMATCH|LINUX_FAIL}
};
-static CURLcode unit_setup(void)
-{
- return CURLE_OK;
-}
-
-static void unit_stop(void)
-{
-}
-
static const char *ret2name(int i)
{
switch(i) {
@@ -308,3 +310,14 @@ UNITTEST_START
}
}
UNITTEST_STOP
+
+#else
+
+UNITTEST_START
+{
+ /* nothing to do, just fail */
+ return 1;
+}
+UNITTEST_STOP
+
+#endif
diff --git a/tests/unit/unit1607.c b/tests/unit/unit1607.c
index 64b6371e..22c2e848 100644
--- a/tests/unit/unit1607.c
+++ b/tests/unit/unit1607.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -25,6 +25,10 @@
#include "connect.h"
#include "share.h"
+/* retrieves ip address and port from a sockaddr structure.
+ note it calls Curl_inet_ntop which sets errno on fail, not SOCKERRNO. */
+bool getaddressinfo(struct sockaddr *sa, char *addr, long *port);
+
#include "memdebug.h" /* LAST include file */
static struct Curl_easy *easy;
@@ -159,8 +163,8 @@ UNITTEST_START
if(tests[i].address[j] == &skip)
continue;
- if(addr && !Curl_getaddressinfo(addr->ai_addr,
- ipaddress, &port)) {
+ if(addr && !getaddressinfo(addr->ai_addr,
+ ipaddress, &port)) {
fprintf(stderr, "%s:%d tests[%d] failed. getaddressinfo failed.\n",
__FILE__, __LINE__, i);
problem = true;
diff --git a/tests/unit/unit1608.c b/tests/unit/unit1608.c
index 9ae474ba..4fc24704 100644
--- a/tests/unit/unit1608.c
+++ b/tests/unit/unit1608.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -23,6 +23,9 @@
#include "hostip.h"
+CURLcode Curl_shuffle_addr(struct Curl_easy *data,
+ Curl_addrinfo **addr);
+
#define NUM_ADDRS 8
static struct Curl_addrinfo addrs[NUM_ADDRS];
diff --git a/tests/unit/unit1609.c b/tests/unit/unit1609.c
index 2b99bee9..865c9e45 100644
--- a/tests/unit/unit1609.c
+++ b/tests/unit/unit1609.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -25,6 +25,10 @@
#include "connect.h"
#include "share.h"
+/* retrieves ip address and port from a sockaddr structure.
+ note it calls Curl_inet_ntop which sets errno on fail, not SOCKERRNO. */
+bool getaddressinfo(struct sockaddr *sa, char *addr, long *port);
+
#include "memdebug.h" /* LAST include file */
static struct Curl_easy *easy;
@@ -158,8 +162,8 @@ UNITTEST_START
if(!addr && !tests[i].address[j])
break;
- if(addr && !Curl_getaddressinfo(addr->ai_addr,
- ipaddress, &port)) {
+ if(addr && !getaddressinfo(addr->ai_addr,
+ ipaddress, &port)) {
fprintf(stderr, "%s:%d tests[%d] failed. getaddressinfo failed.\n",
__FILE__, __LINE__, i);
problem = true;
diff --git a/tests/unit/unit1650.c b/tests/unit/unit1650.c
index adc91236..cd6f519f 100644
--- a/tests/unit/unit1650.c
+++ b/tests/unit/unit1650.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2018 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -152,7 +152,7 @@ static struct dohresp resp[] = {
UNITTEST_START
{
- size_t size;
+ size_t size = 0;
unsigned char buffer[256];
size_t i;
unsigned char *p;
diff --git a/tests/unit/unit1651.c b/tests/unit/unit1651.c
index fcd3b54d..db3a0f35 100644
--- a/tests/unit/unit1651.c
+++ b/tests/unit/unit1651.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2018 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -352,6 +352,8 @@ UNITTEST_START
struct Curl_easy *data = curl_easy_init();
int i;
int byte;
+ if(!data)
+ return 2;
memset(&conn, 0, sizeof(struct connectdata));
/* this is a lot of assuming, but we expect the parsing function to only
diff --git a/tests/unit/unit1654.c b/tests/unit/unit1654.c
new file mode 100644
index 00000000..7532c6d6
--- /dev/null
+++ b/tests/unit/unit1654.c
@@ -0,0 +1,124 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include "curlcheck.h"
+
+#include "urldata.h"
+#include "altsvc.h"
+
+static CURLcode
+unit_setup(void)
+{
+ return CURLE_OK;
+}
+
+static void
+unit_stop(void)
+{
+ curl_global_cleanup();
+}
+
+#if defined(CURL_DISABLE_HTTP) || !defined(USE_ALTSVC)
+UNITTEST_START
+{
+ return 0; /* nothing to do when HTTP is disabled or alt-svc support is
+ missing */
+}
+UNITTEST_STOP
+#else
+UNITTEST_START
+{
+ char outname[256];
+ CURL *curl;
+ CURLcode result;
+ struct altsvcinfo *asi = Curl_altsvc_init();
+ if(!asi)
+ return 1;
+ result = Curl_altsvc_load(asi, arg);
+ if(result)
+ return result;
+ curl = curl_easy_init();
+ if(!curl)
+ goto fail;
+ fail_unless(asi->num == 4, "wrong number of entries");
+ msnprintf(outname, sizeof(outname), "%s-out", arg);
+
+ result = Curl_altsvc_parse(curl, asi, "h2=\"example.com:8080\"",
+ ALPN_h1, "example.org", 8080);
+ if(result) {
+ fprintf(stderr, "Curl_altsvc_parse() failed!\n");
+ unitfail++;
+ }
+ fail_unless(asi->num == 5, "wrong number of entries");
+
+ result = Curl_altsvc_parse(curl, asi, "h3=\":8080\"",
+ ALPN_h1, "2.example.org", 8080);
+ if(result) {
+ fprintf(stderr, "Curl_altsvc_parse(2) failed!\n");
+ unitfail++;
+ }
+ fail_unless(asi->num == 6, "wrong number of entries");
+
+ result = Curl_altsvc_parse(curl, asi,
+ "h2=\"example.com:8080\", h3=\"yesyes.com\"",
+ ALPN_h1, "3.example.org", 8080);
+ if(result) {
+ fprintf(stderr, "Curl_altsvc_parse(3) failed!\n");
+ unitfail++;
+ }
+ /* that one should make two entries */
+ fail_unless(asi->num == 8, "wrong number of entries");
+
+ result = Curl_altsvc_parse(curl, asi, "h2=\"example.com:443\"; ma = 120;",
+ ALPN_h2c, "example.org", 80);
+ if(result) {
+ fprintf(stderr, "Curl_altsvc_parse(4) failed!\n");
+ unitfail++;
+ }
+ fail_unless(asi->num == 9, "wrong number of entries");
+
+ result = Curl_altsvc_parse(curl, asi,
+ "h2=\":443\", h3=\":443\"; ma = 120; persist = 1",
+ ALPN_h1, "curl.haxx.se", 80);
+ if(result) {
+ fprintf(stderr, "Curl_altsvc_parse(5) failed!\n");
+ unitfail++;
+ }
+ fail_unless(asi->num == 11, "wrong number of entries");
+
+ /* clear that one again and decrease the counter */
+ result = Curl_altsvc_parse(curl, asi, "clear;",
+ ALPN_h1, "curl.haxx.se", 80);
+ if(result) {
+ fprintf(stderr, "Curl_altsvc_parse(6) failed!\n");
+ unitfail++;
+ }
+ fail_unless(asi->num == 9, "wrong number of entries");
+
+ Curl_altsvc_save(asi, outname);
+
+ curl_easy_cleanup(curl);
+ fail:
+ Curl_altsvc_cleanup(asi);
+ return unitfail;
+}
+UNITTEST_STOP
+#endif