h*N-I      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq0.10.0.1 Safe-Inferred http2-client,A set of errors as observed from the client. http2-clientWe received a TCP end-of-stream and there will be no further read-IOs possible on the connection.     Safe-Inferred rstuvwxyz Safe-Inferred@{ http2-clientHelper to carry around the HPACK encoder for outgoing header blocks..| http2-client,Couples client and server settings together. http2-client(A Handler for exceptional circumstances. http2-client8An exception thrown when the server sends a GoAwayFrame. http2-clientA fallback handler for frames. http2-client1Default FallBackFrameHandler that ignores frames. http2-clientDefault GoAwayHandler throws a  in the current thread.A probably sharper handler if you want to abruptly stop any operation is to get the ThreadId& of the main client thread and using  .There's an inherent race condition when receiving a GoAway frame because the server will likely close the connection which will lead to TCP errors as well.}~{| Safe-Inferred"%&  http2-client(Function to send raw data to the server. http2-clientFunction to block reading a datachunk of a given size from the server. An empty chunk when asking for a length larger than 0 means the underlying network session is closed. A compliant HTP2 server should have sent a GOAWAY before such an event occurs. http2-client-Initiates a RawHttp2Connection with a server.>The current code does not handle closing the connexion, yikes.  http2-client9Initiates a RawHttp2Connection with a unix domain socket.>The current code does not handle closing the connexion, yikes.! http2-clientInitiates a RawHttp2Connection with a server over a connected socket.The current code does not handle closing the connexion, yikes. Since 0.8.0.2 http2-clientServer's hostname. http2-clientServer's port to connect to. http2-clientTLS parameters. The 7 hook is overwritten to always return ["h2", "h2-17"].  http2-clientPath to the socket. http2-clientTLS parameters. The 7 hook is overwritten to always return ["h2", "h2-17"].! http2-clientA connected socket. http2-clientTLS parameters. The 7 hook is overwritten to always return ["h2", "h2-17"]. ! ! Safe-Inferred"%& ' http2-clientSends a frame to the server. The first argument is a FrameFlags modifier (e.g., to sed the end-of-stream flag).+ http2-clientStarts a new client stream., http2-clientReceives frames from a server.- http2-client0Function that will close the network connection.. http2-client)Closes the Http2FrameConnection abruptly./ http2-clientCreates a client stream.0 http2-clientSends a frame to the server.1 http2-client1Sends multiple back-to-back frames to the server.2 http2-client)Waits for the next frame from the server.3 http2-clientAdds framing around a .4 http2-clientCreates a new )4 to a given host for a frame-to-frame communication.)*+,-43"#$%&'(/012.)*+,-43"#$%&'(/012. Safe-Inferred"%&@1 http2-clientA function able to split a header block into multiple fragments.5 http2-client-Type synonym for functions that modify flags.Typical FlagSetter for library users are HTTP2.setEndHeader when sending headers HTTP2.setEndStream to signal that there the client is not willing to send more data. We might use Endo in the future.6 http2-client6Handler upon receiving a PUSH_PROMISE from the server.The functions for 7= are similar to those used in ''. But callers shall not use 9 to initialize the PUSH_PROMISE stream. Rather, callers should  waitHeaders or ; to reject the PUSH_PROMISE.The StreamId corresponds to the parent stream as PUSH_PROMISEs are tied to a client-initiated stream. Longer term we may move passing this handler to the I instead of f (as it is for now).7 http2-clientRecord holding functions one can call while in an HTTP2 client stream.9 http2-client=Starts the stream with HTTP headers. Flags modifier can use  if no data is required passed the last block of headers. Usually, this is the only call needed to build an U.: http2-client$Changes the PRIORITY of this stream.; http2-clientResets this stream with a RST frame. You should not use this stream past this call.< http2-client'Waits for the next event on the stream.= http2-clientSends a DATA frame chunk. You can use send empty frames with only headers modifiers to close streams. This function is oblivious to framing and hence does not respect the RFC if sending large blocks. Use g to chunk and send naively according to server's preferences. This function can be useful if you intend to handle the framing yourself.? http2-client2Opaque proof that a client stream was initialized.*This type is only useful to force calling 9 in U and contains no information.@ http2-client,Set of Async threads running an Http2Client.This asyncs are linked to the thread where the Http2Client is created. If you modify this structure to add more Async, please also modify ` accordingly.B http2-client+Async waiting for the initial settings ACK.C http2-clientAsync responsible for ingesting all frames, increasing the maximum-received streamID and starting the frame dispatch. See dispatchFrames. http2-client"Immediately closes the connection. http2-clientStops receiving frames.D http2-clientRecord holding functions one can call while in an HTTP2 client session.F http2-clientSend a PING, the payload size must be exactly eight bytes. Returns an IO to wait for a ping reply. No timeout is provided. Only the first call to this IO will return if a reply is received. Hence we recommend wrapping this IO in an Async (e.g., with race (threadDelay timeout).)G http2-clientSends a SETTINGS. Returns an IO to wait for a settings reply. No timeout is provided. Only the first call to this IO will return if a reply is received. Hence we recommend wrapping this IO in an Async (e.g., with race (threadDelay timeout).)H http2-clientSends a GOAWAY.I http2-clientSpawns new streams. See R.J http2-clientSimple getter for the [" for the whole client connection.K http2-clientSimple getter for the W" for the whole client connection.L http2-client&Returns a function to split a payload.M http2-client Asynchronous operations threads.N http2-clientImmediately stop processing incoming frames and closes the network connection.O http2-clientWhether or not the client library believes the server will reject the new stream. The Int content corresponds to the number of streams that should end before accepting more streams. A reason this number can be more than zero is that servers can change (and hence reduce) the advertised number of allowed  at any time.R http2-client=Type alias for callback-based functions starting new streams.*The callback a user must provide takes an 7 and returns a S-. This construction may seem wrong because a S contains an initialization and a handler functions. The explanation for this twistedness is as follows: in HTTP2 stream-ids must be monotonically increasing, if we want to support multi-threaded clients we need to serialize access to a critical region of the code when clients send HEADERS+CONTINUATIONs frames. Passing the 7 object as part of the callback avoids leaking the implementation of the critical region, meanwhile, the S delimits this critical region.S http2-clientDefines a client stream.7Please red the doc for this record fields and then see R.U http2-clientFunction to initialize a new client stream. This function runs in a exclusive-access section of the code and may prevent other threads to initialize new streams. Hence, you should ensure this IO does not wait for long periods of time.V http2-clientFunction to operate with the stream. IncomingFlowControl currently is credited on your behalf as soon as a DATA frame arrives (and before you handle it with  _waitData.). However we do not send WINDOW_UPDATE with _. This design may change in the future to give more leeway to library users.W http2-client,Receives credit-based flow-control or block.There is no way to observe the total amount of credit and receive/withdraw are atomic hence this object is thread-safe. However we plan to propose an STM-based API to allow withdrawing atomically from both the connection and a per-stream W objects at a same time. Without such atomicity one must ensure consumers do not exhaust the connection credit before taking the per-stream credit (else they might prevent others sending data without taking any).Longer term we plan to hide outgoing-flow-control increment/decrement altogether because exception between withdrawing credit and sending DATA could mean lost credit (and hence hanging streams).Y http2-client9Add credit (using a hidden mutable reference underneath).Z http2-clientWait until we can take credit from stash. The returned value correspond to the amount that could be withdrawn, which is min(current, wanted). A caller should withdraw credit to send DATA chunks and put back any unused credit with _receiveCredit.[ http2-client!Offers credit-based flow-control.Any mutable changes are atomic and hence work as intended in a multithreaded setup.The design of the flow-control mechanism is subject to changes. One important thing to keep in mind with current implementation is that both the connection and streams are credited with ] as soon as DATA frames arrive, hence no-need to account for the DATA frames (but you can account for delay-bandwidth product for instance).] http2-clientAdd credit (using a hidden mutable reference underneath). This function only does accounting, the IO only does mutable changes. See _.^ http2-client1Consumes some credit and returns the credit left._ http2-clientSends a WINDOW_UPDATE frame crediting it with the whole amount credited since the last _updateWindow call. The boolean tells whether an update was actually sent or not. A reason for not sending an update is if there is no credit in the flow-control system.` http2-client4Links all client's asyncs to current thread using:  link someUnderlyingAsync  .a http2-client Synonym of H. ,https://github.com/http2/http2-spec/pull/366b http2-clientSends HTTP trailers.5Trailers should be the last thing sent over a stream.c http2-client=Starts a new stream (i.e., one HTTP request + server-pushes).%You will typically call the returned R immediately to define what you want to do with the Http2Stream.  _  -$(withHttp2Stream myClient $ stream - StreamDefinition _ _)Please refer to R and S for more.d http2-client-Sends the HTTP2+HTTP headers of your chosing.You must add HTTP2 pseudo-headers first, followed by your typical HTTP headers. This function makes no verification of this ordering/exhaustinevess.HTTP2 pseudo-headers replace the HTTP verb + parsed url as follows: ":method" such as GET0, ":scheme" such as "https", ":path" such as "blog7post/1234?foo=bar", ":authority" such as "haskell.org"#Note that we currently enforce the  but this design choice may change in the future. Hence, we recommend you use  as well.e http2-client3Starts a new Http2Client around a frame connection.%This function is slightly safer than startHttp2Client because it uses   instead of  ; plus this function calls ` to make sure that a network error kills the controlling thread. However, this with-pattern takes the control of the thread and can be annoying at times.:This function tries to finalize the client with a call to N, a second call to N will trigger an IOException because the Handle representing the TCP connection will be closed.f http2-client3Starts a new Http2Client around a frame connection.You may want to `? for a proper and automated cleanup of the underlying threads. http2-clientWe currently need a specific step in the main loop for crediting streams because a client user may programmatically reset and stop listening for a stream and stop calling waitData (which credits streams).TODO: modify the ; function to wait and credit all the remaining data that could have been sent in flight http2-clientSplit headers like so that no payload exceeds server's maxFrameSize. http2-client,Breaks a ByteString into fixed-sized chunks. . fixedSizeChunks 2 "hello" = ["he", "ll", "o"]g http2-clientSends data, chunked according to the server's preferred chunk size.This function does not respect HTTP2 flow-control and send chunks sequentially. Hence, you should first ensure that you have enough flow-control credit (with Z) or risk a connection failure. When you call _withdrawCredit keep in mind that HTTP2 has flow control at the stream and at the connection level. If you use `http2-client` in a multithreaded conext, you should avoid starving the connection-level flow-control.>If you want to send bytestrings that fit in RAM, you can use - as a function that implements flow-control.This function does not send frames back-to-back, that is, other frames may get interleaved between two chunks (for instance, to give priority to other streams, although no priority queue exists in `http2-client` so far).Please refer to = and Z as well. http2-client0Runs an action, rethrowing exception 50ms later.In a context where asynchronous are likely to occur this function gives a chance to other threads to do some work before Async linking reaps them all.In particular, servers are likely to close their TCP connection soon after sending a GoAwayFrame and we want to give a better chance to clients to observe the GoAwayFrame in their handlers to distinguish GoAwayFrames followed by TCP disconnection and plain TCP resets. As a result, this function is mostly used to delay dispatchFrames. A more involved and future design will be to inline the various loop-processes for dispatchFrames and GoAwayHandlers in a same thread (e.g., using pipe/conduit to retain composability).e http2-clientA frame connection. http2-client-The buffersize for the Network.HPACK encoder. http2-client-The buffersize for the Network.HPACK decoder. http2-client.Initial SETTINGS that are sent as first frame. http2-client2Actions to run when the remote sends a GoAwayFrame http2-clientActions to run when a control frame is not yet handled in http2-client lib (e.g., PRIORITY frames). http2-clientActions to run on the client.f http2-clientA frame connection. http2-client-The buffersize for the Network.HPACK encoder. http2-client-The buffersize for the Network.HPACK decoder. http2-client.Initial SETTINGS that are sent as first frame. http2-client2Actions to run when the remote sends a GoAwayFrame http2-clientActions to run when a control frame is not yet handled in http2-client lib (e.g., PRIORITY frames). http2-client#Action to get the base window size. http2-client/Action to send the window update to the server. http2-clientControl dispatching reference. http2-client1Action to get the instantaneous base window-size.efcdbgDENFGHIJKLM6STUVROPQ?789:;<=>[\]^_WXYZ`5@ABCa)*+,-"#$%&'(243/01.  efcdbgDENFGHIJKLM6STUVROPQ?789:;<=>[\]^_WXYZ`5@ABCa Safe-Inferred"Ii http2-clientAn HTTP2 response, once fully received, is made of headers and a payload.j http2-clientResult containing the unpacked headers and all frames received in on a stream. See i and p to get a higher-level utility.k http2-client Result for a m.l http2-client1Opaque type to express an action which timed out.m http2-client Performs a m and waits for a reply up to a given timeout (in microseconds).n http2-client$Uploads a whole HTTP body at a time.This function should be called at most once per stream. This function closes the stream with HTTP2.setEndStream chunk at the end. If you want to post data (e.g., streamed chunks) your way to avoid loading a whole bytestring in RAM, please study the source code of this function first.This function sends one chunk at a time respecting by preference: - server's flow control desires - server's chunking preferenceUploading an empty bytestring will send a single DATA frame with setEndStream and no payload.o http2-client#Wait for a stream until completion.This function is fine if you don't want to consume results in chunks. See p to collect the complicated j into a simpler i.p http2-clientConverts a StreamResult to a StramResponse, stopping at the first error using the `Either HTTP2.ErrorCode` monad.m http2-clientclient connection http2-clienttimeout in microseconds http2-client.8-bytes message to uniquely identify the replyn http2-client HTTP body. http2-client+Flag modifier for the last DATA frame sent. http2-client The client. http2-clientThe outgoing flow control for this client. (We might remove this argument in the future because we can get it from the previous argument. http2-clientThe corresponding HTTP stream. http2-client!The flow control for this stream.o http2-clientThe connection. http2-clientThe stream to wait on. This stream must be part of the connection. http2-clientIncoming flow control for the stream.nopjimlknopjimlk !"#$%&'()*+,-../012234567899:;;<=>>?@ABCDEFGHIJKKLMNOPQRSSTUVVWXYZ[\]^5__`abbcdeefghhijklmnopqrstuvwxyz{|}~,http2-client-0.10.0.1-BnJ6w8ZqZh5IlFypgld6V5Network.HTTP2.Client.ExceptionsNetwork.HTTP2.Client"Network.HTTP2.Client.RawConnection$Network.HTTP2.Client.FrameConnectionNetwork.HTTP2.Client.Helpers http2-clientNetwork.HTTP2.Client.ChannelsNetwork.HTTP2.Client.DispatchControl.Exception.BasethrowToControl.Concurrent.Async withAsyncasyncuploadtransformers-0.6.1.0Control.Monad.Trans.ExceptExceptT runExceptT mtl-2.3.1Control.Monad.Error.Class throwErrorControl.Monad.Trans.Classlift&network-3.1.4.0-7dPsDoIpaQ07bH9XbwL3DgNetwork.Socket.Types PortNumberNetwork.Socket.InfoHostName tls-2.0.2-EOnXQ63jBmADUgBya698nyNetwork.TLS.Parameters ClientParams ClientErrorEarlyEndOfStreamClientIO runClientIO$fExceptionClientError$fShowClientError$fOrdClientError$fEqClientError StreamEventStreamHeadersEventStreamPushPromiseEventStreamDataEventStreamErrorEvent GoAwayHandlerRemoteSentGoAwayFrameFallBackFrameHandlerignoreFallbackHandlerdefaultGoAwayHandlerRawHttp2Connection_sendRaw_nextRaw_closenewRawHttp2ConnectionnewRawHttp2ConnectionUnixnewRawHttp2ConnectionSocketHttp2ServerStream_nextHeaderAndFrameHttp2FrameClientStream _sendFrames _getStreamIdHttp2FrameConnection_makeFrameClientStream _serverStream_closeConnectioncloseConnectionmakeFrameClientStreamsendOnesendBackToBacknextframeHttp2RawConnectionnewHttp2FrameConnection FlagSetterPushPromiseHandler Http2Stream_headers_prio_rst _waitEvent_sendDataChunk_handlePushPromise StreamThreadHttp2ClientAsyncs_waitSettingsAsync_incomingFramesAsync Http2Client_ping _settings_goaway _startStream_incomingFlowControl_outgoingFlowControl_payloadSplitter_asyncsTooMuchConcurrency_getStreamRoomNeeded StreamStarterStreamDefinition _initStream _handleStreamOutgoingFlowControl_receiveCredit_withdrawCreditIncomingFlowControl _addCredit_consumeCredit _updateWindow linkAsyncs_gtfotrailerswithHttp2StreamheadersrunHttp2ClientnewHttp2ClientsendData$fShowTooMuchConcurrencyStreamResponse StreamResult PingReplyTimedOutping waitStreamfromStreamResult$fShowTimedOut FramesChan hasStreamId hasTypeId whenFrame whenFrameElsebaseControl.Concurrent.ChanChan+lifted-base-0.2.3.12-6cz5RO0xHrF3SYFOXl8lzaControl.Concurrent.Chan.LiftednewChan writeChanreadChanHpackEncoderContextConnectionSettingsDispatchStream_dispatchStreamReadEvents_dispatchStreamId DispatchHPACK_dispatchHPACKDynamicTable_applySettings_encodeHeadersDispatchControl_dispatchControlOnFallback_dispatchControlOnGoAway_dispatchControlAckSettings_dispatchControlAckPing_dispatchControlHpackEncoder"_dispatchControlConnectionSettings#_dispatchControlSetSettingsHandlers_dispatchControlPingHandlersSetSettingsHandler PingHandler_serverSettings_clientSettingsDispatch_dispatchCurrentStreams_dispatchMaxStreamId StreamState_streamStateFSMState_streamStateEvents_streamStateWindowUpdatesChanStreamFSMStateHalfClosedLocalReservedRemoteIdleOpenHalfClosedRemoteClosed DispatchChan newDispatchIOreadMaxReceivedStreamIdIOregisterStreamlookupStreamStatecloseLocalStreamcloseRemoteStreamcloseReleaseStreamdefaultConnectionSettingsnewPingHandlernotifyPingHandler waitPingReplynewSetSettingsHandlernotifySetSettingsHandlerwaitSetSettingsReplyregisterPingHandlerlookupAndReleasePingHandlerregisterSetSettingsHandler"lookupAndReleaseSetSettingsHandlernewDispatchControlIOnewHpackEncoderContext readSettingsmodifySettingsnewDispatchHPACKIOnewDispatchStreamIO onSuggestALPNPayloadSplitter"http2-4.2.2-A1Ub39YwPLwGG8j4uhlPtCNetwork.HTTP2.Frame.Types setEndStream _initClose _initStopmaxConcurrentStreams setEndHeadercreditDataFramesStepsettingsPayloadSplitterfixedSizeChunksdelayExceptionnewIncomingFlowControlnewOutgoingFlowControl